appsrc: always take mutex before object lock
authorWim Taymans <wim.taymans@collabora.co.uk>
Wed, 6 Feb 2013 09:00:27 +0000 (10:00 +0100)
committerWim Taymans <wim.taymans@collabora.co.uk>
Wed, 6 Feb 2013 09:00:27 +0000 (10:00 +0100)
The locking order is to first take the appsrc mutex and then the
object lock.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=693224

gst-libs/gst/app/gstappsrc.c

index 87cef19..0f8f7ae 100644 (file)
@@ -1107,6 +1107,8 @@ gst_app_src_set_caps (GstAppSrc * appsrc, const GstCaps * caps)
 
   priv = appsrc->priv;
 
+  g_mutex_lock (&priv->mutex);
+
   GST_OBJECT_LOCK (appsrc);
   GST_DEBUG_OBJECT (appsrc, "setting caps to %" GST_PTR_FORMAT, caps);
   if ((old = priv->caps) != caps) {
@@ -1116,11 +1118,11 @@ gst_app_src_set_caps (GstAppSrc * appsrc, const GstCaps * caps)
       priv->caps = NULL;
     if (old)
       gst_caps_unref (old);
-    g_mutex_lock (&priv->mutex);
     priv->new_caps = TRUE;
-    g_mutex_unlock (&priv->mutex);
   }
   GST_OBJECT_UNLOCK (appsrc);
+
+  g_mutex_unlock (&priv->mutex);
 }
 
 /**