From: Aurélien Zanelli Date: Mon, 16 May 2016 10:53:32 +0000 (+0200) Subject: framepositionner: add a weak ref on track element to know when it is finalized X-Git-Tag: 1.19.3~493^2~1004 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=df9921f470b4a6aacc71c46478d74ddbfc1d4504;p=platform%2Fupstream%2Fgstreamer.git framepositionner: add a weak ref on track element to know when it is finalized Otherwise if frame positionner is disposed after track element has been finalized, it will raise a critical message because we will try to disconnect a signal handler on a freed track element object. https://bugzilla.gnome.org/show_bug.cgi?id=766525 --- diff --git a/ges/gstframepositioner.c b/ges/gstframepositioner.c index a624751..fd1fc9e 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);