event: Update for stream-start event API changes
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Sun, 29 Jul 2012 12:25:34 +0000 (14:25 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Mon, 6 Aug 2012 12:00:56 +0000 (14:00 +0200)
libs/gst/base/gstbaseparse.c
libs/gst/base/gstbasesrc.c
tests/check/elements/queue.c
tests/check/gst/gstbin.c
tests/check/gst/gstpad.c

index 349a202..102ca72 100644 (file)
@@ -2850,9 +2850,16 @@ gst_base_parse_loop (GstPad * pad)
   GST_DEBUG_OBJECT (parse, "hello");
 
   if (G_UNLIKELY (parse->priv->push_stream_start)) {
+    gchar *stream_id;
+
+    stream_id =
+        gst_pad_create_stream_id (parse->srcpad, GST_ELEMENT_CAST (parse),
+        NULL);
+
     GST_DEBUG_OBJECT (parse, "Pushing STREAM_START");
-    gst_pad_push_event (parse->srcpad, gst_event_new_stream_start ());
+    gst_pad_push_event (parse->srcpad, gst_event_new_stream_start (stream_id));
     parse->priv->push_stream_start = FALSE;
+    g_free (stream_id);
   }
 
   /* reverse playback:
index d53eda3..1358321 100644 (file)
@@ -823,8 +823,17 @@ gst_base_src_send_stream_start (GstBaseSrc * src)
   gboolean ret = TRUE;
 
   if (src->priv->stream_start_pending) {
-    ret = gst_pad_push_event (src->srcpad, gst_event_new_stream_start ());
+    gchar *stream_id;
+
+    stream_id =
+        gst_pad_create_stream_id (src->srcpad, GST_ELEMENT_CAST (src), NULL);
+
+    GST_DEBUG_OBJECT (src, "Pushing STREAM_START");
+    ret =
+        gst_pad_push_event (src->srcpad,
+        gst_event_new_stream_start (stream_id));
     src->priv->stream_start_pending = FALSE;
+    g_free (stream_id);
   }
 
   return ret;
@@ -3519,12 +3528,16 @@ gst_base_src_activate_mode (GstPad * pad, GstObject * parent,
     GstPadMode mode, gboolean active)
 {
   gboolean res;
+  GstBaseSrc *src = GST_BASE_SRC (parent);
+
+  src->priv->stream_start_pending = FALSE;
 
   switch (mode) {
     case GST_PAD_MODE_PULL:
       res = gst_base_src_activate_pull (pad, parent, active);
       break;
     case GST_PAD_MODE_PUSH:
+      src->priv->stream_start_pending = active;
       res = gst_base_src_activate_push (pad, parent, active);
       break;
     default:
@@ -3549,7 +3562,6 @@ gst_base_src_change_state (GstElement * element, GstStateChange transition)
     case GST_STATE_CHANGE_NULL_TO_READY:
       break;
     case GST_STATE_CHANGE_READY_TO_PAUSED:
-      basesrc->priv->stream_start_pending = TRUE;
       no_preroll = gst_base_src_is_live (basesrc);
       break;
     case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
@@ -3583,7 +3595,6 @@ gst_base_src_change_state (GstElement * element, GstStateChange transition)
        * already did this */
       g_atomic_int_set (&basesrc->priv->pending_eos, FALSE);
       gst_event_replace (&basesrc->pending_seek, NULL);
-      basesrc->priv->stream_start_pending = FALSE;
       break;
     }
     case GST_STATE_CHANGE_READY_TO_NULL:
index 59f4981..16ea8ec 100644 (file)
@@ -246,7 +246,7 @@ GST_START_TEST (test_non_leaky_overrun)
   UNDERRUN_WAIT ();
   UNDERRUN_UNLOCK ();
 
-  gst_pad_push_event (mysrcpad, gst_event_new_stream_start ());
+  gst_pad_push_event (mysrcpad, gst_event_new_stream_start ("test"));
 
   fail_unless (underrun_count == 1);
   fail_unless (overrun_count == 0);
@@ -338,7 +338,7 @@ GST_START_TEST (test_leaky_upstream)
   UNDERRUN_WAIT ();
   UNDERRUN_UNLOCK ();
 
-  gst_pad_push_event (mysrcpad, gst_event_new_stream_start ());
+  gst_pad_push_event (mysrcpad, gst_event_new_stream_start ("test"));
 
   fail_unless (overrun_count == 0);
   fail_unless (underrun_count == 1);
@@ -424,7 +424,7 @@ GST_START_TEST (test_leaky_downstream)
   UNDERRUN_WAIT ();
   UNDERRUN_UNLOCK ();
 
-  gst_pad_push_event (mysrcpad, gst_event_new_stream_start ());
+  gst_pad_push_event (mysrcpad, gst_event_new_stream_start ("test"));
 
   fail_unless (overrun_count == 0);
   fail_unless (underrun_count == 1);
@@ -507,7 +507,7 @@ GST_START_TEST (test_time_level)
   UNDERRUN_WAIT ();
   UNDERRUN_UNLOCK ();
 
-  gst_pad_push_event (mysrcpad, gst_event_new_stream_start ());
+  gst_pad_push_event (mysrcpad, gst_event_new_stream_start ("test"));
 
   /* push buffer without duration */
   buffer = gst_buffer_new_and_alloc (4);
@@ -606,7 +606,7 @@ GST_START_TEST (test_time_level_task_not_started)
   UNDERRUN_WAIT ();
   UNDERRUN_UNLOCK ();
 
-  gst_pad_push_event (mysrcpad, gst_event_new_stream_start ());
+  gst_pad_push_event (mysrcpad, gst_event_new_stream_start ("test"));
 
   gst_segment_init (&segment, GST_FORMAT_TIME);
   segment.start = 1 * GST_SECOND;
index 801550c..67aec7e 100644 (file)
@@ -75,7 +75,7 @@ static gpointer
 push_one_stream_start (GstPad * pad)
 {
   GST_DEBUG_OBJECT (pad, "Pushing STREAM_START event");
-  gst_pad_push_event (pad, gst_event_new_stream_start ());
+  gst_pad_push_event (pad, gst_event_new_stream_start ("test"));
 
   return NULL;
 }
index 8c2c1de..16f3e51 100644 (file)
@@ -1438,7 +1438,7 @@ GST_START_TEST (test_sticky_events)
   gst_pad_set_active (srcpad, TRUE);
 
   /* push an event, it should be sticky on the srcpad */
-  gst_pad_push_event (srcpad, gst_event_new_stream_start ());
+  gst_pad_push_event (srcpad, gst_event_new_stream_start ("test"));
 
   /* make a caps event */
   caps = gst_caps_new_empty_simple ("foo/bar");