Summary: | Gabble plugin crashes on windows | ||
---|---|---|---|
Product: | Ytstenut | Reporter: | Siraj Razick <siraj> |
Component: | plugins | Assignee: | Siraj Razick <siraj> |
Status: | RESOLVED FIXED | QA Contact: | |
Severity: | normal | ||
Priority: | medium | CC: | olli.salli |
Version: | unspecified | Keywords: | patch |
Hardware: | Other | ||
OS: | Windows (All) | ||
URL: | http://cgit.collabora.com/git/user/siraj/ytstenut-plugins.git/log/?h=api-update | ||
Whiteboard: | review+ | ||
i915 platform: | i915 features: | ||
Bug Depends on: | 44331, 44649, 46245 | ||
Bug Blocks: |
Description
Siraj Razick
2012-01-04 02:45:29 UTC
It crashes because the current plugin architecture of Gabble has some constraints which can't be fulfilled on Windows... stay tuned. More details in bug 44331, comment 6 onwards. Siraj, after you've been able to make a gabble build disabling the asserts checking for those constraints, could you file logs and backtraces for any further crashes you encounter here, please? Anyway, properly fixing this will likely require changes to both Gabble's plugin architecture and the ytstenut plugin (And other plugins, which still want to stay compatible with newer gabble versions, if the changes are backwards incompatible as it looks like they must be!). So adding dep. Siraj, please add a branch which ports the Ytstenut plugin to the new windows-feasible Gabble plugin API when that gets finalized. We'll review it here as per Ytstenut review procedure. Siraj's patch is at URL. It basically does * change all references to GabbleConnection to the GabblePluginConnection interface, as needed per bug 44649 changes (straightforward) * change the source tag used for create_sidecar to the symbol from the plugin, and rename the function to have a _async suffix, as per bug 44331 changes Observations: in ytstenut_plugin_create_sidecar_async: /* sic: all plugins share {salut,gabble}_plugin_create_sidecar_finish() so we * need to use the same source tag. */ As of this patch, this is no longer true for gabble... so please move to salut section, and only mention salut in this comment, so you remember to take it out completely when the similar change is done for the salut part. + + g_simple_async_result_is_valid ((GAsyncResult*) result, G_OBJECT (plugin), NULL); + Calling _is_valid and ignoring the return value doesn't make sense. This function is usually used to check/assert that a GSimpleAsyncResult received in a callback is what it should be; here, however you've just created it, and set it finished, thus you already know it's valid. So what are you actually trying to do? --- a/plugin-base/ytstenut.c +++ b/plugin-base/ytstenut.c @@ -19,6 +19,7 @@ */ #include "config.h" +#include <stdio.h> Why? - iface->create_sidecar = ytstenut_plugin_create_sidecar; + iface->create_sidecar_async = ytstenut_plugin_create_sidecar_async; + iface->create_sidecar_finish = ytstenut_plugin_create_sidecar_finish; This will break the Salut build until you've made similar changes to Salut plugin API as you now did for Gabble. So, please #ifdef this, so that the old method in vtable is still used for Salut. URL actually pointed to outdated patch, now correct one for the branch branch updated with review comments and other fixes. once all the patches are merged.. this patch will produce .dll files on windows gush sorry wrong bug Looks like all the issues are fixed. Thanks! Has been merged a long time ago... |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.