diff --git a/macosx/Snes9x/AppDelegate.m b/macosx/Snes9x/AppDelegate.m index 655fb6f2..d7e8e041 100644 --- a/macosx/Snes9x/AppDelegate.m +++ b/macosx/Snes9x/AppDelegate.m @@ -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]; } diff --git a/macosx/Snes9x/S9xPrefsViewController.m b/macosx/Snes9x/S9xPrefsViewController.m index 1900d371..45478bfd 100644 --- a/macosx/Snes9x/S9xPrefsViewController.m +++ b/macosx/Snes9x/S9xPrefsViewController.m @@ -275,7 +275,7 @@ { id firstResponder = self.view.window.firstResponder; - if ([firstResponder isFieldEditor]) + if ([firstResponder respondsToSelector:@selector(isFieldEditor)] && [firstResponder isFieldEditor]) { firstResponder = [firstResponder delegate]; } diff --git a/macosx/mac-joypad.mm b/macosx/mac-joypad.mm index 83dcef35..e982eec8 100755 --- a/macosx/mac-joypad.mm +++ b/macosx/mac-joypad.mm @@ -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);