1
0
mirror of https://github.com/mpv-player/mpv synced 2025-02-12 18:07:12 +00:00

mac/remote: add seek support

Fixes #11233
This commit is contained in:
der richter 2024-02-10 00:17:06 +01:00
parent 00efaeb428
commit c56be84675

View File

@ -31,7 +31,7 @@ extension RemoteCommandCenter {
var state: UInt32 = 0 var state: UInt32 = 0
let handler: ConfigHandler 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.key = key
self.type = type self.type = type
self.handler = handler self.handler = handler
@ -70,6 +70,7 @@ class RemoteCommandCenter: NSObject {
commandCenter.togglePlayPauseCommand: Config(key: MP_KEY_PLAY, handler: keyHandler), commandCenter.togglePlayPauseCommand: Config(key: MP_KEY_PLAY, handler: keyHandler),
commandCenter.seekForwardCommand: Config(key: MP_KEY_FORWARD, type: .repeatable, 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.seekBackwardCommand: Config(key: MP_KEY_REWIND, type: .repeatable, handler: keyHandler),
commandCenter.changePlaybackPositionCommand: Config(handler: seekHandler),
] ]
disabledCommands = [ disabledCommands = [
@ -78,7 +79,6 @@ class RemoteCommandCenter: NSObject {
commandCenter.changeShuffleModeCommand, commandCenter.changeShuffleModeCommand,
commandCenter.skipForwardCommand, commandCenter.skipForwardCommand,
commandCenter.skipBackwardCommand, commandCenter.skipBackwardCommand,
commandCenter.changePlaybackPositionCommand,
commandCenter.enableLanguageOptionCommand, commandCenter.enableLanguageOptionCommand,
commandCenter.disableLanguageOptionCommand, commandCenter.disableLanguageOptionCommand,
commandCenter.ratingCommand, commandCenter.ratingCommand,
@ -166,6 +166,18 @@ class RemoteCommandCenter: NSObject {
return .success 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>) { @objc func processEvent(_ event: UnsafeMutablePointer<mpv_event>) {
switch event.pointee.event_id { switch event.pointee.event_id {
case MPV_EVENT_PROPERTY_CHANGE: case MPV_EVENT_PROPERTY_CHANGE: