gst/multifile/gstmultifilesink.c: Add a fixme comment.
authorStefan Kost <ensonic@users.sourceforge.net>
Thu, 7 Feb 2008 13:48:20 +0000 (13:48 +0000)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Fri, 31 Dec 2010 00:51:13 +0000 (00:51 +0000)
Original commit message from CVS:
* gst/multifile/gstmultifilesink.c:
Add a fixme comment.
* plugins/elements/gstoutputselector.c:
Fix same leak as in input-selector.
* tests/icles/output-selector-test.c:
Improve the test.

plugins/elements/gstoutputselector.c
tests/icles/output-selector-test.c

index 1d1dc05..a60df6a 100644 (file)
  * Direct input stream to one out of N output pads.
  */
 
-/* FIXME: By default basesinks require some prerolled data before changing
-   to playing state. Also pipeline with output-selector connected to multiple 
-   sink elements won't change to playing until all sink elements have received
-   the preroll data. Currently this can be worked around using live source element
-   and and exporting GST_COMPAT="no-live-preroll".
-*/
-
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
@@ -212,7 +205,12 @@ gst_output_selector_set_property (GObject * object, guint prop_id,
       GstPad *next_pad =
           gst_element_get_static_pad (GST_ELEMENT (sel),
           g_value_get_string (value));
-      if (next_pad && (next_pad != sel->active_srcpad)) {
+      if (!next_pad) {
+        GST_WARNING ("pad %s not found, activation failed",
+            g_value_get_string (value));
+        break;
+      }
+      if (next_pad != sel->active_srcpad) {
         /* switch to new srcpad in next chain run */
         if (sel->pending_srcpad != NULL) {
           GST_INFO ("replacing pending switch");
@@ -220,7 +218,8 @@ gst_output_selector_set_property (GObject * object, guint prop_id,
         }
         sel->pending_srcpad = next_pad;
       } else {
-        GST_WARNING ("setting active pad failed");
+        GST_INFO ("pad already active");
+        gst_object_unref (next_pad);
       }
       break;
     }
index 304295c..b158b68 100755 (executable)
@@ -93,8 +93,8 @@ main (gint argc, gchar * argv[])
   g_object_set (G_OBJECT (src), "is-live", TRUE, NULL);
   g_object_set (G_OBJECT (src), "do-timestamp", TRUE, NULL);
   g_object_set (G_OBJECT (src), "num-buffers", 500, NULL);
-  g_object_set (G_OBJECT (sink1), "sync", FALSE, NULL);
-  g_object_set (G_OBJECT (sink2), "sync", FALSE, NULL);
+  g_object_set (G_OBJECT (sink1), "sync", FALSE, "async", FALSE, NULL);
+  g_object_set (G_OBJECT (sink2), "sync", FALSE, "async", FALSE, NULL);
   g_object_set (G_OBJECT (osel), "resend-latest", TRUE, NULL);
 
   /* link src ! timeoverlay ! osel */