diff --git a/ges/gstframepositioner.c b/ges/gstframepositioner.c index a62475192c..fd1fc9efe4 100644 --- a/ges/gstframepositioner.c +++ b/ges/gstframepositioner.c @@ -200,6 +200,12 @@ _track_changed_cb (GESTrackElement * trksrc, GParamSpec * arg G_GNUC_UNUSED, set_track (pos); } +static void +_trk_element_weak_notify_cb (GstFramePositioner * pos, GObject * old) +{ + pos->track_source = NULL; +} + void ges_frame_positioner_set_source_and_filter (GstFramePositioner * pos, GESTrackElement * trksrc, GstElement * capsfilter) @@ -208,6 +214,8 @@ ges_frame_positioner_set_source_and_filter (GstFramePositioner * pos, pos->capsfilter = capsfilter; pos->current_track = ges_track_element_get_track (trksrc); + g_object_weak_ref (G_OBJECT (trksrc), + (GWeakNotify) _trk_element_weak_notify_cb, pos); g_signal_connect (trksrc, "notify::track", (GCallback) _track_changed_cb, pos); set_track (pos);