ges: formatter: Keep a reference on the timelines
authorThibault Saunier <tsaunier@igalia.com>
Fri, 13 Dec 2024 12:09:15 +0000 (09:09 -0300)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Mon, 16 Dec 2024 08:49:41 +0000 (08:49 +0000)
We will be using it in an async way so we need to keep our own
reference to it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8145>

subprojects/gst-editing-services/ges/ges-formatter.c

index 6968b81b267ca2861a70deb45f8740ed6dfa5c28..154a9edb63d033c96241c6b757f7a88764b8e730 100644 (file)
@@ -187,6 +187,9 @@ ges_formatter_init (GESFormatter * object)
 static void
 ges_formatter_dispose (GObject * object)
 {
+  GESFormatter *self = GES_FORMATTER (object);
+
+  gst_clear_object (&self->timeline);
   ges_formatter_set_project (GES_FORMATTER (object), NULL);
 
   G_OBJECT_CLASS (ges_formatter_parent_class)->dispose (object);
@@ -421,7 +424,7 @@ ges_formatter_load_from_uri (GESFormatter * formatter,
   g_return_val_if_fail (GES_IS_TIMELINE (timeline), FALSE);
 
   if (klass->load_from_uri) {
-    formatter->timeline = timeline;
+    formatter->timeline = gst_object_ref (timeline);
     ret = klass->load_from_uri (formatter, timeline, uri, error);
   }