diff options
Diffstat (limited to 'video/out')
-rw-r--r-- | video/out/cocoa-cb/window.swift | 2 | ||||
-rw-r--r-- | video/out/cocoa_cb_common.swift | 22 |
2 files changed, 17 insertions, 7 deletions
diff --git a/video/out/cocoa-cb/window.swift b/video/out/cocoa-cb/window.swift index 040cd47751..b296eb25c8 100644 --- a/video/out/cocoa-cb/window.swift +++ b/video/out/cocoa-cb/window.swift @@ -306,7 +306,7 @@ class Window: NSWindow, NSWindowDelegate { isAnimating = false cocoaCB.layer.neededFlips += 1 - cocoaCB.isShuttingDown = false + cocoaCB.checkShutdown() } func setToFullScreen() { diff --git a/video/out/cocoa_cb_common.swift b/video/out/cocoa_cb_common.swift index b5ba9ee0c8..e8d8bb44f4 100644 --- a/video/out/cocoa_cb_common.swift +++ b/video/out/cocoa_cb_common.swift @@ -452,6 +452,21 @@ class CocoaCB: NSObject { } } + func shutdown(_ destroy: Bool = false) { + setCursorVisiblility(true) + stopDisplaylink() + uninitLightSensor() + removeDisplayReconfigureObserver() + mpv.deinitRender() + mpv.deinitMPV(destroy) + } + + func checkShutdown() { + if isShuttingDown { + shutdown(true) + } + } + func processEvent(_ event: UnsafePointer<mpv_event>) { switch event.pointee.event_id { case MPV_EVENT_SHUTDOWN: @@ -459,12 +474,7 @@ class CocoaCB: NSObject { isShuttingDown = true return } - setCursorVisiblility(true) - stopDisplaylink() - uninitLightSensor() - removeDisplayReconfigureObserver() - mpv.deinitRender() - mpv.deinitMPV() + shutdown() case MPV_EVENT_PROPERTY_CHANGE: if backendState == .init { handlePropertyChange(event) |