GNOME Bugzilla – Bug 755542
gtk: Fix a race where we end up setting wrong VideoInfo
Last modified: 2015-09-24 14:56:47 UTC
When seeking in a transition in GES we could end up getting: > ** (pitivi:1455): CRITICAL **: gst_video_frame_map_id: assertion 'info->finfo->format == meta->format' failed because the pending format was not taken into account when checking if the format had changed or not (the pending format not having been taken into account yet).
Created attachment 312056 [details] [review] gtk: Do not forget to release OBJECT_LOCK on error path
Created attachment 312057 [details] [review] gtk: When setting format also check pending format changed In case the format changed fast and the pending format is different than the currently set but the currently set is equal to the pending one we could end up having mismatch between the finally set format and the data stream format.
Review of attachment 312057 [details] [review]: One question. ::: ext/gtk/gtkgstbasewidget.c @@ +456,3 @@ + if (gst_video_info_is_equal (&widget->v_info, v_info) && + gst_video_info_is_equal (&widget->pending_v_info, v_info)) { Shouldn't his only check pending_v_info? The pending_v_info is used to cache changes before drawing>
Review of attachment 312057 [details] [review]: ::: ext/gtk/gtkgstbasewidget.c @@ +456,3 @@ + if (gst_video_info_is_equal (&widget->v_info, v_info) && + gst_video_info_is_equal (&widget->pending_v_info, v_info)) { Hrm, indeed pending == v_info if it has been set already.
Created attachment 312065 [details] [review] gtk: When setting format check if pending format changed In case the format changed fast and the pending format is different than the currently set but the currently set is equal to the pending one we could end up having mismatch between the finally set format and the data stream format.
Attachment 312056 [details] pushed as bdcb820 - gtk: Do not forget to release OBJECT_LOCK on error path Attachment 312065 [details] pushed as 4807201 - gtk: When setting format check if pending format changed