osx_notifications: Show notification only if VLC in background, cleanup

This cleans up unnecessary code which could be replaced by a much simple
check to determine if VLC is in foreground or not.
Add a missing release.

Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
This commit is contained in:
Marvin Scholz 2015-10-22 18:18:51 +02:00 committed by Jean-Baptiste Kempf
parent 13747555fd
commit a4baa14604
1 changed files with 6 additions and 31 deletions

View File

@ -86,7 +86,6 @@
NSString *notificationType;
NSMutableDictionary *registrationDictionary;
id lastNotification;
BOOL isInForeground;
intf_thread_t *interfaceThread;
}
@ -289,21 +288,6 @@ static int ItemChange( vlc_object_t *p_this, const char *psz_var,
registrationDictionary = nil;
interfaceThread = thread;
// Assume we start in foreground
isInForeground = YES;
// Subscribe to notifications to determine if VLC is in foreground or not
@autoreleasepool {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationActiveChange:)
name:NSApplicationDidBecomeActiveNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationActiveChange:)
name:NSApplicationDidResignActiveNotification
object:nil];
}
return self;
}
@ -317,7 +301,6 @@ static int ItemChange( vlc_object_t *p_this, const char *psz_var,
removeDeliveredNotification:(NSUserNotification *)lastNotification];
[lastNotification release];
}
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
#endif
@ -356,6 +339,10 @@ static int ItemChange( vlc_object_t *p_this, const char *psz_var,
andArtUrl:(const char *)url
{
@autoreleasepool {
// Do not notify if in foreground
if ([NSApplication sharedApplication].active)
return;
// Init Cover
NSData *coverImageData = nil;
NSImage *coverImage = nil;
@ -375,6 +362,7 @@ static int ItemChange( vlc_object_t *p_this, const char *psz_var,
} else {
// Without title, notification makes no sense, so return here
// title should never be empty, but better check than crash.
[coverImage release];
return;
}
if (artist)
@ -447,17 +435,11 @@ static int ItemChange( vlc_object_t *p_this, const char *psz_var,
return applicationName;
}
- (void)applicationActiveChange:(NSNotification *)n {
if (n.name == NSApplicationDidBecomeActiveNotification)
isInForeground = YES;
else if (n.name == NSApplicationDidResignActiveNotification)
isInForeground = NO;
}
#if __MAC_OS_X_VERSION_MAX_ALLOWED >= 1080
- (void)userNotificationCenter:(NSUserNotificationCenter *)center
didActivateNotification:(NSUserNotification *)notification
{
// Skip to next song
if (notification.activationType == NSUserNotificationActivationTypeActionButtonClicked) {
playlist_Next(pl_Get(interfaceThread));
}
@ -474,12 +456,5 @@ static int ItemChange( vlc_object_t *p_this, const char *psz_var,
[notification retain];
lastNotification = notification;
}
- (BOOL)userNotificationCenter:(NSUserNotificationCenter *)center
shouldPresentNotification:(NSUserNotification *)notification
{
// Show notifications regardless if App in foreground or background
return YES;
}
#endif
@end