launcher: don't start the pipeline before we're done updating it
authorMathieu Duponchelle <mathieu@centricular.com>
Tue, 10 Aug 2021 21:23:39 +0000 (23:23 +0200)
committerMathieu Duponchelle <mathieu@centricular.com>
Sat, 14 Aug 2021 16:07:56 +0000 (18:07 +0200)
Since 70e3b8ae2a8d13b50f52305b71cfa4b590bb63f6 the CommandLineFormatter
also emit "loaded" so we ended up doing this twice, once
as before in `run_pipeline` and another time in the `project:loaded`
callback.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/265>

tools/ges-launcher.c

index f4609b1..43d17d9 100644 (file)
@@ -692,12 +692,16 @@ _project_loaded_cb (GESProject * project, GESTimeline * timeline,
     self->priv->seenerrors = TRUE;
     g_application_quit (G_APPLICATION (self));
   }
-  _timeline_set_user_options (self, timeline, project_uri);
-  if (project_uri) {
+
+  if (!_timeline_set_user_options (self, timeline, project_uri)) {
+    g_error ("Failed to set user options on timeline\n");
+  } else if (project_uri) {
     if (!_set_rendering_details (self))
       g_error ("Failed to setup rendering details\n");
   }
 
+  print_timeline (self->priv->timeline);
+
   g_free (project_uri);
 
   if (!self->priv->seenerrors && opts->needs_set_state &&
@@ -947,22 +951,12 @@ _run_pipeline (GESLauncher * self)
       g_error ("Failed to setup rendering details\n");
       return FALSE;
     }
-
-    print_timeline (self->priv->timeline);
   }
 
   bus = gst_pipeline_get_bus (GST_PIPELINE (self->priv->pipeline));
   gst_bus_add_signal_watch (bus);
   g_signal_connect (bus, "message", G_CALLBACK (bus_message_cb), self);
 
-  if (!opts->load_path) {
-    if (opts->needs_set_state
-        && gst_element_set_state (GST_ELEMENT (self->priv->pipeline),
-            GST_STATE_PLAYING) == GST_STATE_CHANGE_FAILURE) {
-      g_error ("Failed to start the pipeline\n");
-      return FALSE;
-    }
-  }
   g_application_hold (G_APPLICATION (self));
 
   return TRUE;