vlc | branch: master | Felix Paul Kühne <fe...@feepk.net> | Tue Jun 11 11:41:22 2019 +0200| [cf6a86401878ee618fe1aead26729f9ee4e8fb48] | committer: Felix Paul Kühne
macosx: use a notification to update the window level instead of calling the singleton directly > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=cf6a86401878ee618fe1aead26729f9ee4e8fb48 --- .../gui/macosx/panels/VLCAudioEffectsWindowController.h | 1 - .../gui/macosx/panels/VLCAudioEffectsWindowController.m | 13 ++++++++++++- modules/gui/macosx/panels/VLCBookmarksWindowController.h | 1 - modules/gui/macosx/panels/VLCBookmarksWindowController.m | 7 +++++-- .../gui/macosx/panels/VLCInformationWindowController.h | 1 - .../gui/macosx/panels/VLCInformationWindowController.m | 7 ++++++- .../panels/VLCTrackSynchronizationWindowController.h | 2 -- .../panels/VLCTrackSynchronizationWindowController.m | 7 ++++++- .../gui/macosx/panels/VLCVideoEffectsWindowController.h | 1 - .../gui/macosx/panels/VLCVideoEffectsWindowController.m | 8 +++++++- .../gui/macosx/panels/dialogs/VLCResumeDialogController.h | 2 -- .../gui/macosx/panels/dialogs/VLCResumeDialogController.m | 15 +++++++++++++-- modules/gui/macosx/windows/video/VLCVideoOutputProvider.h | 3 +++ modules/gui/macosx/windows/video/VLCVideoOutputProvider.m | 13 +++++-------- modules/gui/macosx/windows/video/VLCVideoWindowCommon.m | 12 +++++++----- 15 files changed, 64 insertions(+), 29 deletions(-) diff --git a/modules/gui/macosx/panels/VLCAudioEffectsWindowController.h b/modules/gui/macosx/panels/VLCAudioEffectsWindowController.h index dff29b2dad..4eb4635a38 100644 --- a/modules/gui/macosx/panels/VLCAudioEffectsWindowController.h +++ b/modules/gui/macosx/panels/VLCAudioEffectsWindowController.h @@ -114,7 +114,6 @@ - (IBAction)applyProfileCheckboxChanged:(id)sender; - (void)toggleWindow:(id)sender; -- (void)updateCocoaWindowLevel:(NSInteger)i_level; - (void)saveCurrentProfileAtTerminate; /* Equalizer */ diff --git a/modules/gui/macosx/panels/VLCAudioEffectsWindowController.m b/modules/gui/macosx/panels/VLCAudioEffectsWindowController.m index 4db5dc00c6..2b4af84f4e 100644 --- a/modules/gui/macosx/panels/VLCAudioEffectsWindowController.m +++ b/modules/gui/macosx/panels/VLCAudioEffectsWindowController.m @@ -204,6 +204,11 @@ NSString *VLCAudioEffectsProfileNamesKey = @"AudioEffectProfileNames"; - (void)windowDidLoad { + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(updateCocoaWindowLevel:) + name:VLCWindowShouldUpdateLevel + object:nil]; + [_applyProfileCheckbox setState:[[NSUserDefaults standardUserDefaults] boolForKey:@"AudioEffectApplyProfileOnStartup"]]; [_applyProfileCheckbox setTitle:_NS("Apply profile at next launch")]; @@ -281,6 +286,11 @@ NSString *VLCAudioEffectsProfileNamesKey = @"AudioEffectProfileNames"; [self resetProfileSelector]; } +- (void)dealloc +{ + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + #pragma mark - #pragma mark internal functions @@ -333,8 +343,9 @@ NSString *VLCAudioEffectsProfileNamesKey = @"AudioEffectProfileNames"; #pragma mark - #pragma mark generic code -- (void)updateCocoaWindowLevel:(NSInteger)i_level +- (void)updateCocoaWindowLevel:(NSNotification *)aNotification { + NSInteger i_level = [aNotification.userInfo[VLCWindowLevelKey] integerValue]; if (self.isWindowLoaded && [self.window isVisible] && [self.window level] != i_level) [self.window setLevel: i_level]; } diff --git a/modules/gui/macosx/panels/VLCBookmarksWindowController.h b/modules/gui/macosx/panels/VLCBookmarksWindowController.h index 1fa07e3ced..b2b99a9971 100644 --- a/modules/gui/macosx/panels/VLCBookmarksWindowController.h +++ b/modules/gui/macosx/panels/VLCBookmarksWindowController.h @@ -42,7 +42,6 @@ @property (readwrite, weak) IBOutlet NSTextField *editNameTextField; @property (readwrite, weak) IBOutlet NSTextField *editTimeTextField; -- (void)updateCocoaWindowLevel:(NSInteger)i_level; - (IBAction)toggleWindow:(id)sender; - (IBAction)add:(id)sender; diff --git a/modules/gui/macosx/panels/VLCBookmarksWindowController.m b/modules/gui/macosx/panels/VLCBookmarksWindowController.m index 7bbfdf23e6..10000fc85a 100644 --- a/modules/gui/macosx/panels/VLCBookmarksWindowController.m +++ b/modules/gui/macosx/panels/VLCBookmarksWindowController.m @@ -54,7 +54,9 @@ - (id)init { self = [super initWithWindowNibName:@"Bookmarks"]; - + if (self) { + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateCocoaWindowLevel:) name:VLCWindowShouldUpdateLevel object:nil]; + } return self; } @@ -93,8 +95,9 @@ [_editTimeLabel setStringValue: _NS("Time")]; } -- (void)updateCocoaWindowLevel:(NSInteger)i_level +- (void)updateCocoaWindowLevel:(NSNotification *)aNotification { + NSInteger i_level = [aNotification.userInfo[VLCWindowLevelKey] integerValue]; if (self.isWindowLoaded && [self.window isVisible] && [self.window level] != i_level) [self.window setLevel: i_level]; } diff --git a/modules/gui/macosx/panels/VLCInformationWindowController.h b/modules/gui/macosx/panels/VLCInformationWindowController.h index a87c992b4b..f6a5b78242 100644 --- a/modules/gui/macosx/panels/VLCInformationWindowController.h +++ b/modules/gui/macosx/panels/VLCInformationWindowController.h @@ -84,7 +84,6 @@ @property (readwrite, weak) IBOutlet NSTextField *videoDecodedLabel; @property (readwrite, weak) IBOutlet NSTextField *videoDecodedTextField; -- (void)updateCocoaWindowLevel:(NSInteger)i_level; - (IBAction)toggleWindow:(id)sender; - (IBAction)metaFieldChanged:(id)sender; diff --git a/modules/gui/macosx/panels/VLCInformationWindowController.m b/modules/gui/macosx/panels/VLCInformationWindowController.m index 8c603ee2d4..f3da3b4994 100644 --- a/modules/gui/macosx/panels/VLCInformationWindowController.m +++ b/modules/gui/macosx/panels/VLCInformationWindowController.m @@ -74,6 +74,10 @@ selector:@selector(updateStatistics:) name:VLCPlayerStatisticsUpdated object:nil]; + [defaultNotificationCenter addObserver:self + selector:@selector(updateCocoaWindowLevel:) + name:VLCWindowShouldUpdateLevel + object:nil]; } return self; } @@ -148,8 +152,9 @@ [self updatePanelWithItem:_mediaItem]; } -- (void)updateCocoaWindowLevel:(NSInteger)i_level +- (void)updateCocoaWindowLevel:(NSNotification *)aNotification { + NSInteger i_level = [aNotification.userInfo[VLCWindowLevelKey] integerValue]; if (self.isWindowLoaded && [self.window isVisible] && [self.window level] != i_level) [self.window setLevel: i_level]; } diff --git a/modules/gui/macosx/panels/VLCTrackSynchronizationWindowController.h b/modules/gui/macosx/panels/VLCTrackSynchronizationWindowController.h index 3f1d97788d..3bce0a62fb 100644 --- a/modules/gui/macosx/panels/VLCTrackSynchronizationWindowController.h +++ b/modules/gui/macosx/panels/VLCTrackSynchronizationWindowController.h @@ -46,8 +46,6 @@ @property (readwrite, weak) IBOutlet NSTextField *sv_durTextField; @property (readwrite, weak) IBOutlet NSStepper *sv_durStepper; -- (void)updateCocoaWindowLevel:(NSInteger)i_level; - - (IBAction)toggleWindow:(id)sender; - (IBAction)resetValues:(id)sender; diff --git a/modules/gui/macosx/panels/VLCTrackSynchronizationWindowController.m b/modules/gui/macosx/panels/VLCTrackSynchronizationWindowController.m index 75431c0d0e..ccde9fa1fc 100644 --- a/modules/gui/macosx/panels/VLCTrackSynchronizationWindowController.m +++ b/modules/gui/macosx/panels/VLCTrackSynchronizationWindowController.m @@ -75,6 +75,10 @@ selector:@selector(updateValues:) name:VLCPlayerSubtitlesFPSChanged object:nil]; + [notificationCenter addObserver:self + selector:@selector(updateCocoaWindowLevel:) + name:VLCWindowShouldUpdateLevel + object:nil]; [self.window setTitle:_NS("Track Synchronization")]; [_resetButton setTitle:_NS("Reset")]; @@ -117,8 +121,9 @@ [self resetValues:self]; } -- (void)updateCocoaWindowLevel:(NSInteger)i_level +- (void)updateCocoaWindowLevel:(NSNotification *)aNotification { + NSInteger i_level = [aNotification.userInfo[VLCWindowLevelKey] integerValue]; if (self.isWindowLoaded && [self.window isVisible] && [self.window level] != i_level) [self.window setLevel: i_level]; } diff --git a/modules/gui/macosx/panels/VLCVideoEffectsWindowController.h b/modules/gui/macosx/panels/VLCVideoEffectsWindowController.h index ec2c76cab6..cab80a0de6 100644 --- a/modules/gui/macosx/panels/VLCVideoEffectsWindowController.h +++ b/modules/gui/macosx/panels/VLCVideoEffectsWindowController.h @@ -167,7 +167,6 @@ @property (nonatomic) int posterizeValue; /* generic */ -- (void)updateCocoaWindowLevel:(NSInteger)i_level; - (void)saveCurrentProfileAtTerminate; - (void)toggleWindow:(id)sender; diff --git a/modules/gui/macosx/panels/VLCVideoEffectsWindowController.m b/modules/gui/macosx/panels/VLCVideoEffectsWindowController.m index 625fdf53c6..05b602329e 100644 --- a/modules/gui/macosx/panels/VLCVideoEffectsWindowController.m +++ b/modules/gui/macosx/panels/VLCVideoEffectsWindowController.m @@ -72,6 +72,11 @@ NSString *VLCVideoEffectsProfileNamesKey = @"VideoEffectProfileNames"; { self = [super initWithWindowNibName:@"VideoEffects"]; if (self) { + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(updateCocoaWindowLevel:) + name:VLCWindowShouldUpdateLevel + object:nil]; + self.popupPanel = [[VLCPopupPanelController alloc] init]; self.textfieldPanel = [[VLCTextfieldPanelController alloc] init]; @@ -334,8 +339,9 @@ NSString *VLCVideoEffectsProfileNamesKey = @"VideoEffectProfileNames"; [[NSNotificationCenter defaultCenter] removeObserver:self]; } -- (void)updateCocoaWindowLevel:(NSInteger)i_level +- (void)updateCocoaWindowLevel:(NSNotification *)aNotification { + NSInteger i_level = [aNotification.userInfo[VLCWindowLevelKey] integerValue]; if (self.isWindowLoaded && [self.window isVisible] && [self.window level] != i_level) [self.window setLevel: i_level]; } diff --git a/modules/gui/macosx/panels/dialogs/VLCResumeDialogController.h b/modules/gui/macosx/panels/dialogs/VLCResumeDialogController.h index 1c96e9caea..811294dc0f 100644 --- a/modules/gui/macosx/panels/dialogs/VLCResumeDialogController.h +++ b/modules/gui/macosx/panels/dialogs/VLCResumeDialogController.h @@ -51,8 +51,6 @@ typedef void(^CompletionBlock)(enum ResumeResult); - (void)showWindowWithItem:(input_item_t *)p_item withLastPosition:(NSInteger)pos completionBlock:(CompletionBlock)block; -- (void)updateCocoaWindowLevel:(NSInteger)i_level; - - (void)cancel; @end diff --git a/modules/gui/macosx/panels/dialogs/VLCResumeDialogController.m b/modules/gui/macosx/panels/dialogs/VLCResumeDialogController.m index eb29d87dda..6d60c78f3a 100644 --- a/modules/gui/macosx/panels/dialogs/VLCResumeDialogController.m +++ b/modules/gui/macosx/panels/dialogs/VLCResumeDialogController.m @@ -40,10 +40,21 @@ - (id)init { self = [super initWithWindowNibName:@"ResumeDialog"]; + if (self) { + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(updateCocoaWindowLevel:) + name:VLCWindowShouldUpdateLevel + object:nil]; + } return self; } +- (void)dealloc +{ + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + - (void)windowDidLoad { [o_title_lbl setStringValue:_NS("Continue playback?")]; @@ -59,7 +70,6 @@ currentResumeTimeout = 10; completionBlock = [block copy]; - NSString *o_restartButtonLabel = _NS("Restart playback"); o_restartButtonLabel = [o_restartButtonLabel stringByAppendingFormat:@" (%d)", currentResumeTimeout]; [o_restart_btn setTitle:o_restartButtonLabel]; @@ -122,8 +132,9 @@ config_PutInt("macosx-continue-playback", newState); } -- (void)updateCocoaWindowLevel:(NSInteger)i_level +- (void)updateCocoaWindowLevel:(NSNotification *)aNotification { + NSInteger i_level = [aNotification.userInfo[VLCWindowLevelKey] integerValue]; if (self.isWindowLoaded && [self.window isVisible] && [self.window level] != i_level) [self.window setLevel: i_level]; } diff --git a/modules/gui/macosx/windows/video/VLCVideoOutputProvider.h b/modules/gui/macosx/windows/video/VLCVideoOutputProvider.h index 716ed439c8..5a2c3876c5 100644 --- a/modules/gui/macosx/windows/video/VLCVideoOutputProvider.h +++ b/modules/gui/macosx/windows/video/VLCVideoOutputProvider.h @@ -29,6 +29,9 @@ @class VLCVideoWindowCommon; @class VLCVoutView; +extern NSString *VLCWindowShouldUpdateLevel; +extern NSString *VLCWindowLevelKey; + @interface VLCVideoOutputProvider : NSObject @property (readonly, nonatomic) NSInteger currentStatusWindowLevel; diff --git a/modules/gui/macosx/windows/video/VLCVideoOutputProvider.m b/modules/gui/macosx/windows/video/VLCVideoOutputProvider.m index d9d6ce2026..378dce3f2d 100644 --- a/modules/gui/macosx/windows/video/VLCVideoOutputProvider.m +++ b/modules/gui/macosx/windows/video/VLCVideoOutputProvider.m @@ -43,6 +43,9 @@ #import "panels/VLCBookmarksWindowController.h" #import "panels/VLCTrackSynchronizationWindowController.h" +NSString *VLCWindowShouldUpdateLevel = @"VLCWindowShouldUpdateLevel"; +NSString *VLCWindowLevelKey = @"VLCWindowLevelKey"; + static int WindowEnable(vout_window_t *p_wnd, const vout_window_cfg_t *cfg) { @autoreleasepool { @@ -551,16 +554,10 @@ int WindowOpen(vout_window_t *p_wnd) _currentStatusWindowLevel = i_level + 1; } - NSInteger currentStatusWindowLevel = self.currentStatusWindowLevel; - VLCMain *main = [VLCMain sharedInstance]; [[main libraryWindow] setWindowLevel:i_level]; - [[main videoEffectsPanel] updateCocoaWindowLevel:currentStatusWindowLevel]; - [[main audioEffectsPanel] updateCocoaWindowLevel:currentStatusWindowLevel]; - [[main currentMediaInfoPanel] updateCocoaWindowLevel:currentStatusWindowLevel]; - [[main bookmarks] updateCocoaWindowLevel:currentStatusWindowLevel]; - [[main trackSyncPanel] updateCocoaWindowLevel:currentStatusWindowLevel]; - [[main resumeDialog] updateCocoaWindowLevel:currentStatusWindowLevel]; + + [[NSNotificationCenter defaultCenter] postNotificationName:VLCWindowShouldUpdateLevel object:self userInfo:@{VLCWindowLevelKey : @(_currentWindowLevel)}]; } @end diff --git a/modules/gui/macosx/windows/video/VLCVideoWindowCommon.m b/modules/gui/macosx/windows/video/VLCVideoWindowCommon.m index 311afe4f36..cdd7713630 100644 --- a/modules/gui/macosx/windows/video/VLCVideoWindowCommon.m +++ b/modules/gui/macosx/windows/video/VLCVideoWindowCommon.m @@ -78,12 +78,14 @@ NSString *VLCVideoWindowDidEnterFullscreen = @"VLCVideoWindowDidEnterFullscreen" self = [super initWithContentRect:contentRect styleMask:styleMask backing:backingType defer:flag]; - /* we want to be moveable regardless of our style */ - [self setMovableByWindowBackground: YES]; - [self setCanBecomeKeyWindow:YES]; + if (self) { + /* we want to be moveable regardless of our style */ + [self setMovableByWindowBackground: YES]; + [self setCanBecomeKeyWindow:YES]; - o_temp_view = [[NSView alloc] init]; - [o_temp_view setAutoresizingMask:NSViewHeightSizable | NSViewWidthSizable]; + o_temp_view = [[NSView alloc] init]; + [o_temp_view setAutoresizingMask:NSViewHeightSizable | NSViewWidthSizable]; + } return self; } _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits