From 29b44a5e2f058689ba7ecec00b5355c8cf0dc642 Mon Sep 17 00:00:00 2001 From: Jan Schmidt Date: Thu, 14 May 2009 10:55:38 +0100 Subject: dvdspu: Push update frame, if any, when entering stills. When entering a still frame generates an updated buffer, make sure to push it out, otherwise we may not put a frame onscreen with a rendered button, causing raciness as to whether buttons get drawn or not when jumping back to the menu on some discs. --- gst/dvdspu/gstdvdspu.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'gst/dvdspu') diff --git a/gst/dvdspu/gstdvdspu.c b/gst/dvdspu/gstdvdspu.c index 82048529..703c405b 100644 --- a/gst/dvdspu/gstdvdspu.c +++ b/gst/dvdspu/gstdvdspu.c @@ -417,6 +417,8 @@ gst_dvd_spu_video_event (GstPad * pad, GstEvent * event) gboolean in_still; if (gst_structure_get_boolean (structure, "still-state", &in_still)) { + GstBuffer *to_push = NULL; + GST_DEBUG_OBJECT (dvdspu, "DVD event of type %s on video pad: in-still = %d", event_type, in_still); @@ -431,10 +433,15 @@ gst_dvd_spu_video_event (GstPad * pad, GstEvent * event) * screen, otherwise the last frame might have been discarded * by QoS */ gst_dvd_spu_redraw_still (dvdspu, TRUE); + to_push = dvdspu->pending_frame; + dvdspu->pending_frame = NULL; + } else { state->flags &= ~(SPU_STATE_STILL_FRAME); } DVD_SPU_UNLOCK (dvdspu); + if (to_push) + gst_pad_push (dvdspu->srcpad, to_push); } gst_event_unref (event); res = TRUE; -- cgit v1.2.1