summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorder richter <der.richter@gmx.de>2024-03-24 14:11:13 +0100
committerder richter <der.richter@gmx.de>2024-03-24 23:03:48 +0100
commita46ce9e28cd97f7280c085649a79f85aa1d0fe70 (patch)
tree9698fde4159a0cc07bd39aeac58884f430b4f693
parentb77d5386c3717274ff8fa55fc60ba5db16b485fc (diff)
downloadmpv-a46ce9e28cd97f7280c085649a79f85aa1d0fe70.tar.bz2
mpv-a46ce9e28cd97f7280c085649a79f85aa1d0fe70.tar.xz
mac/event: only initialise an EventHelper when necessary
-rw-r--r--osdep/mac/app_hub.swift7
-rw-r--r--osdep/mac/event_helper.swift9
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))