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:
parent
b769f22404
commit
29b44a5e2f
@ -417,6 +417,8 @@ gst_dvd_spu_video_event (GstPad * pad, GstEvent * event)
|
|||||||
gboolean in_still;
|
gboolean in_still;
|
||||||
|
|
||||||
if (gst_structure_get_boolean (structure, "still-state", &in_still)) {
|
if (gst_structure_get_boolean (structure, "still-state", &in_still)) {
|
||||||
|
GstBuffer *to_push = NULL;
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (dvdspu,
|
GST_DEBUG_OBJECT (dvdspu,
|
||||||
"DVD event of type %s on video pad: in-still = %d", event_type,
|
"DVD event of type %s on video pad: in-still = %d", event_type,
|
||||||
in_still);
|
in_still);
|
||||||
@ -431,10 +433,15 @@ gst_dvd_spu_video_event (GstPad * pad, GstEvent * event)
|
|||||||
* screen, otherwise the last frame might have been discarded
|
* screen, otherwise the last frame might have been discarded
|
||||||
* by QoS */
|
* by QoS */
|
||||||
gst_dvd_spu_redraw_still (dvdspu, TRUE);
|
gst_dvd_spu_redraw_still (dvdspu, TRUE);
|
||||||
|
to_push = dvdspu->pending_frame;
|
||||||
|
dvdspu->pending_frame = NULL;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
state->flags &= ~(SPU_STATE_STILL_FRAME);
|
state->flags &= ~(SPU_STATE_STILL_FRAME);
|
||||||
}
|
}
|
||||||
DVD_SPU_UNLOCK (dvdspu);
|
DVD_SPU_UNLOCK (dvdspu);
|
||||||
|
if (to_push)
|
||||||
|
gst_pad_push (dvdspu->srcpad, to_push);
|
||||||
}
|
}
|
||||||
gst_event_unref (event);
|
gst_event_unref (event);
|
||||||
res = TRUE;
|
res = TRUE;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user