summaryrefslogtreecommitdiffstats
path: root/video/out/mac/gl_layer.swift
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--video/out/mac/gl_layer.swift32
1 files changed, 20 insertions, 12 deletions
diff --git a/video/out/mac/gl_layer.swift b/video/out/mac/gl_layer.swift
index dd96af7..38320bc 100644
--- a/video/out/mac/gl_layer.swift
+++ b/video/out/mac/gl_layer.swift
@@ -82,8 +82,6 @@ class GLLayer: CAOpenGLLayer {
enum Draw: Int { case normal = 1, atomic, atomicEnd }
var draw: Draw = .normal
- let queue: DispatchQueue = DispatchQueue(label: "io.mpv.queue.draw")
-
var needsICCUpdate: Bool = false {
didSet {
if needsICCUpdate == true {
@@ -199,6 +197,14 @@ class GLLayer: CAOpenGLLayer {
}
}
+ func lockCglContext() {
+ CGLLockContext(cglContext)
+ }
+
+ func unlockCglContext() {
+ CGLUnlockContext(cglContext)
+ }
+
override func copyCGLPixelFormat(forDisplayMask mask: UInt32) -> CGLPixelFormatObj {
return cglPixelFormat
}
@@ -219,17 +225,19 @@ class GLLayer: CAOpenGLLayer {
super.display()
CATransaction.flush()
if isUpdate && needsFlip {
+ lockCglContext()
CGLSetCurrentContext(cglContext)
if libmpv.isRenderUpdateFrame() {
libmpv.drawRender(NSZeroSize, bufferDepth, cglContext, skip: true)
}
+ unlockCglContext()
}
displayLock.unlock()
}
func update(force: Bool = false) {
if force { forceDraw = true }
- queue.async {
+ DispatchQueue.main.async {
if self.forceDraw || !self.inLiveResize {
self.needsFlip = true
self.display()
@@ -241,7 +249,7 @@ class GLLayer: CAOpenGLLayer {
var pix: CGLPixelFormatObj?
var depth: GLint = 8
var err: CGLError = CGLError(rawValue: 0)
- let swRender = ccb.libmpv.macOpts.cocoa_cb_sw_renderer
+ let swRender = ccb.option.mac.cocoa_cb_sw_renderer
if swRender != 1 {
(pix, depth, err) = GLLayer.findPixelFormat(ccb)
@@ -252,7 +260,7 @@ class GLLayer: CAOpenGLLayer {
}
guard let pixelFormat = pix, err == kCGLNoError else {
- ccb.log.sendError("Couldn't create any CGL pixel format")
+ ccb.log.error("Couldn't create any CGL pixel format")
exit(1)
}
@@ -269,12 +277,12 @@ class GLLayer: CAOpenGLLayer {
glBase.insert(CGLPixelFormatAttribute(ver.rawValue), at: 1)
var glFormat = [glBase]
- if ccb.libmpv.macOpts.cocoa_cb_10bit_context {
+ if ccb.option.mac.cocoa_cb_10bit_context {
glFormat += [glFormat10Bit]
}
glFormat += glFormatOptional
- if !ccb.libmpv.macOpts.macos_force_dedicated_gpu {
+ if !ccb.option.mac.macos_force_dedicated_gpu {
glFormat += [glFormatAutoGPU]
}
@@ -289,7 +297,7 @@ class GLLayer: CAOpenGLLayer {
return attributeLookUp[value.rawValue] ?? String(value.rawValue)
})
- ccb.log.sendVerbose("Created CGL pixel format with attributes: " +
+ ccb.log.verbose("Created CGL pixel format with attributes: " +
"\(attArray.joined(separator: ", "))")
return (pix, glFormat.contains(glFormat10Bit) ? 16 : 8, err)
}
@@ -297,11 +305,11 @@ class GLLayer: CAOpenGLLayer {
}
let errS = String(cString: CGLErrorString(err))
- ccb.log.sendWarning("Couldn't create a " +
+ ccb.log.warning("Couldn't create a " +
"\(software ? "software" : "hardware accelerated") " +
"CGL pixel format: \(errS) (\(err.rawValue))")
- if software == false && ccb.libmpv.macOpts.cocoa_cb_sw_renderer == -1 {
- ccb.log.sendWarning("Falling back to software renderer")
+ if software == false && ccb.option.mac.cocoa_cb_sw_renderer == -1 {
+ ccb.log.warning("Falling back to software renderer")
}
return (pix, 8, err)
@@ -313,7 +321,7 @@ class GLLayer: CAOpenGLLayer {
guard let cglContext = context, error == kCGLNoError else {
let errS = String(cString: CGLErrorString(error))
- ccb.log.sendError("Couldn't create a CGLContext: " + errS)
+ ccb.log.error("Couldn't create a CGLContext: " + errS)
exit(1)
}