diff options
author | Jan Schmidt <thaytan@noraisin.net> | 2009-05-14 10:55:38 +0100 |
---|---|---|
committer | Jan Schmidt <thaytan@noraisin.net> | 2009-05-14 11:28:14 +0100 |
commit | 29b44a5e2f058689ba7ecec00b5355c8cf0dc642 (patch) | |
tree | 01e9215c44ad126dc520cbf56b97798ab51254ac /gst/dvdspu | |
parent | b769f22404ca1d566b38b50854f184b5eda628fd (diff) | |
download | gst-plugins-bad-29b44a5e2f058689ba7ecec00b5355c8cf0dc642.tar.gz gst-plugins-bad-29b44a5e2f058689ba7ecec00b5355c8cf0dc642.tar.bz2 gst-plugins-bad-29b44a5e2f058689ba7ecec00b5355c8cf0dc642.zip |
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.
Diffstat (limited to 'gst/dvdspu')
-rw-r--r-- | gst/dvdspu/gstdvdspu.c | 7 |
1 files changed, 7 insertions, 0 deletions
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; |