vlc | branch: master | Felix Paul Kühne <fe...@feepk.net> | Tue Jun 11 12:08:45 2019 +0200| [883c17dd20d2865fa8c45a4b621109ef104e0902] | committer: Felix Paul Kühne
macosx: move show controller callbacks away from the main singleton > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=883c17dd20d2865fa8c45a4b621109ef104e0902 --- modules/gui/macosx/library/VLCLibraryWindow.m | 46 +++++++++++++++++++++- modules/gui/macosx/main/VLCMain.m | 32 --------------- .../macosx/windows/video/VLCVideoWindowCommon.h | 1 + .../macosx/windows/video/VLCVideoWindowCommon.m | 1 + 4 files changed, 47 insertions(+), 33 deletions(-) diff --git a/modules/gui/macosx/library/VLCLibraryWindow.m b/modules/gui/macosx/library/VLCLibraryWindow.m index 1b9409d179..f714ed9eb4 100644 --- a/modules/gui/macosx/library/VLCLibraryWindow.m +++ b/modules/gui/macosx/library/VLCLibraryWindow.m @@ -52,6 +52,7 @@ #import "windows/VLCOpenWindowController.h" #import "windows/VLCOpenInputMetadata.h" +#import <vlc_common.h> #import <vlc_url.h> const CGFloat VLCLibraryWindowMinimalWidth = 604.; @@ -81,6 +82,32 @@ const CGFloat VLCLibraryWindowDefaultPlaylistWidth = 340.; } @end +static int ShowFullscreenController(vlc_object_t *p_this, const char *psz_variable, + vlc_value_t old_val, vlc_value_t new_val, void *param) +{ + @autoreleasepool { + dispatch_async(dispatch_get_main_queue(), ^{ + [[NSNotificationCenter defaultCenter] postNotificationName:VLCVideoWindowShouldShowFullscreenController + object:nil]; + }); + + return VLC_SUCCESS; + } +} + +static int ShowController(vlc_object_t *p_this, const char *psz_variable, + vlc_value_t old_val, vlc_value_t new_val, void *param) +{ + @autoreleasepool { + dispatch_async(dispatch_get_main_queue(), ^{ + [[NSNotificationCenter defaultCenter] postNotificationName:VLCWindowShouldShowController + object:nil]; + }); + + return VLC_SUCCESS; + } +} + @implementation VLCLibraryWindow - (void)awakeFromNib @@ -88,6 +115,10 @@ const CGFloat VLCLibraryWindowDefaultPlaylistWidth = 340.; VLCMain *mainInstance = [VLCMain sharedInstance]; _playlistController = [mainInstance playlistController]; + libvlc_int_t *libvlc = vlc_object_instance(getIntf()); + var_AddCallback(libvlc, "intf-toggle-fscontrol", ShowFullscreenController, (__bridge void *)self); + var_AddCallback(libvlc, "intf-show", ShowController, (__bridge void *)self); + self.videoView = [[VLCVoutView alloc] initWithFrame:self.mainSplitView.frame]; self.videoView.hidden = YES; self.videoView.translatesAutoresizingMaskIntoConstraints = NO; @@ -103,6 +134,10 @@ const CGFloat VLCLibraryWindowDefaultPlaylistWidth = 340.; name:VLCVideoWindowShouldShowFullscreenController object:nil]; [notificationCenter addObserver:self + selector:@selector(shouldShowController:) + name:VLCWindowShouldShowController + object:nil]; + [notificationCenter addObserver:self selector:@selector(updateLibraryRepresentation:) name:VLCLibraryModelAudioMediaListUpdated object:nil]; @@ -229,6 +264,10 @@ const CGFloat VLCLibraryWindowDefaultPlaylistWidth = 340.; if (@available(macOS 10_14, *)) { [[NSApplication sharedApplication] removeObserver:self forKeyPath:@"effectiveAppearance"]; } + + libvlc_int_t *libvlc = vlc_object_instance(getIntf()); + var_DelCallback(libvlc, "intf-toggle-fscontrol", ShowFullscreenController, (__bridge void *)self); + var_DelCallback(libvlc, "intf-show", ShowController, (__bridge void *)self); } #pragma mark - appearance setters @@ -572,7 +611,12 @@ const CGFloat VLCLibraryWindowDefaultPlaylistWidth = 340.; } #pragma mark - -#pragma mark Fullscreen support +#pragma mark respond to core events + +- (void)shouldShowController:(NSNotification *)aNotification +{ + [self makeKeyAndOrderFront:nil]; +} - (void)shouldShowFullscreenController:(NSNotification *)aNotification { diff --git a/modules/gui/macosx/main/VLCMain.m b/modules/gui/macosx/main/VLCMain.m index 3aa0808a86..d33e8ea0e6 100644 --- a/modules/gui/macosx/main/VLCMain.m +++ b/modules/gui/macosx/main/VLCMain.m @@ -177,34 +177,6 @@ void CloseIntf (vlc_object_t *p_this) #pragma mark - #pragma mark Variables Callback -/***************************************************************************** - * ShowController: Callback triggered by the show-intf playlist variable - * through the ShowIntf-control-intf, to let us show the controller-win; - * usually when in fullscreen-mode - *****************************************************************************/ -static int ShowController(vlc_object_t *p_this, const char *psz_variable, - vlc_value_t old_val, vlc_value_t new_val, void *param) -{ - @autoreleasepool { - dispatch_async(dispatch_get_main_queue(), ^{ - - intf_thread_t *p_intf = getIntf(); - if (p_intf) { - VLCMain *mainInstance = [VLCMain sharedInstance]; - if ([[[mainInstance playlistController] playerController] fullscreen]) { - [[NSNotificationCenter defaultCenter] postNotificationName:VLCVideoWindowShouldShowFullscreenController - object:mainInstance]; - } else if (!strcmp(psz_variable, "intf-show")) { - [[mainInstance libraryWindow] makeKeyAndOrderFront:nil]; - } - } - - }); - - return VLC_SUCCESS; - } -} - static int BossCallback(vlc_object_t *p_this, const char *psz_var, vlc_value_t oldval, vlc_value_t new_val, void *param) { @@ -268,8 +240,6 @@ static VLCMain *sharedInstance = nil; _libraryWindowController = [[VLCLibraryWindowController alloc] initWithLibraryWindow]; libvlc_int_t *libvlc = vlc_object_instance(p_intf); - var_AddCallback(libvlc, "intf-toggle-fscontrol", ShowController, (__bridge void *)self); - var_AddCallback(libvlc, "intf-show", ShowController, (__bridge void *)self); var_AddCallback(libvlc, "intf-boss", BossCallback, (__bridge void *)self); // Load them here already to apply stored profiles @@ -353,8 +323,6 @@ static VLCMain *sharedInstance = nil; [[self audioEffectsPanel] saveCurrentProfileAtTerminate]; libvlc_int_t *libvlc = vlc_object_instance(p_intf); - var_DelCallback(libvlc, "intf-toggle-fscontrol", ShowController, (__bridge void *)self); - var_DelCallback(libvlc, "intf-show", ShowController, (__bridge void *)self); var_DelCallback(libvlc, "intf-boss", BossCallback, (__bridge void *)self); [[NSNotificationCenter defaultCenter] removeObserver: self]; diff --git a/modules/gui/macosx/windows/video/VLCVideoWindowCommon.h b/modules/gui/macosx/windows/video/VLCVideoWindowCommon.h index dd3e073d25..b6e48e362a 100644 --- a/modules/gui/macosx/windows/video/VLCVideoWindowCommon.h +++ b/modules/gui/macosx/windows/video/VLCVideoWindowCommon.h @@ -27,6 +27,7 @@ extern NSString *VLCVideoWindowShouldShowFullscreenController; extern NSString *VLCVideoWindowDidEnterFullscreen; +extern NSString *VLCWindowShouldShowController; extern const CGFloat VLCVideoWindowCommonMinimalHeight; @class VLCVoutView; diff --git a/modules/gui/macosx/windows/video/VLCVideoWindowCommon.m b/modules/gui/macosx/windows/video/VLCVideoWindowCommon.m index cdd7713630..00975761e4 100644 --- a/modules/gui/macosx/windows/video/VLCVideoWindowCommon.m +++ b/modules/gui/macosx/windows/video/VLCVideoWindowCommon.m @@ -39,6 +39,7 @@ const CGFloat VLCVideoWindowCommonMinimalHeight = 70.; NSString *VLCVideoWindowShouldShowFullscreenController = @"VLCVideoWindowShouldShowFullscreenController"; NSString *VLCVideoWindowDidEnterFullscreen = @"VLCVideoWindowDidEnterFullscreen"; +NSString *VLCWindowShouldShowController = @"VLCWindowShouldShowController"; /***************************************************************************** * VLCVideoWindowCommon _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits