diff options
Diffstat (limited to 'osdep/macos/mpv_helper.swift')
-rw-r--r-- | osdep/macos/mpv_helper.swift | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/osdep/macos/mpv_helper.swift b/osdep/macos/mpv_helper.swift index 8a05f26cb1..0e207b994b 100644 --- a/osdep/macos/mpv_helper.swift +++ b/osdep/macos/mpv_helper.swift @@ -17,11 +17,15 @@ import Cocoa +typealias swift_wakeup_cb_fn = (@convention(c) (UnsafeMutableRawPointer?) -> Void)? + class MPVHelper { var log: LogHelper var vo: UnsafeMutablePointer<vo> var optsCachePtr: UnsafeMutablePointer<m_config_cache> var optsPtr: UnsafeMutablePointer<mp_vo_opts> + var macOptsCachePtr: UnsafeMutablePointer<m_config_cache> + var macOptsPtr: UnsafeMutablePointer<macos_opts> // these computed properties return a local copy of the struct accessed: // - don't use if you rely on the pointers @@ -29,9 +33,10 @@ class MPVHelper { var vout: vo { get { return vo.pointee } } var optsCache: m_config_cache { get { return optsCachePtr.pointee } } var opts: mp_vo_opts { get { return optsPtr.pointee } } + var macOptsCache: m_config_cache { get { return macOptsCachePtr.pointee } } + var macOpts: macos_opts { get { return macOptsPtr.pointee } } var input: OpaquePointer { get { return vout.input_ctx } } - var macOpts: macos_opts = macos_opts() init(_ vo: UnsafeMutablePointer<vo>, _ log: LogHelper) { self.vo = vo @@ -47,14 +52,15 @@ class MPVHelper { optsCachePtr = cache optsPtr = UnsafeMutablePointer<mp_vo_opts>(OpaquePointer(cache.pointee.opts)) - guard let ptr = mp_get_config_group(vo, - vo.pointee.global, - app.getMacOSConf()) else + guard let macCache = m_config_cache_alloc(vo, + vo.pointee.global, + app.getMacOSConf()) else { // will never be hit, mp_get_config_group asserts for invalid groups - return + exit(1) } - macOpts = UnsafeMutablePointer<macos_opts>(OpaquePointer(ptr)).pointee + macOptsCachePtr = macCache + macOptsPtr = UnsafeMutablePointer<macos_opts>(OpaquePointer(macCache.pointee.opts)) } func canBeDraggedAt(_ pos: NSPoint) -> Bool { @@ -74,25 +80,33 @@ class MPVHelper { mp_input_put_wheel(input, mpkey, delta) } - func nextChangedConfig(property: inout UnsafeMutableRawPointer?) -> Bool { + func nextChangedOption(property: inout UnsafeMutableRawPointer?) -> Bool { return m_config_cache_get_next_changed(optsCachePtr, &property) } - func setConfigProperty(fullscreen: Bool) { + func setOption(fullscreen: Bool) { optsPtr.pointee.fullscreen = fullscreen m_config_cache_write_opt(optsCachePtr, UnsafeMutableRawPointer(&optsPtr.pointee.fullscreen)) } - func setConfigProperty(minimized: Bool) { + func setOption(minimized: Bool) { optsPtr.pointee.window_minimized = Int32(minimized) m_config_cache_write_opt(optsCachePtr, UnsafeMutableRawPointer(&optsPtr.pointee.window_minimized)) } - func setConfigProperty(maximized: Bool) { + func setOption(maximized: Bool) { optsPtr.pointee.window_maximized = Int32(maximized) m_config_cache_write_opt(optsCachePtr, UnsafeMutableRawPointer(&optsPtr.pointee.window_maximized)) } + func setMacOptionCallback(_ callback: swift_wakeup_cb_fn, context object: AnyObject) { + m_config_cache_set_wakeup_cb(macOptsCachePtr, callback, MPVHelper.bridge(obj: object)) + } + + func nextChangedMacOption(property: inout UnsafeMutableRawPointer?) -> Bool { + return m_config_cache_get_next_changed(macOptsCachePtr, &property) + } + func command(_ cmd: String) { let cCmd = UnsafePointer<Int8>(strdup(cmd)) let mpvCmd = mp_input_parse_cmd(input, bstr0(cCmd), "") |