Skip to content

Commit

Permalink
mac: fix libmpv usage without embedding
Browse files Browse the repository at this point in the history
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 mpv-player#12518
  • Loading branch information
Akemi authored and xrun1 committed Mar 12, 2024
1 parent 560a9f3 commit 0bc8fad
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 20 deletions.
6 changes: 2 additions & 4 deletions osdep/macos/libmpv_helper.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
15 changes: 3 additions & 12 deletions osdep/macos/mpv_helper.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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<mp_vo_opts>(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<macos_opts>(OpaquePointer(macCache.pointee.opts))
}
Expand Down
4 changes: 2 additions & 2 deletions osdep/macosx_application.m
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down
4 changes: 2 additions & 2 deletions osdep/macosx_application_objc.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit 0bc8fad

Please sign in to comment.