From ed76d22b22084ad1bb3ba033ca7cca6f6b50a5a5 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Fri, 5 Dec 2014 22:58:02 +0100 Subject: cocoa: don't create Dock icon for audio only files fixes #635 --- osdep/macosx_application.m | 21 ++++----------------- video/out/cocoa_common.m | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/osdep/macosx_application.m b/osdep/macosx_application.m index b4631f9ea9..9efeeb274d 100644 --- a/osdep/macosx_application.m +++ b/osdep/macosx_application.m @@ -331,7 +331,10 @@ void init_cocoa_application(void) NSApp = mpv_shared_app(); [NSApp setDelegate:NSApp]; [NSApp initialize_menu]; - [NSApp setActivationPolicy:NSApplicationActivationPolicyRegular]; + + // Will be set to Regular from cocoa_common during UI creation so that we + // don't create an icon when playing audio only files. + [NSApp setActivationPolicy:NSApplicationActivationPolicyAccessory]; atexit_b(^{ // Because activation policy has just been set to behave like a real @@ -441,21 +444,6 @@ static bool bundle_started_from_finder(int argc, char **argv) } } -static const char macosx_icon[] = -#include "osdep/macosx_icon.inc" -; - -static void set_application_icon(NSApplication *app) -{ - NSData *icon_data = [NSData dataWithBytesNoCopy:(void *)macosx_icon - length:sizeof(macosx_icon) - freeWhenDone:NO]; - NSImage *icon = [[NSImage alloc] initWithData:icon_data]; - [app setApplicationIconImage:icon]; - [icon release]; - [icon_data release]; -} - void macosx_finder_args_preinit(int *argc, char ***argv) { Application *app = mpv_shared_app(); @@ -477,7 +465,6 @@ void macosx_finder_args_preinit(int *argc, char ***argv) *argc = cocoa_argc; *argv = cocoa_argv; } else { - set_application_icon(app); for (int i = 0; i < *argc; i++ ) { NSString *arg = [NSString stringWithUTF8String:(*argv)[i]]; [app.argumentsList addObject:arg]; diff --git a/video/out/cocoa_common.m b/video/out/cocoa_common.m index 76114a12eb..466f807cbf 100644 --- a/video/out/cocoa_common.m +++ b/video/out/cocoa_common.m @@ -144,6 +144,22 @@ static void disable_power_management(struct vo *vo) &s->power_mgmt_assertion); } +static const char macosx_icon[] = +#include "osdep/macosx_icon.inc" +; + +static void set_application_icon(NSApplication *app) +{ + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSData *icon_data = [NSData dataWithBytesNoCopy:(void *)macosx_icon + length:sizeof(macosx_icon) + freeWhenDone:NO]; + NSImage *icon = [[NSImage alloc] initWithData:icon_data]; + [app setApplicationIconImage:icon]; + [icon release]; + [pool release]; +} + int vo_cocoa_init(struct vo *vo) { struct vo_cocoa_state *s = talloc_zero(vo, struct vo_cocoa_state); @@ -196,6 +212,8 @@ void vo_cocoa_uninit(struct vo *vo) [s->view removeFromSuperview]; [s->view release]; if (s->window) [s->window release]; + + [NSApp setActivationPolicy:NSApplicationActivationPolicyAccessory]; }); } @@ -453,6 +471,9 @@ int vo_cocoa_config_window(struct vo *vo, uint32_t flags, void *gl_ctx) // reconfiguration code. s->pending_events |= VO_EVENT_RESIZE; }); + + [NSApp setActivationPolicy:NSApplicationActivationPolicyRegular]; + set_application_icon(NSApp); return 0; } -- cgit v1.2.3