diff options
| author | SND\MaddTheSane_cp <SND\MaddTheSane_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2013-08-22 23:53:37 +0000 |
|---|---|---|
| committer | SND\MaddTheSane_cp <SND\MaddTheSane_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2013-08-22 23:53:37 +0000 |
| commit | 531ad373b2c22e00a341a6635023cf8949571bd5 (patch) | |
| tree | 029961f0aa19ec396f6d7cc09f3ff93987c9aa62 /macosx/plugins/DFSound/macsrc/PluginController.m | |
| parent | 9628a367530657e7fefb17be0a125dbe3f5d7614 (diff) | |
Moving most of the OS X preferences to auto layout, and all to 10.7.
Changing some lists of independent checkbox buttons to matrices.
Fix a discrepancy between SDL versions 1.2 and 2.0 APIs in OS X's input preferences.
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@86849 e17a0e51-4ae3-4d35-97c3-1a29b211df97
Diffstat (limited to 'macosx/plugins/DFSound/macsrc/PluginController.m')
| -rwxr-xr-x | macosx/plugins/DFSound/macsrc/PluginController.m | 40 |
1 files changed, 25 insertions, 15 deletions
diff --git a/macosx/plugins/DFSound/macsrc/PluginController.m b/macosx/plugins/DFSound/macsrc/PluginController.m index 88d23d03..c323967d 100755 --- a/macosx/plugins/DFSound/macsrc/PluginController.m +++ b/macosx/plugins/DFSound/macsrc/PluginController.m @@ -44,6 +44,15 @@ extern char* PLUGLOC(char* toloc); static SPUPluginController *pluginController = nil; +static inline void RunOnMainThreadSync(dispatch_block_t block) +{ + if ([NSThread isMainThread]) { + block(); + } else { + dispatch_sync(dispatch_get_main_queue(), block); + } +} + void DoAbout() { // Get parent application instance @@ -81,18 +90,20 @@ void DoAbout() long DoConfiguration() { - NSWindow *window; - - if (pluginController == nil) { - pluginController = [[PluginController alloc] initWithWindowNibName:@"NetSfPeopsSpuPluginMain"]; - } - window = [pluginController window]; - - /* load values */ - [pluginController loadValues]; - - [window center]; - [window makeKeyAndOrderFront:nil]; + RunOnMainThreadSync(^{ + NSWindow *window; + + if (pluginController == nil) { + pluginController = [[PluginController alloc] initWithWindowNibName:@"NetSfPeopsSpuPluginMain"]; + } + window = [pluginController window]; + + /* load values */ + [pluginController loadValues]; + + [window center]; + [window makeKeyAndOrderFront:nil]; + }); return 0; } @@ -137,7 +148,7 @@ void ReadConfig(void) { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - NSMutableDictionary *writeDic = [NSMutableDictionary dictionaryWithDictionary:keyValues]; + NSMutableDictionary *writeDic = [NSMutableDictionary dictionaryWithDictionary:self.keyValues]; [writeDic setObject:@((BOOL)[hiCompBox intValue]) forKey:@"High Compatibility Mode"]; [writeDic setObject:@((BOOL)[irqWaitBox intValue]) forKey:@"SPU IRQ Wait"]; [writeDic setObject:@((BOOL)[monoSoundBox intValue]) forKey:@"Mono Sound Output"]; @@ -172,8 +183,7 @@ void ReadConfig(void) ReadConfig(); /* load from preferences */ - RELEASEOBJ(keyValues); - keyValues = [[defaults dictionaryForKey:PrefsKey] mutableCopy]; + self.keyValues = [NSMutableDictionary dictionaryWithDictionary:[defaults dictionaryForKey:PrefsKey]]; [hiCompBox setIntValue:[[keyValues objectForKey:@"High Compatibility Mode"] boolValue]]; [irqWaitBox setIntValue:[[keyValues objectForKey:@"SPU IRQ Wait"] boolValue]]; |
