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.
This commit is contained in:
Jan Schmidt 2009-05-14 10:55:38 +01:00
parent b769f22404
commit 29b44a5e2f

View file

@ -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;