[vlc-commits] macosx: save playback modes on quit and recover more gracefully
Felix Paul Kühne
git at videolan.org
Sun Feb 12 16:46:58 CET 2012
vlc/vlc-2.0 | branch: master | Felix Paul Kühne <fkuehne at videolan.org> | Sun Feb 12 16:45:45 2012 +0100| [6495e042cc5a9e1893f550c9875edd5c42b5e9df] | committer: Felix Paul Kühne
macosx: save playback modes on quit and recover more gracefully
(cherry picked from commit 20b891eba5bd68353f1a65fb5cae6bed490de827)
> http://git.videolan.org/gitweb.cgi/vlc/vlc-2.0.git/?a=commit;h=6495e042cc5a9e1893f550c9875edd5c42b5e9df
---
modules/gui/macosx/MainWindow.m | 1 +
modules/gui/macosx/intf.m | 41 ++++++++++++++++++++-------------------
2 files changed, 22 insertions(+), 20 deletions(-)
diff --git a/modules/gui/macosx/MainWindow.m b/modules/gui/macosx/MainWindow.m
index e3d138d..e189472 100644
--- a/modules/gui/macosx/MainWindow.m
+++ b/modules/gui/macosx/MainWindow.m
@@ -456,6 +456,7 @@ static VLCMainWindow *_o_sharedInstance = nil;
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(someWindowWillClose:) name: NSWindowWillCloseNotification object: nil];
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(someWindowWillMiniaturize:) name: NSWindowWillMiniaturizeNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(applicationWillTerminate:) name: NSApplicationWillTerminateNotification object: nil];
+ [[VLCMain sharedInstance] playbackModeUpdated];
}
#pragma mark -
diff --git a/modules/gui/macosx/intf.m b/modules/gui/macosx/intf.m
index b549ff1..d319b45 100644
--- a/modules/gui/macosx/intf.m
+++ b/modules/gui/macosx/intf.m
@@ -614,8 +614,6 @@ static VLCMain *_o_sharedMainInstance = nil;
var_AddCallback( p_intf, "dialog-progress-bar", DialogCallback, self );
dialog_Register( p_intf );
- [self playbackModeUpdated];
-
/* init Apple Remote support */
o_remote = [[AppleRemote alloc] init];
[o_remote setClickCountEnabledButtons: kRemoteButtonPlay];
@@ -636,6 +634,11 @@ static VLCMain *_o_sharedMainInstance = nil;
{
if( !p_intf ) return;
+ [o_mainwindow updateWindow];
+ [o_mainwindow updateTimeSlider];
+ [o_mainwindow updateVolumeSlider];
+ [o_mainwindow makeKeyAndOrderFront: self];
+
/* init media key support */
b_mediaKeySupport = config_GetInt( VLCIntf, "macosx-mediakeys" );
if( b_mediaKeySupport )
@@ -650,11 +653,6 @@ static VLCMain *_o_sharedMainInstance = nil;
[self _removeOldPreferences];
- [o_mainwindow updateWindow];
- [o_mainwindow updateTimeSlider];
- [o_mainwindow updateVolumeSlider];
- [o_mainwindow makeKeyAndOrderFront: self];
-
/* Handle sleep notification */
[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self selector:@selector(computerWillSleep:)
name:NSWorkspaceWillSleepNotification object:nil];
@@ -690,20 +688,11 @@ static VLCMain *_o_sharedMainInstance = nil;
- (void)applicationWillTerminate:(NSNotification *)notification
{
- if (notification == nil)
- [[NSNotificationCenter defaultCenter] postNotificationName: NSApplicationWillTerminateNotification object: nil];
-
- playlist_t * p_playlist;
- int returnedValue = 0;
-
if( !p_intf )
return;
- // save stuff
- config_SaveConfigFile( p_intf );
-
- // don't allow a double termination call. If the user has
- // already invoked the quit then simply return this time.
+ /* don't allow a double termination call. If the user has
+ * already invoked the quit then simply return this time. */
int isTerminating = false;
[o_appLock lock];
@@ -713,9 +702,21 @@ static VLCMain *_o_sharedMainInstance = nil;
if (isTerminating)
return;
- msg_Dbg( p_intf, "Terminating" );
+ if (notification == nil)
+ [[NSNotificationCenter defaultCenter] postNotificationName: NSApplicationWillTerminateNotification object: nil];
- p_playlist = pl_Get( p_intf );
+ playlist_t * p_playlist = pl_Get( p_intf );;
+ int returnedValue = 0;
+
+ /* Save some interface state in configuration, at module quit */
+ config_PutInt( p_intf, "random", var_GetBool( p_playlist, "random" ) );
+ config_PutInt( p_intf, "loop", var_GetBool( p_playlist, "loop" ) );
+ config_PutInt( p_intf, "repeat", var_GetBool( p_playlist, "repeat" ) );
+
+ // save stuff
+ config_SaveConfigFile( p_intf );
+
+ msg_Dbg( p_intf, "Terminating" );
/* unsubscribe from the interactive dialogues */
dialog_Unregister( p_intf );
More information about the vlc-commits
mailing list