gst/playback/gstplaybasebin.c: Clear the dynamic pads counter when starting a new...
authorWim Taymans <wim.taymans@gmail.com>
Thu, 12 Jul 2007 12:01:20 +0000 (12:01 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Thu, 12 Jul 2007 12:01:20 +0000 (12:01 +0000)
Original commit message from CVS:
* gst/playback/gstplaybasebin.c: (no_more_pads_full),
(setup_source):
Clear the dynamic pads counter when starting a new uri. This makes
reusing playbin work again.
Fixes #454264.

ChangeLog
gst/playback/gstplaybasebin.c

index 097b0d6..78e40a6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2007-07-12  Wim Taymans  <wim.taymans@gmail.com>
+
+       * gst/playback/gstplaybasebin.c: (no_more_pads_full),
+       (setup_source):
+       Clear the dynamic pads counter when starting a new uri. This makes
+       reusing playbin work again.
+       Fixes #454264.
+
 2007-07-12  Stefan Kost  <ensonic@users.sf.net>
 
        * configure.ac:
index 0a8998c..d7390df 100644 (file)
@@ -1051,11 +1051,13 @@ no_more_pads_full (GstElement * element, gboolean subs,
   if (!g_object_get_data (G_OBJECT (element), "pending"))
     return;
 
-  GST_DEBUG_OBJECT (element, "remove pending");
-
   g_object_set_data (G_OBJECT (element), "pending", NULL);
 
   play_base_bin->pending--;
+
+  GST_DEBUG_OBJECT (element, "remove pending, now %d pending",
+      play_base_bin->pending);
+
   if (play_base_bin->pending == 0) {
     /* we can commit this group for playback now */
     group_commit (play_base_bin, play_base_bin->is_stream, subs);
@@ -1988,6 +1990,9 @@ setup_source (GstPlayBaseBin * play_base_bin)
   /* remove our previous preroll queues */
   remove_groups (play_base_bin);
 
+  /* clear pending dynamic elements */
+  play_base_bin->pending = 0;
+
   /* do subs */
   if (subbin) {
     GstElement *db;
@@ -2006,6 +2011,9 @@ setup_source (GstPlayBaseBin * play_base_bin)
     g_object_set_data (G_OBJECT (db), "pending", "1");
     play_base_bin->pending++;
 
+    GST_DEBUG_OBJECT (play_base_bin, "we have subtitles, %d pending",
+        play_base_bin->pending);
+
     if (!play_base_bin->is_stream) {
       GstStateChangeReturn sret;