vlc | branch: master | Felix Paul Kühne <fe...@feepk.net> | Wed Sep 11 18:16:50 2019 +0200| [58c32b742205cfce1cbb272b1b6d94c5e16c0b17] | committer: Felix Paul Kühne
macosx/main: clean-up and refactoring by moving things not belonging there > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=58c32b742205cfce1cbb272b1b6d94c5e16c0b17 --- modules/gui/macosx/main/VLCMain.m | 82 +++++----------------- modules/gui/macosx/playlist/VLCPlayerController.m | 24 +++++++ .../gui/macosx/playlist/VLCPlaylistController.m | 26 +++++++ 3 files changed, 68 insertions(+), 64 deletions(-) diff --git a/modules/gui/macosx/main/VLCMain.m b/modules/gui/macosx/main/VLCMain.m index 85468ca789..0353925837 100644 --- a/modules/gui/macosx/main/VLCMain.m +++ b/modules/gui/macosx/main/VLCMain.m @@ -94,10 +94,8 @@ NSString *VLCConfigurationChangedNotification = @"VLCConfigurationChangedNotific <NSApplicationDelegate> #endif { - intf_thread_t *p_intf; - BOOL launched; - - BOOL b_active_videoplayback; + intf_thread_t *_p_intf; + BOOL _launched; VLCMainMenu *_mainmenu; VLCPrefs *_prefs; @@ -115,7 +113,7 @@ NSString *VLCConfigurationChangedNotification = @"VLCConfigurationChangedNotific VLCLibraryWindowController *_libraryWindowController; VLCClickerManager *_clickerManager; - bool b_intf_terminating; /* Makes sure applicationWillTerminate will be called only once */ + bool _interfaceIsTerminating; /* Makes sure applicationWillTerminate will be called only once */ } + (void)killInstance; - (void)applicationWillTerminate:(NSNotification *)notification; @@ -167,22 +165,6 @@ void CloseIntf (vlc_object_t *p_this) p_interface_thread = nil; } -#pragma mark - -#pragma mark Variables Callback - -static int BossCallback(vlc_object_t *p_this, const char *psz_var, - vlc_value_t oldval, vlc_value_t new_val, void *param) -{ - @autoreleasepool { - dispatch_async(dispatch_get_main_queue(), ^{ - [[[VLCMain sharedInstance] playlistController] pausePlayback]; - [[NSApplication sharedApplication] hide:nil]; - }); - - return VLC_SUCCESS; - } -} - /***************************************************************************** * VLCMain implementation *****************************************************************************/ @@ -223,11 +205,12 @@ static VLCMain *sharedInstance = nil; { self = [super init]; if (self) { - p_intf = getIntf(); + _p_intf = getIntf(); - [VLCApplication sharedApplication].delegate = self; + VLCApplication *sharedApplication = [VLCApplication sharedApplication]; + sharedApplication.delegate = self; - _playlistController = [[VLCPlaylistController alloc] initWithPlaylist:vlc_intf_GetMainPlaylist(p_intf)]; + _playlistController = [[VLCPlaylistController alloc] initWithPlaylist:vlc_intf_GetMainPlaylist(_p_intf)]; _libraryController = [[VLCLibraryController alloc] init]; _continuityController = [[VLCPlaybackContinuityController alloc] init]; @@ -243,9 +226,6 @@ static VLCMain *sharedInstance = nil; _libraryWindowController = [[VLCLibraryWindowController alloc] initWithLibraryWindow]; - libvlc_int_t *libvlc = vlc_object_instance(p_intf); - var_AddCallback(libvlc, "intf-boss", BossCallback, (__bridge void *)self); - // Load them here already to apply stored profiles _videoEffectsPanel = [[VLCVideoEffectsWindowController alloc] init]; _audioEffectsPanel = [[VLCAudioEffectsWindowController alloc] init]; @@ -253,7 +233,7 @@ static VLCMain *sharedInstance = nil; if ([NSApp currentSystemPresentationOptions] & NSApplicationPresentationFullScreen) [_playlistController.playerController setFullscreen:YES]; - if (var_InheritInteger(p_intf, "macosx-icon-change")) { + if (var_InheritInteger(_p_intf, "macosx-icon-change")) { /* After day 354 of the year, the usual VLC cone is replaced by another cone * wearing a Father Xmas hat. * Note: this icon doesn't represent an endorsement of The Coca-Cola Company. @@ -263,9 +243,9 @@ static VLCMain *sharedInstance = nil; NSUInteger dayOfYear = [gregorian ordinalityOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitYear forDate:[NSDate date]]; if (dayOfYear >= 354) - [[VLCApplication sharedApplication] setApplicationIconImage: [NSImage imageNamed:@"VLC-Xmas"]]; + [sharedApplication setApplicationIconImage: [NSImage imageNamed:@"VLC-Xmas"]]; else - [[VLCApplication sharedApplication] setApplicationIconImage: [NSImage imageNamed:@"VLC"]]; + [sharedApplication setApplicationIconImage: [NSImage imageNamed:@"VLC"]]; } } @@ -285,24 +265,13 @@ static VLCMain *sharedInstance = nil; - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { - launched = YES; + _launched = YES; [_libraryWindowController.window makeKeyAndOrderFront:nil]; - if (!p_intf) + if (!_p_intf) return; [self migrateOldPreferences]; - - /* Handle sleep notification */ - [[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self selector:@selector(computerWillSleep:) - name:NSWorkspaceWillSleepNotification object:nil]; - - // respect playlist-autostart - if (var_GetBool(p_intf, "playlist-autostart")) { - if ([_playlistController.playlistModel numberOfPlaylistItems] > 0) { - [_playlistController startPlaylist]; - } - } } #pragma mark - @@ -310,30 +279,24 @@ static VLCMain *sharedInstance = nil; - (BOOL)isTerminating { - return b_intf_terminating; + return _interfaceIsTerminating; } - (void)applicationWillTerminate:(NSNotification *)notification { - msg_Dbg(getIntf(), "applicationWillTerminate called"); - if (b_intf_terminating) + if (_interfaceIsTerminating) return; - b_intf_terminating = true; - NSNotificationCenter *notiticationCenter = [NSNotificationCenter defaultCenter]; - - _continuityController = nil; + _interfaceIsTerminating = true; + NSNotificationCenter *notiticationCenter = [NSNotificationCenter defaultCenter]; if (notification == nil) { [notiticationCenter postNotificationName: NSApplicationWillTerminateNotification object: nil]; } - - libvlc_int_t *libvlc = vlc_object_instance(p_intf); - var_DelCallback(libvlc, "intf-boss", BossCallback, (__bridge void *)self); - [notiticationCenter removeObserver: self]; // closes all open vouts _voutProvider = nil; + _continuityController = nil; /* write cached user defaults to disk */ CFPreferencesAppSynchronize(kCFPreferencesCurrentApplication); @@ -361,15 +324,6 @@ static VLCMain *sharedInstance = nil; #endif #pragma mark - -#pragma mark Other notification - -/* Triggered when the computer goes to sleep */ -- (void)computerWillSleep: (NSNotification *)notification -{ - [_playlistController pausePlayback]; -} - -#pragma mark - #pragma mark File opening over dock icon - (void)application:(NSApplication *)o_app openFiles:(NSArray *)o_names @@ -379,7 +333,7 @@ static VLCMain *sharedInstance = nil; // will add the item, but cocoa also calls this function. In this case, the // invocation is ignored here. NSArray *resultItems = o_names; - if (launched == NO) { + if (_launched == NO) { NSArray *launchArgs = [[NSProcessInfo processInfo] arguments]; if (launchArgs) { diff --git a/modules/gui/macosx/playlist/VLCPlayerController.m b/modules/gui/macosx/playlist/VLCPlayerController.m index 05a626befa..f9cf0c6854 100644 --- a/modules/gui/macosx/playlist/VLCPlayerController.m +++ b/modules/gui/macosx/playlist/VLCPlayerController.m @@ -555,6 +555,23 @@ static const struct vlc_player_aout_cbs player_aout_callbacks = { NULL, }; +static int BossCallback(vlc_object_t *p_this, + const char *psz_var, + vlc_value_t oldval, + vlc_value_t new_val, + void *p_data) +{ + VLC_UNUSED(p_this); VLC_UNUSED(psz_var); VLC_UNUSED(oldval); VLC_UNUSED(new_val); + @autoreleasepool { + dispatch_async(dispatch_get_main_queue(), ^{ + VLCPlayerController *playerController = (__bridge VLCPlayerController *)p_data; + [playerController pause]; + [[NSApplication sharedApplication] hide:nil]; + }); + return VLC_SUCCESS; + } +} + #pragma mark - controller initialization @implementation VLCPlayerController @@ -583,6 +600,10 @@ static const struct vlc_player_aout_cbs player_aout_callbacks = { _playerVoutListenerID = vlc_player_vout_AddListener(_p_player, &player_vout_callbacks, (__bridge void *)self); + + libvlc_int_t *libvlc = vlc_object_instance(getIntf()); + var_AddCallback(libvlc, "intf-boss", BossCallback, (__bridge void *)self); + if (@available(macOS 10.12.2, *)) { _remoteControlService = [[VLCRemoteControlService alloc] init]; [_remoteControlService subscribeToRemoteCommands]; @@ -594,6 +615,9 @@ static const struct vlc_player_aout_cbs player_aout_callbacks = { - (void)applicationWillTerminate:(NSNotification *)aNotification { + libvlc_int_t *libvlc = vlc_object_instance(getIntf()); + var_DelCallback(libvlc, "intf-boss", BossCallback, (__bridge void *)self); + [self onPlaybackHasTruelyEnded:nil]; if (@available(macOS 10.12.2, *)) { [_remoteControlService unsubscribeFromRemoteCommands]; diff --git a/modules/gui/macosx/playlist/VLCPlaylistController.m b/modules/gui/macosx/playlist/VLCPlaylistController.m index ba145fd469..13bfa3ae87 100644 --- a/modules/gui/macosx/playlist/VLCPlaylistController.m +++ b/modules/gui/macosx/playlist/VLCPlaylistController.m @@ -207,6 +207,10 @@ static const struct vlc_playlist_callbacks playlist_callbacks = { selector:@selector(applicationWillTerminate:) name:NSApplicationWillTerminateNotification object:nil]; + [_defaultNotificationCenter addObserver:self + selector:@selector(applicationDidFinishLaunching:) + name:NSApplicationDidFinishLaunchingNotification + object:nil]; _p_playlist = playlist; /* set initial values, further updates through callbacks */ @@ -226,6 +230,22 @@ static const struct vlc_playlist_callbacks playlist_callbacks = { return self; } +- (void)applicationDidFinishLaunching:(NSNotification *)aNotification +{ + /* Handle sleep notification */ + [[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self + selector:@selector(computerWillSleep:) + name:NSWorkspaceWillSleepNotification + object:nil]; + + // respect playlist-autostart + if (var_GetBool(getIntf(), "playlist-autostart")) { + if ([self.playlistModel numberOfPlaylistItems] > 0) { + [self startPlaylist]; + } + } +} + - (void)applicationWillTerminate:(NSNotification *)aNotification { if (_p_playlist) { @@ -237,8 +257,14 @@ static const struct vlc_playlist_callbacks playlist_callbacks = { } } +- (void)computerWillSleep:(NSNotification *)notification +{ + [self pausePlayback]; +} + - (void)dealloc { + [[[NSWorkspace sharedWorkspace] notificationCenter] removeObserver:self]; [_defaultNotificationCenter removeObserver:self]; } _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits