gstplugin: load the gst-python plugin loader with G_MODULE_BIND_LAZY.
authorAlessandro Decina <alessandro.decina@collabora.co.uk>
Thu, 26 Aug 2010 11:46:34 +0000 (13:46 +0200)
committerAlessandro Decina <alessandro.decina@collabora.co.uk>
Thu, 26 Aug 2010 12:32:40 +0000 (14:32 +0200)
gst/gstplugin.c

index 599af83..c16e624 100644 (file)
@@ -711,6 +711,7 @@ gst_plugin_load_file (const gchar * filename, GError ** error)
   GStatBuf file_status;
   GstRegistry *registry;
   gboolean new_plugin = TRUE;
+  GModuleFlags flags;
 
   g_return_val_if_fail (filename != NULL, NULL);
 
@@ -749,7 +750,16 @@ gst_plugin_load_file (const gchar * filename, GError ** error)
     goto return_error;
   }
 
-  module = g_module_open (filename, G_MODULE_BIND_LOCAL);
+  flags = G_MODULE_BIND_LOCAL;
+  /* libgstpython.so is the gst-python plugin loader. It needs to be loaded with
+   * G_MODULE_BIND_LAZY.
+   *
+   * Ideally there should be a generic way for plugins to specify that they
+   * need to be loaded with _LAZY.
+   * */
+  if (g_strstr_len (filename, strlen (filename), "libgstpython"))
+    flags |= G_MODULE_BIND_LAZY;
+  module = g_module_open (filename, flags);
   if (module == NULL) {
     GST_CAT_WARNING (GST_CAT_PLUGIN_LOADING, "module_open failed: %s",
         g_module_error ());