Mac: Use stick deadzones when configuring joypads

This commit is contained in:
Michael Buckley 2019-11-11 19:12:10 -08:00
parent 25863eed5c
commit 6582af1094
3 changed files with 17 additions and 4 deletions

View File

@ -505,7 +505,7 @@ static NSWindowFrameAutosaveName const kMainWindowIdentifier = @"s9xMainWindow";
- (BOOL)handleInput:(S9xJoypadInput *)input fromJoypad:(S9xJoypad *)joypad
{
if (NSApp.keyWindow == self.prefsWindowController.window)
if (NSApp.keyWindow != nil && NSApp.keyWindow == self.prefsWindowController.window)
{
return [((S9xPrefsViewController *) self.prefsWindowController.contentViewController) handleInput:input fromJoypad:joypad];
}

View File

@ -275,7 +275,7 @@
{
id firstResponder = self.view.window.firstResponder;
if ([firstResponder isFieldEditor])
if ([firstResponder respondsToSelector:@selector(isFieldEditor)] && [firstResponder isFieldEditor])
{
firstResponder = [firstResponder delegate];
}

View File

@ -174,9 +174,22 @@ void gamepadAction(void *inContext, IOReturn inResult, void *inSender, IOHIDValu
objcInput.value =inputStruct.value;
os_unfair_lock_unlock(&keyLock);
if ([inputDelegate handleInput:objcInput fromJoypad:objcJoypad])
if (info.min != info.max)
{
return;
if (inputStruct.value <= info.min || inputStruct.value >= info.max)
{
if ([inputDelegate handleInput:objcInput fromJoypad:objcJoypad])
{
return;
}
}
}
else
{
if ([inputDelegate handleInput:objcInput fromJoypad:objcJoypad])
{
return;
}
}
os_unfair_lock_lock(&keyLock);