diff options
author | der richter <der.richter@gmx.de> | 2024-03-24 14:11:13 +0100 |
---|---|---|
committer | der richter <der.richter@gmx.de> | 2024-03-24 23:03:48 +0100 |
commit | a46ce9e28cd97f7280c085649a79f85aa1d0fe70 (patch) | |
tree | 9698fde4159a0cc07bd39aeac58884f430b4f693 | |
parent | b77d5386c3717274ff8fa55fc60ba5db16b485fc (diff) | |
download | mpv-a46ce9e28cd97f7280c085649a79f85aa1d0fe70.tar.bz2 mpv-a46ce9e28cd97f7280c085649a79f85aa1d0fe70.tar.xz |
mac/event: only initialise an EventHelper when necessary
-rw-r--r-- | osdep/mac/app_hub.swift | 7 | ||||
-rw-r--r-- | osdep/mac/event_helper.swift | 9 |
2 files changed, 12 insertions, 4 deletions
diff --git a/osdep/mac/app_hub.swift b/osdep/mac/app_hub.swift index d5b0827be3..a668948603 100644 --- a/osdep/mac/app_hub.swift +++ b/osdep/mac/app_hub.swift @@ -39,8 +39,9 @@ class AppHub: NSObject { } @objc func initMpv(_ mpv: OpaquePointer) { - self.mpv = mpv - event = EventHelper(mpv) + event = EventHelper(self, mpv) + self.mpv = event?.mpv + #if HAVE_MACOS_MEDIA_PLAYER remote?.registerEvents() #endif @@ -54,7 +55,7 @@ class AppHub: NSObject { } @objc func initCocoaCb() { - guard let app = NSApp as? Application else { return } + guard let app = NSApp as? Application, let mpv = mpv else { return } DispatchQueue.main.sync { app.initCocoaCb(mpv) } } diff --git a/osdep/mac/event_helper.swift b/osdep/mac/event_helper.swift index f0b2bf42b1..003f04e766 100644 --- a/osdep/mac/event_helper.swift +++ b/osdep/mac/event_helper.swift @@ -58,10 +58,17 @@ extension EventHelper { } public class EventHelper: NSObject { + unowned let appHub: AppHub var mpv: OpaquePointer? var events: [String:[Int:EventSubscriber]] = [:] - @objc init(_ mpvHandle: OpaquePointer) { + @objc init?(_ appHub: AppHub, _ mpvHandle: OpaquePointer) { + if !appHub.isApplication { + mpv_destroy(mpvHandle) + return nil + } + + self.appHub = appHub self.mpv = mpvHandle super.init() mpv_set_wakeup_callback(mpvHandle, wakeup, TypeHelper.bridge(obj: self)) |