summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorder richter <der.richter@gmx.de>2024-02-10 00:17:06 +0100
committerder richter <der.richter@gmx.de>2024-02-15 00:11:55 +0100
commitc56be84675547bdb092177b581ba196574e9dee6 (patch)
tree50d5fc4a0dd56003f9643be158d0da096f7f5706
parent00efaeb4281d17b078a2830466698f7ca9774797 (diff)
downloadmpv-c56be84675547bdb092177b581ba196574e9dee6.tar.bz2
mpv-c56be84675547bdb092177b581ba196574e9dee6.tar.xz
mac/remote: add seek support
Fixes #11233
-rw-r--r--osdep/macos/remote_command_center.swift16
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: