multifilesrc: fix regression with starting from index set via index property
authorTim-Philipp Müller <tim@centricular.com>
Thu, 13 Aug 2015 16:29:58 +0000 (17:29 +0100)
committerTim-Philipp Müller <tim@centricular.com>
Tue, 18 Aug 2015 12:17:34 +0000 (13:17 +0100)
When we haven't started yet, set the start_index when we set the index property,
so that we start at the right index position after the initial seek. The index
property was never really meant to be for writing, but it used to work, so let's
support it for backwards compatibility.

https://bugzilla.gnome.org/show_bug.cgi?id=739472

gst/multifile/gstmultifilesrc.c

index 01dae98..316c6e0 100644 (file)
@@ -299,7 +299,14 @@ gst_multi_file_src_set_property (GObject * object, guint prop_id,
       gst_multi_file_src_set_location (src, g_value_get_string (value));
       break;
     case PROP_INDEX:
-      src->index = g_value_get_int (value);
+      GST_OBJECT_LOCK (src);
+      /* index was really meant to be read-only, but for backwards-compatibility
+       * we set start_index to make it work as it used to */
+      if (!GST_OBJECT_FLAG_IS_SET (src, GST_BASE_SRC_FLAG_STARTED))
+        src->start_index = g_value_get_int (value);
+      else
+        src->index = g_value_get_int (value);
+      GST_OBJECT_UNLOCK (src);
       break;
     case PROP_START_INDEX:
       src->start_index = g_value_get_int (value);