summaryrefslogtreecommitdiffstats
path: root/osdep
diff options
context:
space:
mode:
Diffstat (limited to 'osdep')
-rw-r--r--osdep/macos/mpv_helper.swift41
-rw-r--r--osdep/macos/swift_extensions.swift7
-rw-r--r--osdep/macosx_application.m5
-rw-r--r--osdep/macosx_application_objc.h1
4 files changed, 49 insertions, 5 deletions
diff --git a/osdep/macos/mpv_helper.swift b/osdep/macos/mpv_helper.swift
index ce1fb5ffec..5e97470a09 100644
--- a/osdep/macos/mpv_helper.swift
+++ b/osdep/macos/mpv_helper.swift
@@ -20,24 +20,41 @@ import Cocoa
class MPVHelper: LogHelper {
var vo: UnsafeMutablePointer<vo>
+ var optsCachePtr: UnsafeMutablePointer<m_config_cache>
+ var optsPtr: UnsafeMutablePointer<mp_vo_opts>
+
+ // these computed properties return a local copy of the struct accessed:
+ // - don't use if you rely on the pointers
+ // - only for reading
var vout: vo { get { return vo.pointee } }
- var opts: mp_vo_opts { get { return vout.opts.pointee } }
+ var optsCache: m_config_cache { get { return optsCachePtr.pointee } }
+ var opts: mp_vo_opts { get { return optsPtr.pointee } }
+
var input: OpaquePointer { get { return vout.input_ctx } }
var macOpts: macos_opts = macos_opts()
init(_ vo: UnsafeMutablePointer<vo>, _ name: String) {
self.vo = vo
+
+ guard let app = NSApp as? Application,
+ let cache = m_config_cache_alloc(vo, vo.pointee.global, app.getVoSubConf()) else
+ {
+ print("NSApp couldn't be retrieved")
+ exit(1)
+ }
+
let newlog = mp_log_new(vo, vo.pointee.log, name)
+ optsCachePtr = cache
+ optsPtr = UnsafeMutablePointer<mp_vo_opts>(OpaquePointer(cache.pointee.opts))
super.init(newlog)
- guard let app = NSApp as? Application,
- let ptr = mp_get_config_group(vo,
+ guard let ptr = mp_get_config_group(vo,
vo.pointee.global,
app.getMacOSConf()) else
{
- sendError("macOS config group couldn't be retrieved'")
- exit(1)
+ // will never be hit, mp_get_config_group asserts for invalid groups
+ return
}
macOpts = UnsafeMutablePointer<macos_opts>(OpaquePointer(ptr)).pointee
}
@@ -59,6 +76,20 @@ class MPVHelper: LogHelper {
mp_input_put_wheel(input, mpkey, delta)
}
+ func nextChangedConfig(property: inout UnsafeMutableRawPointer?) -> Bool {
+ return m_config_cache_get_next_changed(optsCachePtr, &property)
+ }
+
+ func setConfigProperty(fullscreen: Bool) {
+ optsPtr.pointee.fullscreen = Int32(fullscreen)
+ m_config_cache_write_opt(optsCachePtr, UnsafeMutableRawPointer(&optsPtr.pointee.fullscreen))
+ }
+
+ func setConfigProperty(minimized: Bool) {
+ optsPtr.pointee.window_minimized = Int32(minimized)
+ m_config_cache_write_opt(optsCachePtr, UnsafeMutableRawPointer(&optsPtr.pointee.window_minimized))
+ }
+
func command(_ cmd: String) {
let cCmd = UnsafePointer<Int8>(strdup(cmd))
let mpvCmd = mp_input_parse_cmd(input, bstr0(cCmd), "")
diff --git a/osdep/macos/swift_extensions.swift b/osdep/macos/swift_extensions.swift
index c48ad6e798..a1aeb0abf7 100644
--- a/osdep/macos/swift_extensions.swift
+++ b/osdep/macos/swift_extensions.swift
@@ -80,3 +80,10 @@ extension Bool {
self.init(int32 != 0)
}
}
+
+extension Int32 {
+
+ init(_ bool: Bool) {
+ self.init(bool ? 1 : 0)
+ }
+}
diff --git a/osdep/macosx_application.m b/osdep/macosx_application.m
index a07f4f5db9..8b3fac95a4 100644
--- a/osdep/macosx_application.m
+++ b/osdep/macosx_application.m
@@ -189,6 +189,11 @@ static const char macosx_icon[] =
return &macos_conf;
}
+- (const struct m_sub_options *)getVoSubConf
+{
+ return &vo_sub_opts;
+}
+
- (void)queueCommand:(char *)cmd
{
[_eventsResponder queueCommand:cmd];
diff --git a/osdep/macosx_application_objc.h b/osdep/macosx_application_objc.h
index 1685c99ba8..11959a83ea 100644
--- a/osdep/macosx_application_objc.h
+++ b/osdep/macosx_application_objc.h
@@ -32,6 +32,7 @@ struct mpv_handle;
- (void)openFiles:(NSArray *)filenames;
- (void)setMpvHandle:(struct mpv_handle *)ctx;
- (const struct m_sub_options *)getMacOSConf;
+- (const struct m_sub_options *)getVoSubConf;
@property(nonatomic, retain) MenuBar *menuBar;
@property(nonatomic, assign) size_t openCount;