From 0bc8fad1d98623b2d7a532e50ec838f384447373 Mon Sep 17 00:00:00 2001 From: der richter Date: Thu, 23 Nov 2023 17:44:02 +0100 Subject: [PATCH] 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 8b1c697da2be1..572b250980afc 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 3b2a7162cb83b..6e5a80dc89e67 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 73503ad66c4ed..1a1c6aefc07e8 100644 --- a/osdep/macosx_application.m +++ b/osdep/macosx_application.m @@ -190,12 +190,12 @@ - (void)setMpvHandle:(struct mpv_handle *)ctx #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 11959a83eaf12..fab968dba8212 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;