composition: Factor out a function to seek the current stack
authorThibault Saunier <tsaunier@gnome.org>
Thu, 10 Jul 2014 13:48:50 +0000 (15:48 +0200)
committerThibault Saunier <tsaunier@gnome.org>
Fri, 31 Oct 2014 10:58:09 +0000 (11:58 +0100)
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>

gnl/gnlcomposition.c

index 6e51f49..641a8aa 100644 (file)
@@ -1473,6 +1473,26 @@ update_operations_base_time (GnlComposition * comp, gboolean reverse)
       (GNodeTraverseFunc) update_base_time, &timestamp);
 }
 
+
+static gboolean
+_seek_current_stack (GnlComposition * comp, GstEvent * event)
+{
+  gboolean res;
+  GnlCompositionPrivate *priv = comp->priv;
+  GstPad *peer = gst_pad_get_peer (GNL_OBJECT_SRC (comp));
+
+  GST_INFO_OBJECT (comp, "Seeking itself %" GST_PTR_FORMAT, event);
+
+  priv->seeking_itself = TRUE;
+  res = gst_pad_push_event (peer, event);
+  priv->seeking_itself = FALSE;
+  gst_object_unref (peer);
+
+  GST_DEBUG_OBJECT (comp, "Done seeking");
+
+  return res;
+}
+
 /*
   Figures out if pipeline needs updating.
   Updates it and sends the seek event.
@@ -2966,18 +2986,10 @@ update_pipeline (GnlComposition * comp, GstClockTime currenttime,
   }
 
   /* Activate stack */
-  if (!samestack) {
+  if (!samestack)
     return _activate_new_stack (comp);
-  } else {
-    gboolean res;
-    GstPad *peer = gst_pad_get_peer (GNL_OBJECT_SRC (comp));
-
-    priv->seeking_itself = TRUE;
-    res = gst_pad_push_event (peer, toplevel_seek);
-    priv->seeking_itself = FALSE;
-
-    return res;
-  }
+  else
+    return _seek_current_stack (comp, toplevel_seek);
 }
 
 static gboolean