gst/gstplugin.c (gst_plugin_load_file): gst/gstregistry.c (GST_CAT_DEFAULT, gst_regis...
authorStefan Kost <ensonic@users.sourceforge.net>
Fri, 11 May 2007 08:29:10 +0000 (08:29 +0000)
committerStefan Kost <ensonic@users.sourceforge.net>
Fri, 11 May 2007 08:29:10 +0000 (08:29 +0000)
Original commit message from CVS:
* gst/gstplugin.c (gst_plugin_load_file):
* gst/gstregistry.c (GST_CAT_DEFAULT,
gst_registry_lookup_feature_locked, gst_registry_scan_path_level):
Print a g_warning if there was an error when loading a plugins during
registry scan. The shuld help beginners starting with gst-plugin
template.

ChangeLog
gst/gstplugin.c
gst/gstregistry.c

index 6b36fb5f6f736396760ce32bc60cdee563c04659..2a0686f49269e8b442a5ba02f19acb302ae8705b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2007-05-11  Stefan Kost  <ensonic@users.sf.net>
+
+       * gst/gstplugin.c (gst_plugin_load_file):
+       * gst/gstregistry.c (GST_CAT_DEFAULT,
+         gst_registry_lookup_feature_locked, gst_registry_scan_path_level):
+         Print a g_warning if there was an error when loading a plugins during
+         registry scan. The shuld help beginners starting with gst-plugin
+         template.
+
 2007-05-10  Wim Taymans  <wim@fluendo.com>
 
        * plugins/elements/gstqueue.c: (gst_queue_class_init),
index 1a77940d17f1d184a696e505a605a2874f402087..f75ea504a922390c70a1ddb3a766ca4e75efe9b6 100644 (file)
@@ -413,7 +413,8 @@ gst_plugin_load_file (const gchar * filename, GError ** error)
     GST_CAT_WARNING (GST_CAT_PLUGIN_LOADING, "module_open failed: %s",
         g_module_error ());
     g_set_error (error,
-        GST_PLUGIN_ERROR, GST_PLUGIN_ERROR_MODULE, "Opening module failed");
+        GST_PLUGIN_ERROR, GST_PLUGIN_ERROR_MODULE, "Opening module failed: %s",
+        g_module_error ());
     goto return_error;
   }
 
index a94d109969bba9b4333d88442d5f34e9564e586b..7846799e3d009233a33a4b3b63473087359132e0 100644 (file)
@@ -28,7 +28,7 @@
  *
  * One registry holds the metadata of a set of plugins.
  * All registries build the #GstRegistryPool.
- * 
+ *
  * <emphasis role="bold">Design:</emphasis>
  *
  * The #GstRegistry object is a list of plugins and some functions for dealing
 
 #define GST_CAT_DEFAULT GST_CAT_REGISTRY
 
-/* the one instance of the default registry and the mutex protecting the 
+/* the one instance of the default registry and the mutex protecting the
  * variable. */
 static GStaticMutex _gst_registry_mutex = G_STATIC_MUTEX_INIT;
 static GstRegistry *_gst_registry_default = NULL;
@@ -718,7 +718,7 @@ gst_registry_lookup_feature_locked (GstRegistry * registry, const char *name)
  * @name: a #GstPluginFeature name
  *
  * Find a #GstPluginFeature with @name in @registry.
- * 
+ *
  * Returns: a #GstPluginFeature with its refcount incremented, use
  * gst_object_unref() after usage.
  *
@@ -803,6 +803,7 @@ gst_registry_scan_path_level (GstRegistry * registry, const gchar * path,
   GstPlugin *plugin;
   GstPlugin *newplugin;
   gboolean changed = FALSE;
+  GError *err = NULL;
 
   dir = g_dir_open (path, 0, NULL);
   if (!dir)
@@ -867,7 +868,7 @@ gst_registry_scan_path_level (GstRegistry * registry, const gchar * path,
         GST_LOG_OBJECT (registry, "marking plugin %p as registered as %s",
             plugin, filename);
         plugin->registered = TRUE;
-        /* Update the file path on which we've seen this cached plugin 
+        /* Update the file path on which we've seen this cached plugin
          * to ensure the registry cache will reflect up to date information */
         if (strcmp (plugin->filename, filename) != 0) {
           g_free (plugin->filename);
@@ -881,12 +882,19 @@ gst_registry_scan_path_level (GstRegistry * registry, const gchar * path,
             G_GINT64_FORMAT, plugin->file_mtime, file_status.st_mtime,
             (gint64) plugin->file_size, (gint64) file_status.st_size);
         gst_registry_remove_plugin (gst_registry_get_default (), plugin);
-        newplugin = gst_plugin_load_file (filename, NULL);
+        newplugin = gst_plugin_load_file (filename, &err);
         if (newplugin) {
           GST_DEBUG_OBJECT (registry, "marking new plugin %p as registered",
               newplugin);
           newplugin->registered = TRUE;
           gst_object_unref (newplugin);
+        } else {
+          if (err) {
+            /* Report error to user, and free error */
+            g_warning ("Failed to load plugin: %s", err->message);
+            g_error_free (err);
+            err = NULL;
+          }
         }
         changed = TRUE;
       }
@@ -894,11 +902,18 @@ gst_registry_scan_path_level (GstRegistry * registry, const gchar * path,
 
     } else {
       GST_DEBUG_OBJECT (registry, "file %s not yet in registry", filename);
-      newplugin = gst_plugin_load_file (filename, NULL);
+      newplugin = gst_plugin_load_file (filename, &err);
       if (newplugin) {
         newplugin->registered = TRUE;
         gst_object_unref (newplugin);
         changed = TRUE;
+      } else {
+        if (err) {
+          /* Report error to user, and free error */
+          g_warning ("Failed to load plugin: %s", err->message);
+          g_error_free (err);
+          err = NULL;
+        }
       }
     }