summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Ross-Gowan <rossy@jrg.systems>2017-09-17 13:44:31 +1000
committerNiklas Haas <git@haasn.xyz>2017-09-21 15:01:22 +0200
commitcee764849e4fe22b00fb3f31838a63906e2e0d54 (patch)
treec51e156cf51d81d5e0c1bb27d0738af844775af4
parent75c0c06640da677477a0cfd08deee1d4e23a4361 (diff)
downloadmpv-cee764849e4fe22b00fb3f31838a63906e2e0d54.tar.bz2
mpv-cee764849e4fe22b00fb3f31838a63906e2e0d54.tar.xz
cocoa: re-enable double buffering
This causes a performance regression on 10.11 and newer, but the single buffered method was broken and could cause partially rendered frames to be presented to the screen. This reverts 9f30cd8292b4b7bfe5d7db29fe31a07cc76dec2c and e543853a7ff0ab4dcd4ccaf06c448013fd41c03a.
-rw-r--r--video/out/cocoa_common.m2
-rw-r--r--video/out/opengl/context_cocoa.c3
2 files changed, 3 insertions, 2 deletions
diff --git a/video/out/cocoa_common.m b/video/out/cocoa_common.m
index abead0fb53..8f09c25b91 100644
--- a/video/out/cocoa_common.m
+++ b/video/out/cocoa_common.m
@@ -811,6 +811,8 @@ void vo_cocoa_swap_buffers(struct vo *vo)
}
pthread_mutex_unlock(&s->sync_lock);
+ CGLFlushDrawable(s->cgl_ctx);
+
pthread_mutex_lock(&s->lock);
s->frame_w = vo->dwidth;
s->frame_h = vo->dheight;
diff --git a/video/out/opengl/context_cocoa.c b/video/out/opengl/context_cocoa.c
index 585c49f9a9..6d3d8282e1 100644
--- a/video/out/opengl/context_cocoa.c
+++ b/video/out/opengl/context_cocoa.c
@@ -72,6 +72,7 @@ static CGLError test_gl_version(struct ra_ctx *ctx, CGLOpenGLProfile ver)
// rejected attribute to preserve the fallback code
kCGLPFAOpenGLProfile,
(CGLPixelFormatAttribute) ver,
+ kCGLPFADoubleBuffer,
kCGLPFAAccelerated,
kCGLPFAAllowOfflineRenderers,
// keep this one last to apply the cocoa-force-dedicated-gpu option
@@ -155,9 +156,7 @@ static void cocoa_uninit(struct ra_ctx *ctx)
static void cocoa_swap_buffers(struct ra_ctx *ctx)
{
- GL *gl = &p->gl;
vo_cocoa_swap_buffers(ctx->vo);
- gl->Flush();
}
static bool cocoa_init(struct ra_ctx *ctx)