Revert "inputselector: Protect g_object_notify() with the object's mutex"
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Mon, 25 Jan 2010 11:21:34 +0000 (12:21 +0100)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Fri, 31 Dec 2010 00:54:04 +0000 (00:54 +0000)
This reverts commit 7e067615ffb5614f068f7753c10dde99afe49c3c, it's causing
deadlocks with playbin2.

plugins/elements/gstinputselector.c

index 8168ba4..e5dc12b 100644 (file)
@@ -357,10 +357,10 @@ gst_selector_pad_event (GstPad * pad, GstEvent * event)
    * is enabled */
   if (pad != active_sinkpad && !sel->select_all)
     forward = FALSE;
+  GST_INPUT_SELECTOR_UNLOCK (sel);
 
   if (prev_active_sinkpad != active_sinkpad && pad == active_sinkpad)
     g_object_notify (G_OBJECT (sel), "active-pad");
-  GST_INPUT_SELECTOR_UNLOCK (sel);
 
   switch (GST_EVENT_TYPE (event)) {
     case GST_EVENT_FLUSH_START:
@@ -422,9 +422,7 @@ gst_selector_pad_event (GstPad * pad, GstEvent * event)
       GST_DEBUG_OBJECT (pad, "received tags %" GST_PTR_FORMAT, newtags);
       GST_OBJECT_UNLOCK (selpad);
 
-      GST_INPUT_SELECTOR_LOCK (sel);
       g_object_notify (G_OBJECT (selpad), "tags");
-      GST_INPUT_SELECTOR_UNLOCK (sel);
       break;
     }
     case GST_EVENT_EOS:
@@ -504,11 +502,11 @@ gst_selector_pad_bufferalloc (GstPad * pad, guint64 offset,
   if (pad != active_sinkpad)
     goto not_active;
 
+  GST_INPUT_SELECTOR_UNLOCK (sel);
+
   if (prev_active_sinkpad != active_sinkpad && pad == active_sinkpad)
     g_object_notify (G_OBJECT (sel), "active-pad");
 
-  GST_INPUT_SELECTOR_UNLOCK (sel);
-
   result = gst_pad_alloc_buffer (sel->srcpad, offset, size, caps, buf);
 
 done:
@@ -626,10 +624,10 @@ gst_selector_pad_chain (GstPad * pad, GstBuffer * buf)
 
     selpad->segment_pending = FALSE;
   }
+  GST_INPUT_SELECTOR_UNLOCK (sel);
 
   if (prev_active_sinkpad != active_sinkpad && pad == active_sinkpad)
     g_object_notify (G_OBJECT (sel), "active-pad");
-  GST_INPUT_SELECTOR_UNLOCK (sel);
 
   if (close_event)
     gst_pad_push_event (sel->srcpad, close_event);
@@ -1413,10 +1411,10 @@ gst_input_selector_switch (GstInputSelector * self, GstPad * pad,
 
   self->blocked = FALSE;
   GST_INPUT_SELECTOR_BROADCAST (self);
+  GST_INPUT_SELECTOR_UNLOCK (self);
 
   if (changed)
     g_object_notify (G_OBJECT (self), "active-pad");
-  GST_INPUT_SELECTOR_UNLOCK (self);
 }
 
 static gboolean