From af7b412d1c0b74c63d4d301f5cc5cb2cd32c2108 Mon Sep 17 00:00:00 2001 From: Akemi Date: Fri, 16 Mar 2018 13:52:15 +0100 Subject: cocoa-cb: fix shutdown when fullscreen animation is running commit 2edf00f changed the MPV_EVENT_SHUTDOWN behaviour slightly, such that it will only be sent once. cocoa-cb relied on it being sent continuously till all mpv_handles are destroyed. now it manually shuts down and destroys the mpv_handle after the animation instead of relying on this removed behaviour. --- video/out/cocoa_cb_common.swift | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'video/out/cocoa_cb_common.swift') 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) { 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) -- cgit v1.2.3