diff options
author | der richter <der.richter@gmx.de> | 2024-03-23 22:27:21 +0100 |
---|---|---|
committer | der richter <der.richter@gmx.de> | 2024-03-24 23:03:48 +0100 |
commit | 5ab30609616aee2c8e8a03addb05bd0914940a68 (patch) | |
tree | 9033babbc08e7d576134fec79b668ccacd62a54e | |
parent | 2a4bf7ca22e0513d7ad0f9072e1877d891e182ac (diff) | |
download | mpv-5ab30609616aee2c8e8a03addb05bd0914940a68.tar.bz2 mpv-5ab30609616aee2c8e8a03addb05bd0914940a68.tar.xz |
cocoa-cb: use EventHelper for event handling
-rw-r--r-- | osdep/mac/app_hub.swift | 26 | ||||
-rw-r--r-- | osdep/mac/application.m | 3 | ||||
-rw-r--r-- | video/out/cocoa_cb_common.swift | 12 |
3 files changed, 15 insertions, 26 deletions
diff --git a/osdep/mac/app_hub.swift b/osdep/mac/app_hub.swift index d95faf733f..6166ea4c94 100644 --- a/osdep/mac/app_hub.swift +++ b/osdep/mac/app_hub.swift @@ -20,6 +20,7 @@ class AppHub: NSObject { var mpv: OpaquePointer? @objc var input: InputHelper + var event: EventHelper? #if HAVE_MACOS_MEDIA_PLAYER var remote: RemoteCommandCenter? #endif @@ -31,21 +32,16 @@ class AppHub: NSObject { } @objc func initMpv(_ mpv: OpaquePointer) { - if isApplication { - self.mpv = mpv - mpv_observe_property(mpv, 0, "duration", MPV_FORMAT_DOUBLE) - mpv_observe_property(mpv, 0, "time-pos", MPV_FORMAT_DOUBLE) - mpv_observe_property(mpv, 0, "speed", MPV_FORMAT_DOUBLE) - mpv_observe_property(mpv, 0, "pause", MPV_FORMAT_FLAG) - mpv_observe_property(mpv, 0, "media-title", MPV_FORMAT_STRING) - mpv_observe_property(mpv, 0, "chapter-metadata/title", MPV_FORMAT_STRING) - mpv_observe_property(mpv, 0, "metadata/by-key/album", MPV_FORMAT_STRING) - mpv_observe_property(mpv, 0, "metadata/by-key/artist", MPV_FORMAT_STRING) - mpv_set_wakeup_callback(mpv, wakeup, TypeHelper.bridge(obj: self)) - return - } - - mpv_destroy(mpv) + self.mpv = mpv + mpv_observe_property(mpv, 0, "duration", MPV_FORMAT_DOUBLE) + mpv_observe_property(mpv, 0, "time-pos", MPV_FORMAT_DOUBLE) + mpv_observe_property(mpv, 0, "speed", MPV_FORMAT_DOUBLE) + mpv_observe_property(mpv, 0, "pause", MPV_FORMAT_FLAG) + mpv_observe_property(mpv, 0, "media-title", MPV_FORMAT_STRING) + mpv_observe_property(mpv, 0, "chapter-metadata/title", MPV_FORMAT_STRING) + mpv_observe_property(mpv, 0, "metadata/by-key/album", MPV_FORMAT_STRING) + mpv_observe_property(mpv, 0, "metadata/by-key/artist", MPV_FORMAT_STRING) + event = EventHelper(mpv) } @objc func initInput(_ input: OpaquePointer?) { diff --git a/osdep/mac/application.m b/osdep/mac/application.m index 439a109b7e..946c276956 100644 --- a/osdep/mac/application.m +++ b/osdep/mac/application.m @@ -166,9 +166,6 @@ static const char mac_icon[] = #if HAVE_MACOS_TOUCHBAR [(TouchBar *)self.touchBar processEvent:event]; #endif - if (_cocoa_cb) { - [_cocoa_cb processEvent:event]; - } } - (void)initCocoaCb:(struct mpv_handle *)ctx diff --git a/video/out/cocoa_cb_common.swift b/video/out/cocoa_cb_common.swift index 7ac0f35096..3426ca6cf8 100644 --- a/video/out/cocoa_cb_common.swift +++ b/video/out/cocoa_cb_common.swift @@ -17,7 +17,7 @@ import Cocoa -class CocoaCB: Common { +class CocoaCB: Common, EventSubscriber { var libmpv: LibmpvHelper var layer: GLLayer? @@ -37,6 +37,7 @@ class CocoaCB: Common { libmpv = LibmpvHelper(mpvHandle, newlog) super.init(option, newlog) layer = GLLayer(cocoaCB: self) + AppHub.shared.event?.subscribe(self, event: .init(name: "MPV_EVENT_SHUTDOWN")) } func preinit(_ vo: UnsafeMutablePointer<vo>) { @@ -221,12 +222,7 @@ class CocoaCB: Common { } } - @objc func processEvent(_ event: UnsafePointer<mpv_event>) { - switch event.pointee.event_id { - case MPV_EVENT_SHUTDOWN: - shutdown() - default: - break - } + func handle(event: EventHelper.Event) { + if event.name == String(describing: MPV_EVENT_SHUTDOWN) { shutdown() } } } |