Revert "bin: Hold the state lock while removing elements from a bin"
[platform/upstream/gstreamer.git] / gst / gstplugin.c
index df47e47..129f60c 100644 (file)
@@ -109,13 +109,12 @@ static void gst_plugin_desc_copy (GstPluginDesc * dest,
 
 static void gst_plugin_ext_dep_free (GstPluginDep * dep);
 
-G_DEFINE_TYPE (GstPlugin, gst_plugin, GST_TYPE_OBJECT);
+G_DEFINE_TYPE_WITH_PRIVATE (GstPlugin, gst_plugin, GST_TYPE_OBJECT);
 
 static void
 gst_plugin_init (GstPlugin * plugin)
 {
-  plugin->priv =
-      G_TYPE_INSTANCE_GET_PRIVATE (plugin, GST_TYPE_PLUGIN, GstPluginPrivate);
+  plugin->priv = gst_plugin_get_instance_private (plugin);
 }
 
 static void
@@ -154,8 +153,6 @@ static void
 gst_plugin_class_init (GstPluginClass * klass)
 {
   G_OBJECT_CLASS (klass)->finalize = gst_plugin_finalize;
-
-  g_type_class_add_private (klass, sizeof (GstPluginPrivate));
 }
 
 GQuark
@@ -667,7 +664,7 @@ static GMutex gst_plugin_loading_mutex;
 
 /**
  * gst_plugin_load_file:
- * @filename: the plugin filename to load
+ * @filename: (type filename): the plugin filename to load
  * @error: pointer to a %NULL-valued GError
  *
  * Loads the given plugin and refs it.  Caller needs to unref after use.
@@ -708,7 +705,7 @@ extract_symname (const char *filename)
   if (dot)
     len = dot - bname - prefix_len;
   else
-    len = g_utf8_strlen (bname + prefix_len, -1);
+    len = strlen (bname + prefix_len);
 
   name = g_strndup (bname + prefix_len, len);
   g_free (bname);
@@ -971,7 +968,7 @@ gst_plugin_get_description (GstPlugin * plugin)
  *
  * get the filename of the plugin
  *
- * Returns: the filename of the plugin
+ * Returns: (type filename): the filename of the plugin
  */
 const gchar *
 gst_plugin_get_filename (GstPlugin * plugin)
@@ -1309,7 +1306,8 @@ gst_plugin_find_feature_by_name (GstPlugin * plugin, const gchar * name)
  *
  * Load the named plugin. Refs the plugin.
  *
- * Returns: (transfer full): a reference to a loaded plugin, or %NULL on error.
+ * Returns: (transfer full) (nullable): a reference to a loaded plugin, or
+ * %NULL on error.
  */
 GstPlugin *
 gst_plugin_load_by_name (const gchar * name)
@@ -1352,7 +1350,8 @@ gst_plugin_load_by_name (const gchar * name)
  * plugin = loaded_plugin;
  * ]|
  *
- * Returns: (transfer full): a reference to a loaded plugin, or %NULL on error.
+ * Returns: (transfer full) (nullable): a reference to a loaded plugin, or
+ * %NULL on error.
  */
 GstPlugin *
 gst_plugin_load (GstPlugin * plugin)
@@ -1361,7 +1360,7 @@ gst_plugin_load (GstPlugin * plugin)
   GstPlugin *newplugin;
 
   if (gst_plugin_is_loaded (plugin)) {
-    return plugin;
+    return gst_object_ref (plugin);
   }
 
   if (!(newplugin = gst_plugin_load_file (plugin->filename, &error)))
@@ -1812,15 +1811,15 @@ gst_plugin_ext_dep_equals (GstPluginDep * dep, const gchar ** env_vars,
 /**
  * gst_plugin_add_dependency:
  * @plugin: a #GstPlugin
- * @env_vars: (allow-none): %NULL-terminated array of environment variables affecting the
+ * @env_vars: (allow-none) (array zero-terminated=1): %NULL-terminated array of environment variables affecting the
  *     feature set of the plugin (e.g. an environment variable containing
  *     paths where to look for additional modules/plugins of a library),
  *     or %NULL. Environment variable names may be followed by a path component
  *      which will be added to the content of the environment variable, e.g.
  *      "HOME/.mystuff/plugins".
- * @paths: (allow-none): %NULL-terminated array of directories/paths where dependent files
+ * @paths: (allow-none) (array zero-terminated=1): %NULL-terminated array of directories/paths where dependent files
  *     may be, or %NULL.
- * @names: (allow-none): %NULL-terminated array of file names (or file name suffixes,
+ * @names: (allow-none) (array zero-terminated=1): %NULL-terminated array of file names (or file name suffixes,
  *     depending on @flags) to be used in combination with the paths from
  *     @paths and/or the paths extracted from the environment variables in
  *     @env_vars, or %NULL.