summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--osdep/macosx_application.h1
-rw-r--r--osdep/macosx_application.m23
-rw-r--r--osdep/macosx_application_objc.h2
-rw-r--r--player/main-fn-unix.c4
-rw-r--r--video/out/cocoa_common.m8
-rw-r--r--wscript6
-rw-r--r--wscript_build.py2
7 files changed, 20 insertions, 26 deletions
diff --git a/osdep/macosx_application.h b/osdep/macosx_application.h
index 8202093aed..c48d1154a0 100644
--- a/osdep/macosx_application.h
+++ b/osdep/macosx_application.h
@@ -32,6 +32,5 @@ typedef enum {
// multithreaded wrapper for mpv_main
int cocoa_main(mpv_main_fn mpv_main, int argc, char *argv[]);
void cocoa_register_menu_item_action(MPMenuKey key, void* action);
-void terminate_cocoa_application(void);
#endif /* MPV_MACOSX_APPLICATION */
diff --git a/osdep/macosx_application.m b/osdep/macosx_application.m
index 3691e922a5..2ff3386f76 100644
--- a/osdep/macosx_application.m
+++ b/osdep/macosx_application.m
@@ -29,6 +29,10 @@
#define MPV_PROTOCOL @"mpv://"
+// Whether the NSApplication singleton was created. If this is false, we are
+// running in libmpv mode, and cocoa_main() was never called.
+static bool application_instantiated;
+
static pthread_t playback_thread_id;
@interface Application ()
@@ -53,11 +57,17 @@ static pthread_t playback_thread_id;
- (void)setAppleMenu:(NSMenu *)aMenu;
@end
-Application *mpv_shared_app(void)
+static Application *mpv_shared_app(void)
{
return (Application *)[Application sharedApplication];
}
+static void terminate_cocoa_application(void)
+{
+ [NSApp hide:NSApp];
+ [NSApp terminate:NSApp];
+}
+
@implementation Application
@synthesize menuItems = _menu_items;
@synthesize openCount = _open_count;
@@ -247,12 +257,6 @@ struct playback_thread_ctx {
char ***argv;
};
-void terminate_cocoa_application(void)
-{
- [NSApp hide:NSApp];
- [NSApp terminate:NSApp];
-}
-
static void cocoa_run_runloop(void)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
@@ -274,7 +278,8 @@ static void *playback_thread(void *ctx_obj)
void cocoa_register_menu_item_action(MPMenuKey key, void* action)
{
- [NSApp registerSelector:(SEL)action forKey:key];
+ if (application_instantiated)
+ [NSApp registerSelector:(SEL)action forKey:key];
}
static void init_cocoa_application(bool regular)
@@ -359,6 +364,8 @@ static bool bundle_started_from_finder(int argc, char **argv)
int cocoa_main(mpv_main_fn mpv_main, int argc, char *argv[])
{
@autoreleasepool {
+ application_instantiated = true;
+
struct playback_thread_ctx ctx = {0};
ctx.mpv_main = mpv_main;
ctx.argc = &argc;
diff --git a/osdep/macosx_application_objc.h b/osdep/macosx_application_objc.h
index 0f18952c7e..4741a14a64 100644
--- a/osdep/macosx_application_objc.h
+++ b/osdep/macosx_application_objc.h
@@ -27,5 +27,3 @@
@property(nonatomic, retain) NSArray *files;
@property(nonatomic, assign) size_t openCount;
@end
-
-Application *mpv_shared_app(void);
diff --git a/player/main-fn-unix.c b/player/main-fn-unix.c
index 23a047b4dc..87e1681987 100644
--- a/player/main-fn-unix.c
+++ b/player/main-fn-unix.c
@@ -1,13 +1,13 @@
#include "config.h"
#include "core.h"
-#if HAVE_COCOA_APPLICATION
+#if HAVE_COCOA
#include "osdep/macosx_application.h"
#endif
int main(int argc, char *argv[])
{
-#if HAVE_COCOA_APPLICATION
+#if HAVE_COCOA
return cocoa_main(mpv_main, argc, argv);
#else
return mpv_main(argc, argv);
diff --git a/video/out/cocoa_common.m b/video/out/cocoa_common.m
index 8a0473e729..e9c33d6f60 100644
--- a/video/out/cocoa_common.m
+++ b/video/out/cocoa_common.m
@@ -35,10 +35,8 @@
#include "config.h"
-#if HAVE_COCOA_APPLICATION
-# include "osdep/macosx_application.h"
-# include "osdep/macosx_application_objc.h"
-#endif
+#include "osdep/macosx_application.h"
+#include "osdep/macosx_application_objc.h"
#include "options/options.h"
#include "video/out/vo.h"
@@ -462,13 +460,11 @@ static void create_ui(struct vo *vo, struct mp_rect *win, int geo_flags)
[view signalMousePosition];
s->adapter = adapter;
-#if HAVE_COCOA_APPLICATION
cocoa_register_menu_item_action(MPM_H_SIZE, @selector(halfSize));
cocoa_register_menu_item_action(MPM_N_SIZE, @selector(normalSize));
cocoa_register_menu_item_action(MPM_D_SIZE, @selector(doubleSize));
cocoa_register_menu_item_action(MPM_MINIMIZE, @selector(performMiniaturize:));
cocoa_register_menu_item_action(MPM_ZOOM, @selector(performZoom:));
-#endif
s->video = [[MpvVideoView alloc] initWithFrame:[s->view bounds]];
[s->video setWantsBestResolutionOpenGLSurface:YES];
diff --git a/wscript b/wscript
index 56f03202c1..0bf62e983c 100644
--- a/wscript
+++ b/wscript
@@ -770,12 +770,6 @@ standalone_features = [
'deps_any': [ 'os-win32', 'os-cygwin'],
'func': check_ctx_vars('WINDRES')
}, {
- 'name': 'cocoa-application',
- 'desc': 'standalone Cocoa application',
- 'deps': [ 'cocoa' ],
- 'deps_neg': [ 'libmpv-shared', 'libmpv-static' ],
- 'func': check_true
- }, {
'name': '--apple-remote',
'desc': 'Apple Remote support',
'deps': [ 'cocoa' ],
diff --git a/wscript_build.py b/wscript_build.py
index e2d1562d5b..89ec67c471 100644
--- a/wscript_build.py
+++ b/wscript_build.py
@@ -373,7 +373,7 @@ def build(ctx):
( "osdep/threads.c" ),
( "osdep/ar/HIDRemote.m", "apple-remote" ),
- ( "osdep/macosx_application.m", "cocoa-application" ),
+ ( "osdep/macosx_application.m", "cocoa" ),
( "osdep/macosx_events.m", "cocoa" ),
( "osdep/semaphore_osx.c" ),
( "osdep/subprocess.c" ),