summaryrefslogtreecommitdiffstats
path: root/video/out/vo_opengl.c
diff options
context:
space:
mode:
Diffstat (limited to 'video/out/vo_opengl.c')
-rw-r--r--video/out/vo_opengl.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/video/out/vo_opengl.c b/video/out/vo_opengl.c
index 84381e42d1..25e25a2e9d 100644
--- a/video/out/vo_opengl.c
+++ b/video/out/vo_opengl.c
@@ -122,6 +122,9 @@ static void flip_page(struct vo *vo)
struct gl_priv *p = vo->priv;
GL *gl = p->gl;
+ if (p->glctx->is_active && !p->glctx->is_active(p->glctx))
+ return;
+
mpgl_lock(p->glctx);
p->glctx->swapGlBuffers(p->glctx);
@@ -160,6 +163,12 @@ static void draw_image_timed(struct vo *vo, mp_image_t *mpi,
struct gl_priv *p = vo->priv;
GL *gl = p->gl;
+ if (p->glctx->is_active && !p->glctx->is_active(p->glctx)) {
+ if (mpi)
+ gl_video_skip_image(p->renderer, mpi);
+ return;
+ }
+
if (p->vo_flipped)
mp_image_vflip(mpi);
@@ -376,6 +385,9 @@ static int control(struct vo *vo, uint32_t request, void *data)
request_hwdec_api(p, data);
return true;
case VOCTRL_REDRAW_FRAME:
+ if (p->glctx->is_active && !p->glctx->is_active(p->glctx))
+ return true;
+
mpgl_lock(p->glctx);
gl_video_render_frame(p->renderer, 0, NULL);
mpgl_unlock(p->glctx);