vlc | branch: master | Felix Paul Kühne <[email protected]> | Sat Apr 27 19:49:44 2019 +0200| [66c49cf911d2b548ff1112d885ebddfd743f8dab] | committer: Felix Paul Kühne
macosx: remove unnecessary deinitialize calls (fixes #21914) The macOS interface is deallocated after the player/playlist, so we need to unsubscribe from either as soon as we know that the app will terminate. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=66c49cf911d2b548ff1112d885ebddfd743f8dab --- modules/gui/macosx/main/VLCMain.m | 8 -------- modules/gui/macosx/playlist/VLCPlayerController.h | 1 - modules/gui/macosx/playlist/VLCPlayerController.m | 11 ++++++++++- modules/gui/macosx/playlist/VLCPlaylistController.h | 1 - modules/gui/macosx/playlist/VLCPlaylistController.m | 15 ++++++++++----- 5 files changed, 20 insertions(+), 16 deletions(-) diff --git a/modules/gui/macosx/main/VLCMain.m b/modules/gui/macosx/main/VLCMain.m index a141edaef7..06e67967b3 100644 --- a/modules/gui/macosx/main/VLCMain.m +++ b/modules/gui/macosx/main/VLCMain.m @@ -295,14 +295,6 @@ static VLCMain *sharedInstance = nil; return self; } -- (void)dealloc -{ - msg_Dbg(getIntf(), "Deinitializing VLCMain object"); - - /* have the playlist controller explicitly unsubscribe from events prior to its deallocation */ - [_playlistController deinitialize]; -} - - (void)applicationWillFinishLaunching:(NSNotification *)aNotification { _clickerManager = [[VLCClickerManager alloc] init]; diff --git a/modules/gui/macosx/playlist/VLCPlayerController.h b/modules/gui/macosx/playlist/VLCPlayerController.h index ea06f81482..711f59e5dd 100644 --- a/modules/gui/macosx/playlist/VLCPlayerController.h +++ b/modules/gui/macosx/playlist/VLCPlayerController.h @@ -230,7 +230,6 @@ extern NSString *VLCPlayerMuteChanged; @interface VLCPlayerController : NSObject - (instancetype)initWithPlayer:(vlc_player_t *)player; -- (void)deinitialize; /** * Start playback of the current media diff --git a/modules/gui/macosx/playlist/VLCPlayerController.m b/modules/gui/macosx/playlist/VLCPlayerController.m index 49833a538c..d6526f25d1 100644 --- a/modules/gui/macosx/playlist/VLCPlayerController.m +++ b/modules/gui/macosx/playlist/VLCPlayerController.m @@ -533,6 +533,10 @@ static const struct vlc_player_aout_cbs player_aout_callbacks = { self = [super init]; if (self) { _defaultNotificationCenter = [NSNotificationCenter defaultCenter]; + [_defaultNotificationCenter addObserver:self + selector:@selector(applicationWillTerminate:) + name:NSApplicationWillTerminateNotification + object:nil]; _position = -1.f; _time = VLC_TICK_INVALID; _p_player = player; @@ -557,7 +561,7 @@ static const struct vlc_player_aout_cbs player_aout_callbacks = { return self; } -- (void)deinitialize +- (void)applicationWillTerminate:(NSNotification *)aNotification { [self onPlaybackHasTruelyEnded:nil]; if (@available(macOS 10.12.2, *)) { @@ -581,6 +585,11 @@ static const struct vlc_player_aout_cbs player_aout_callbacks = { } } +- (void)dealloc +{ + [_defaultNotificationCenter removeObserver:self]; +} + #pragma mark - playback control methods - (int)start diff --git a/modules/gui/macosx/playlist/VLCPlaylistController.h b/modules/gui/macosx/playlist/VLCPlaylistController.h index 639e5f2459..908aaafa5a 100644 --- a/modules/gui/macosx/playlist/VLCPlaylistController.h +++ b/modules/gui/macosx/playlist/VLCPlaylistController.h @@ -41,7 +41,6 @@ extern NSString *VLCPlaylistItemsRemoved; @interface VLCPlaylistController : NSObject - (instancetype)initWithPlaylist:(vlc_playlist_t *)playlist; -- (void)deinitialize; /** * The vlc core playlist controlled by the instance of this class diff --git a/modules/gui/macosx/playlist/VLCPlaylistController.m b/modules/gui/macosx/playlist/VLCPlaylistController.m index 49b05714da..5b90df74c5 100644 --- a/modules/gui/macosx/playlist/VLCPlaylistController.m +++ b/modules/gui/macosx/playlist/VLCPlaylistController.m @@ -201,6 +201,10 @@ static const struct vlc_playlist_callbacks playlist_callbacks = { self = [super init]; if (self) { _defaultNotificationCenter = [NSNotificationCenter defaultCenter]; + [_defaultNotificationCenter addObserver:self + selector:@selector(applicationWillTerminate:) + name:NSApplicationWillTerminateNotification + object:nil]; _p_playlist = playlist; /* set initial values, further updates through callbacks */ @@ -219,12 +223,8 @@ static const struct vlc_playlist_callbacks playlist_callbacks = { return self; } -- (void)deinitialize +- (void)applicationWillTerminate:(NSNotification *)aNotification { - if (_playerController) { - [_playerController deinitialize]; - } - if (_p_playlist) { if (_playlistListenerID) { vlc_playlist_Lock(_p_playlist); @@ -234,6 +234,11 @@ static const struct vlc_playlist_callbacks playlist_callbacks = { } } +- (void)dealloc +{ + [_defaultNotificationCenter removeObserver:self]; +} + #pragma mark - callback forwarders - (void)playlistResetWithItems:(NSArray *)items _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
