From a4baa14604589df63243a32cd9ca97236eee4d4c Mon Sep 17 00:00:00 2001 From: Marvin Scholz Date: Thu, 22 Oct 2015 18:18:51 +0200 Subject: [PATCH] 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 --- modules/notify/osx_notifications.m | 37 +++++------------------------- 1 file changed, 6 insertions(+), 31 deletions(-) diff --git a/modules/notify/osx_notifications.m b/modules/notify/osx_notifications.m index 73bcd9ec70..6077f3a990 100644 --- a/modules/notify/osx_notifications.m +++ b/modules/notify/osx_notifications.m @@ -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