From 531ad373b2c22e00a341a6635023cf8949571bd5 Mon Sep 17 00:00:00 2001 From: "SND\\MaddTheSane_cp" Date: Thu, 22 Aug 2013 23:53:37 +0000 Subject: 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 --- macosx/plugins/DFInput/macsrc/ControllerList.m | 4 +- macosx/plugins/DFInput/macsrc/PadController.m | 51 +++++++++++++++++++------- macosx/plugins/DFInput/macsrc/PadView.m | 9 ++++- macosx/plugins/DFInput/macsrc/cfg.c | 5 ++- 4 files changed, 52 insertions(+), 17 deletions(-) (limited to 'macosx/plugins/DFInput/macsrc') diff --git a/macosx/plugins/DFInput/macsrc/ControllerList.m b/macosx/plugins/DFInput/macsrc/ControllerList.m index a1d4deed..41b38e2f 100755 --- a/macosx/plugins/DFInput/macsrc/ControllerList.m +++ b/macosx/plugins/DFInput/macsrc/ControllerList.m @@ -29,7 +29,9 @@ static int currentController; - (id)initWithConfig { - if (!(self = [super init])) return nil; + if (self = [super init]) { + + } return self; } diff --git a/macosx/plugins/DFInput/macsrc/PadController.m b/macosx/plugins/DFInput/macsrc/PadController.m index e3942158..1a4997c6 100755 --- a/macosx/plugins/DFInput/macsrc/PadController.m +++ b/macosx/plugins/DFInput/macsrc/PadController.m @@ -24,12 +24,22 @@ #include "pad.h" #import "ARCBridge.h" +static inline void RunOnMainThreadSync(dispatch_block_t block) +{ + if ([NSThread isMainThread]) { + block(); + } else { + dispatch_sync(dispatch_get_main_queue(), block); + } +} + static NSWindow *padWindow = nil; static PadController *padController = nil; #define APP_ID @"net.pcsxr.DFInputPlugin" -void DoAbout() { +void DoAbout() +{ // Get parent application instance NSApplication *app = [NSApplication sharedApplication]; NSBundle *bundle = [NSBundle bundleWithIdentifier:APP_ID]; @@ -65,19 +75,26 @@ void DoAbout() { RELEASEOBJ(infoPaneDict); } -long DoConfiguration() { - SDL_Init(SDL_INIT_JOYSTICK | SDL_INIT_NOPARACHUTE); - LoadPADConfig(); - - if (padWindow == nil) { - if (padController == nil) { - padController = [[PadController alloc] initWithWindowNibName:@"NetPcsxrHIDInputPluginMain"]; +long DoConfiguration() +{ + RunOnMainThreadSync(^{ +#if SDL_VERSION_ATLEAST(2, 0, 0) + SDL_InitSubSystem(SDL_INIT_JOYSTICK); +#else + SDL_Init(SDL_INIT_JOYSTICK | SDL_INIT_NOPARACHUTE); +#endif + LoadPADConfig(); + + if (padWindow == nil) { + if (padController == nil) { + padController = [[PadController alloc] initWithWindowNibName:@"NetPcsxrHIDInputPluginMain"]; + } + padWindow = [padController window]; } - padWindow = [padController window]; - } - - [padWindow center]; - [padWindow makeKeyAndOrderFront:nil]; + + [padWindow center]; + [padWindow makeKeyAndOrderFront:nil]; + }); return 0; } @@ -86,14 +103,22 @@ long DoConfiguration() { - (IBAction)cancel:(id)sender { +#if SDL_VERSION_ATLEAST(2, 0, 0) + SDL_QuitSubSystem(SDL_INIT_JOYSTICK); +#else SDL_Quit(); +#endif [self close]; } - (IBAction)ok:(id)sender { SavePADConfig(); +#if SDL_VERSION_ATLEAST(2, 0, 0) + SDL_QuitSubSystem(SDL_INIT_JOYSTICK); +#else SDL_Quit(); +#endif [self close]; } diff --git a/macosx/plugins/DFInput/macsrc/PadView.m b/macosx/plugins/DFInput/macsrc/PadView.m index e883a84f..f0fb801e 100755 --- a/macosx/plugins/DFInput/macsrc/PadView.m +++ b/macosx/plugins/DFInput/macsrc/PadView.m @@ -70,7 +70,14 @@ [deviceMenu addItemWithTitle:@"(Keyboard only)"]; for (i = 0; i < SDL_NumJoysticks(); i++) { - NSMenuItem * joystickItem = [[NSMenuItem alloc] initWithTitle:@(SDL_JoystickName(i)) action:NULL keyEquivalent:@""]; + NSMenuItem *joystickItem = nil; +#if SDL_VERSION_ATLEAST(2, 0, 0) + SDL_Joystick *tmpJoy = SDL_JoystickOpen(i); + joystickItem = [[NSMenuItem alloc] initWithTitle:@(SDL_JoystickName(tmpJoy)) action:NULL keyEquivalent:@""]; + SDL_JoystickClose(tmpJoy); +#else + joystickItem = [[NSMenuItem alloc] initWithTitle:@(SDL_JoystickName(i)) action:NULL keyEquivalent:@""]; +#endif [joystickItem setTag:i + 1]; [[deviceMenu menu] addItem:joystickItem]; RELEASEOBJ(joystickItem); diff --git a/macosx/plugins/DFInput/macsrc/cfg.c b/macosx/plugins/DFInput/macsrc/cfg.c index 33013c44..b9d1e7c6 100755 --- a/macosx/plugins/DFInput/macsrc/cfg.c +++ b/macosx/plugins/DFInput/macsrc/cfg.c @@ -17,6 +17,7 @@ */ #include "pad.h" +#include GLOBALDATA g; @@ -114,7 +115,7 @@ static void SetDefaultConfig() { void LoadPADConfig() { FILE *fp; - char buf[256]; + char buf[PATH_MAX]; int current, a, b, c; SetDefaultConfig(); @@ -276,7 +277,7 @@ void LoadPADConfig() { void SavePADConfig() { FILE *fp; int i; - char buf[256]; + char buf[PATH_MAX]; sprintf(buf, "%s/Library/Preferences/net.pcsxr.DFInput.plist", getenv("HOME")); -- cgit v1.2.3