Some adjustments to allow for setting a new filename after EOS, useful for writing...
authorRonald S. Bultje <rbultje@ronald.bitfreak.net>
Fri, 6 Jun 2003 23:48:04 +0000 (23:48 +0000)
committerRonald S. Bultje <rbultje@ronald.bitfreak.net>
Fri, 6 Jun 2003 23:48:04 +0000 (23:48 +0000)
Original commit message from CVS:
Some adjustments to allow for setting a new filename after EOS, useful for writing multiple files

gst/elements/gstfilesink.c
plugins/elements/gstfilesink.c

index 5c40021..ce1832d 100644 (file)
@@ -168,15 +168,15 @@ gst_filesink_set_property (GObject *object, guint prop_id, const GValue *value,
   switch (prop_id) {
     case ARG_LOCATION:
       /* the element must be stopped or paused in order to do this */
-      g_return_if_fail (GST_STATE (sink) < GST_STATE_PLAYING);
+      g_return_if_fail (GST_STATE (sink) <= GST_STATE_PAUSED);
+      if (GST_STATE (sink) == GST_STATE_PAUSED)
+        g_return_if_fail (!GST_FLAG_IS_SET (sink, GST_FILESINK_OPEN));
+
       if (sink->filename)
        g_free (sink->filename);
       sink->filename = g_strdup (g_value_get_string (value));
-      if ((GST_STATE (sink) == GST_STATE_PAUSED) && 
-          (sink->filename != NULL)) {
-        gst_filesink_close_file (sink);
+      if (GST_STATE (sink) == GST_STATE_PAUSED)
         gst_filesink_open_file (sink);   
-      }
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
index 5c40021..ce1832d 100644 (file)
@@ -168,15 +168,15 @@ gst_filesink_set_property (GObject *object, guint prop_id, const GValue *value,
   switch (prop_id) {
     case ARG_LOCATION:
       /* the element must be stopped or paused in order to do this */
-      g_return_if_fail (GST_STATE (sink) < GST_STATE_PLAYING);
+      g_return_if_fail (GST_STATE (sink) <= GST_STATE_PAUSED);
+      if (GST_STATE (sink) == GST_STATE_PAUSED)
+        g_return_if_fail (!GST_FLAG_IS_SET (sink, GST_FILESINK_OPEN));
+
       if (sink->filename)
        g_free (sink->filename);
       sink->filename = g_strdup (g_value_get_string (value));
-      if ((GST_STATE (sink) == GST_STATE_PAUSED) && 
-          (sink->filename != NULL)) {
-        gst_filesink_close_file (sink);
+      if (GST_STATE (sink) == GST_STATE_PAUSED)
         gst_filesink_open_file (sink);   
-      }
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);