From eae12bf9637df1d2b9077a9d3666cd55e7b09459 Mon Sep 17 00:00:00 2001 From: wm4 Date: Tue, 21 Feb 2017 14:31:51 +0100 Subject: vo: fix subtleties in the redrawing logic This fixes a race condition created by the previous commit, and possibly others. Sometimes interpolated frames weren't redrawn as uninterpolated ones. The problem is that redrawing/drawing a frame can't reset the VO want_redraw flags, because logically these have to happen after the core acknowledged and explicitly reissued a redraw. The core needs to be involved because the OSD text and drawings could depend on the playback or window state. Change it such that it always goes through the core. Also, VOs inconsistently called vo_wakeup() when setting want_redraw, which is also taken care of by this commit. --- video/out/vo_opengl_cb.c | 1 - 1 file changed, 1 deletion(-) (limited to 'video/out/vo_opengl_cb.c') diff --git a/video/out/vo_opengl_cb.c b/video/out/vo_opengl_cb.c index 9ecdf5eaed..3dd8a03101 100644 --- a/video/out/vo_opengl_cb.c +++ b/video/out/vo_opengl_cb.c @@ -441,7 +441,6 @@ static int control(struct vo *vo, uint32_t request, void *data) return VO_TRUE; case VOCTRL_PAUSE: vo->want_redraw = true; - vo_wakeup(vo); return VO_TRUE; case VOCTRL_GET_EQUALIZER: { struct voctrl_get_equalizer_args *args = data; -- cgit v1.2.3