From 3f2bc2e5355e7588585de3f74b224947e89ce256 Mon Sep 17 00:00:00 2001 From: der richter Date: Thu, 23 Nov 2023 17:44:02 +0100 Subject: mac: fix libmpv usage without embedding NSApp is only an Application when initialised from mpv itself. when used via libmpv an Application is never initialised and mpv would always immediately exit. make the retrieval of the vo and mac options static so they can be retrieved in all cases. Fixes #12518 --- osdep/macos/libmpv_helper.swift | 6 ++---- osdep/macos/mpv_helper.swift | 15 +++------------ osdep/macosx_application.m | 4 ++-- osdep/macosx_application_objc.h | 4 ++-- 4 files changed, 9 insertions(+), 20 deletions(-) diff --git a/osdep/macos/libmpv_helper.swift b/osdep/macos/libmpv_helper.swift index 8b1c697da2..572b250980 100644 --- a/osdep/macos/libmpv_helper.swift +++ b/osdep/macos/libmpv_helper.swift @@ -34,10 +34,8 @@ class LibmpvHelper { mpvHandle = mpv log = LogHelper(mpLog) - guard let app = NSApp as? Application, - let ptr = mp_get_config_group(nil, - mp_client_get_global(mpvHandle), - app.getMacOSConf()) else + let global = mp_client_get_global(mpvHandle) + guard let ptr = mp_get_config_group(nil, global, Application.getMacOSConf()) else { log.sendError("macOS config group couldn't be retrieved'") exit(1) diff --git a/osdep/macos/mpv_helper.swift b/osdep/macos/mpv_helper.swift index 3b2a7162cb..6e5a80dc89 100644 --- a/osdep/macos/mpv_helper.swift +++ b/osdep/macos/mpv_helper.swift @@ -42,23 +42,14 @@ class MPVHelper { self.vo = vo self.log = log - guard let app = NSApp as? Application, - let cache = m_config_cache_alloc(vo, vo.pointee.global, app.getVoSubConf()) else + guard let cache = m_config_cache_alloc(vo, vo.pointee.global, Application.getVoSubConf()), + let macCache = m_config_cache_alloc(vo, vo.pointee.global, Application.getMacOSConf()) else { - log.sendError("NSApp couldn't be retrieved") + // will never be hit, mp_get_config_group asserts for invalid groups exit(1) } - optsCachePtr = cache optsPtr = UnsafeMutablePointer(OpaquePointer(cache.pointee.opts)) - - 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 - exit(1) - } macOptsCachePtr = macCache macOptsPtr = UnsafeMutablePointer(OpaquePointer(macCache.pointee.opts)) } diff --git a/osdep/macosx_application.m b/osdep/macosx_application.m index 73503ad66c..1a1c6aefc0 100644 --- a/osdep/macosx_application.m +++ b/osdep/macosx_application.m @@ -190,12 +190,12 @@ static const char macosx_icon[] = #endif } -- (const struct m_sub_options *)getMacOSConf ++ (const struct m_sub_options *)getMacOSConf { return &macos_conf; } -- (const struct m_sub_options *)getVoSubConf ++ (const struct m_sub_options *)getVoSubConf { return &vo_sub_opts; } diff --git a/osdep/macosx_application_objc.h b/osdep/macosx_application_objc.h index 11959a83ea..fab968dba8 100644 --- a/osdep/macosx_application_objc.h +++ b/osdep/macosx_application_objc.h @@ -31,8 +31,8 @@ struct mpv_handle; - (void)stopMPV:(char *)cmd; - (void)openFiles:(NSArray *)filenames; - (void)setMpvHandle:(struct mpv_handle *)ctx; -- (const struct m_sub_options *)getMacOSConf; -- (const struct m_sub_options *)getVoSubConf; ++ (const struct m_sub_options *)getMacOSConf; ++ (const struct m_sub_options *)getVoSubConf; @property(nonatomic, retain) MenuBar *menuBar; @property(nonatomic, assign) size_t openCount; -- cgit v1.2.3