summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAkemi <der.richter@gmx.de>2018-02-18 22:10:34 +0100
committerKevin Mitchell <kevmitch@gmail.com>2018-02-21 22:30:46 -0800
commit7f714c6984b3ca0ee49a76cbb46fbeb520519401 (patch)
treeef0f83a0fe31cb7d3aa1c4dcfa548874976b16ca
parent5cc796daccd3f3ccc0506d4423fd52e00c12218a (diff)
downloadmpv-7f714c6984b3ca0ee49a76cbb46fbeb520519401.tar.bz2
mpv-7f714c6984b3ca0ee49a76cbb46fbeb520519401.tar.xz
cocoa-cb: fix invalid framebuffer operation error
in certain circumstances the returned fbo for drawing is 0, but that fbo is solely used internally by the CAOpenGLLayer for its drawing and should never be used. in that case we fallback to 1 or the last used fbo instead if it was not 0. Fixes #5546
-rw-r--r--osdep/macOS_mpv_helper.swift6
1 files changed, 5 insertions, 1 deletions
diff --git a/osdep/macOS_mpv_helper.swift b/osdep/macOS_mpv_helper.swift
index 39be9cc8c7..15081d0133 100644
--- a/osdep/macOS_mpv_helper.swift
+++ b/osdep/macOS_mpv_helper.swift
@@ -26,6 +26,7 @@ class MPVHelper: NSObject {
var mpvLog: OpaquePointer?
var inputContext: OpaquePointer?
var mpctx: UnsafeMutablePointer<MPContext>?
+ var fbo: GLint = 1
init(_ mpv: OpaquePointer) {
super.init()
@@ -101,8 +102,11 @@ class MPVHelper: NSObject {
if mpvGLCBContext != nil {
var i: GLint = 0
glGetIntegerv(GLenum(GL_DRAW_FRAMEBUFFER_BINDING), &i)
+ // CAOpenGLLayer has ownership of FBO zero yet can return it to us,
+ // so only utilize a newly received FBO ID if it is nonzero.
+ fbo = i != 0 ? i : fbo
- mpv_opengl_cb_draw(mpvGLCBContext, i, Int32(surface.width), Int32(-surface.height))
+ mpv_opengl_cb_draw(mpvGLCBContext, fbo, Int32(surface.width), Int32(-surface.height))
} else {
glClearColor(0, 0, 0, 1)
glClear(GLbitfield(GL_COLOR_BUFFER_BIT))