From 7a9fff74c6b6a3bc9559d624af3e8d71f8771db8 Mon Sep 17 00:00:00 2001 From: Vincent Penquerc'h Date: Mon, 30 Jan 2012 18:46:07 +0000 Subject: [PATCH] resindvd: fix wedge in preroll when playbin2 deinterlacing is enabled When deinterlacing is enabled, an extra colorspace element is added. Colorspace is a basetransform, and is then the only basetransform element on the video path. A while ago, basetransform started delaying events till caps were set on its source pad. These things conspired to end up sending the DVD highlight events onto a blocked pad on subtitleoverlay. Ensuring these highlight events are only sent once we're in playing mode fixes the issue. https://bugzilla.gnome.org/show_bug.cgi?id=668762 --- ext/resindvd/resindvdsrc.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/ext/resindvd/resindvdsrc.c b/ext/resindvd/resindvdsrc.c index 2a52fcd8ad..53320752bd 100644 --- a/ext/resindvd/resindvdsrc.c +++ b/ext/resindvd/resindvdsrc.c @@ -1120,7 +1120,7 @@ rsn_dvdsrc_step (resinDvdSrc * src, gboolean have_dvd_lock) break; } - if (src->highlight_event && have_dvd_lock) { + if (src->highlight_event && have_dvd_lock && src->in_playing) { GstEvent *hl_event = src->highlight_event; src->highlight_event = NULL; @@ -1411,8 +1411,12 @@ rsn_dvdsrc_create (GstBaseSrc * bsrc, guint64 offset, } } - highlight_event = src->highlight_event; - src->highlight_event = NULL; + if (src->in_playing) { + highlight_event = src->highlight_event; + src->highlight_event = NULL; + } else { + highlight_event = NULL; + } /* Schedule a clock callback for the any pending nav packet */ rsn_dvdsrc_check_nav_blocks (src);