diff options
author | der richter <der.richter@gmx.de> | 2024-02-10 00:17:06 +0100 |
---|---|---|
committer | der richter <der.richter@gmx.de> | 2024-02-15 00:11:55 +0100 |
commit | c56be84675547bdb092177b581ba196574e9dee6 (patch) | |
tree | 50d5fc4a0dd56003f9643be158d0da096f7f5706 /osdep/macos | |
parent | 00efaeb4281d17b078a2830466698f7ca9774797 (diff) | |
download | mpv-c56be84675547bdb092177b581ba196574e9dee6.tar.bz2 mpv-c56be84675547bdb092177b581ba196574e9dee6.tar.xz |
mac/remote: add seek support
Fixes #11233
Diffstat (limited to 'osdep/macos')
-rw-r--r-- | osdep/macos/remote_command_center.swift | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/osdep/macos/remote_command_center.swift b/osdep/macos/remote_command_center.swift index 77d2efea8f..7a2d40f2aa 100644 --- a/osdep/macos/remote_command_center.swift +++ b/osdep/macos/remote_command_center.swift @@ -31,7 +31,7 @@ extension RemoteCommandCenter { var state: UInt32 = 0 let handler: ConfigHandler - init(key: Int32, type: KeyType = .normal, handler: @escaping ConfigHandler = { event in return .commandFailed }) { + init(key: Int32 = 0, type: KeyType = .normal, handler: @escaping ConfigHandler = { event in return .commandFailed }) { self.key = key self.type = type self.handler = handler @@ -70,6 +70,7 @@ class RemoteCommandCenter: NSObject { commandCenter.togglePlayPauseCommand: Config(key: MP_KEY_PLAY, handler: keyHandler), commandCenter.seekForwardCommand: Config(key: MP_KEY_FORWARD, type: .repeatable, handler: keyHandler), commandCenter.seekBackwardCommand: Config(key: MP_KEY_REWIND, type: .repeatable, handler: keyHandler), + commandCenter.changePlaybackPositionCommand: Config(handler: seekHandler), ] disabledCommands = [ @@ -78,7 +79,6 @@ class RemoteCommandCenter: NSObject { commandCenter.changeShuffleModeCommand, commandCenter.skipForwardCommand, commandCenter.skipBackwardCommand, - commandCenter.changePlaybackPositionCommand, commandCenter.enableLanguageOptionCommand, commandCenter.disableLanguageOptionCommand, commandCenter.ratingCommand, @@ -166,6 +166,18 @@ class RemoteCommandCenter: NSObject { return .success } + lazy var seekHandler: ConfigHandler = { event in + guard let posEvent = event as? MPChangePlaybackPositionCommandEvent else { + return .commandFailed + } + + let success = String(format: "seek %.02f absolute", posEvent.positionTime).withCString { + EventsResponder.sharedInstance().queueCommand(UnsafeMutablePointer<Int8>(mutating: $0)) + } + + return success ? .success : .commandFailed + } + @objc func processEvent(_ event: UnsafeMutablePointer<mpv_event>) { switch event.pointee.event_id { case MPV_EVENT_PROPERTY_CHANGE: |