cocoa: don't create Dock icon for audio only files

fixes #635
This commit is contained in:
Stefano Pigozzi 2014-12-05 22:58:02 +01:00
parent 4ced724ffd
commit ed76d22b22
2 changed files with 25 additions and 17 deletions

View File

@ -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];

View File

@ -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;
}