summaryrefslogtreecommitdiffstats
path: root/video/out/vo_opengl.c
diff options
context:
space:
mode:
authorStefano Pigozzi <stefano.pigozzi@gmail.com>2014-10-18 18:30:22 +0200
committerStefano Pigozzi <stefano.pigozzi@gmail.com>2014-10-18 18:30:22 +0200
commitfa904150bfb7467b66e7fc0a7c709e61cb3dd9fc (patch)
tree4178261c60fb754197df47264784305f422136cc /video/out/vo_opengl.c
parent421bce00776f00cc0185ef65b82a6a4c8bcfd366 (diff)
downloadmpv-fa904150bfb7467b66e7fc0a7c709e61cb3dd9fc.tar.bz2
mpv-fa904150bfb7467b66e7fc0a7c709e61cb3dd9fc.tar.xz
cocoa: reintroduce async resize
After removing synchronous libdispatch calls, this looks like it doesn't deadlock anymore. I also experimented with pthread_mutex_trylock liek wm4 suggested, but it leads to some annoying black flickering. I will fallback to that only if some new deadlocks are discovered.
Diffstat (limited to 'video/out/vo_opengl.c')
-rw-r--r--video/out/vo_opengl.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/video/out/vo_opengl.c b/video/out/vo_opengl.c
index 1acd6ef466..3b6e3a2e43 100644
--- a/video/out/vo_opengl.c
+++ b/video/out/vo_opengl.c
@@ -203,6 +203,13 @@ static bool config_window(struct gl_priv *p, int flags)
return mpgl_config_window(p->glctx, mpgl_caps, flags);
}
+static void video_resize_redraw_callback(struct vo *vo, int w, int h)
+{
+ struct gl_priv *p = vo->priv;
+ gl_video_resize_redraw(p->renderer, w, h);
+
+}
+
static int reconfig(struct vo *vo, struct mp_image_params *params, int flags)
{
struct gl_priv *p = vo->priv;
@@ -214,6 +221,10 @@ static int reconfig(struct vo *vo, struct mp_image_params *params, int flags)
return -1;
}
+ if (p->glctx->register_resize_callback) {
+ p->glctx->register_resize_callback(vo, video_resize_redraw_callback);
+ }
+
gl_video_config(p->renderer, params);
p->vo_flipped = !!(flags & VOFLAG_FLIPPING);