Move mfi_buttons state to drivers_joypad/mfi_joypad.m

This commit is contained in:
twinaphex 2015-11-16 04:37:49 +01:00
parent 49d47e2362
commit 40b22b4d17
2 changed files with 9 additions and 18 deletions

View File

@ -62,10 +62,7 @@ typedef struct
bool small_keyboard_active; bool small_keyboard_active;
#endif #endif
#ifdef HAVE_MFI
uint32_t mfi_buttons[MAX_USERS];
const input_device_driver_t *sec_joypad; const input_device_driver_t *sec_joypad;
#endif
const input_device_driver_t *joypad; const input_device_driver_t *joypad;
} cocoa_input_data_t; } cocoa_input_data_t;

View File

@ -28,6 +28,7 @@
#include "../connect/joypad_connection.h" #include "../connect/joypad_connection.h"
joypad_connection_t *slots; joypad_connection_t *slots;
static uint32_t mfi_buttons[MAX_USERS];
enum enum
{ {
@ -56,14 +57,14 @@ static void apple_gamecontroller_joypad_poll_internal(GCController *controller)
slot = (uint32_t)controller.playerIndex; slot = (uint32_t)controller.playerIndex;
/* retain the start (pause) value */ /* retain the start (pause) value */
pause = apple->mfi_buttons[slot] & (1 << RETRO_DEVICE_ID_JOYPAD_START); pause = mfi_buttons[slot] & (1 << RETRO_DEVICE_ID_JOYPAD_START);
apple->mfi_buttons[slot] = 0; mfi_buttons[slot] = 0;
memset(apple->axes[slot], 0, sizeof(apple->axes[0])); memset(apple->axes[slot], 0, sizeof(apple->axes[0]));
apple->mfi_buttons[slot] |= pause; mfi_buttons[slot] |= pause;
buttons = &apple->mfi_buttons[slot]; buttons = &mfi_buttons[slot];
if (controller.extendedGamepad) if (controller.extendedGamepad)
{ {
@ -127,10 +128,10 @@ static void apple_gamecontroller_joypad_register(GCGamepad *gamepad)
uint32_t slot = (uint32_t)controller.playerIndex; uint32_t slot = (uint32_t)controller.playerIndex;
apple->mfi_buttons[slot] |= (1 << RETRO_DEVICE_ID_JOYPAD_START); mfi_buttons[slot] |= (1 << RETRO_DEVICE_ID_JOYPAD_START);
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
apple->mfi_buttons[slot] &= ~(1 << RETRO_DEVICE_ID_JOYPAD_START); mfi_buttons[slot] &= ~(1 << RETRO_DEVICE_ID_JOYPAD_START);
}); });
}; };
@ -205,9 +206,6 @@ static void apple_gamecontroller_joypad_destroy(void)
static bool apple_gamecontroller_joypad_button(unsigned port, uint16_t joykey) static bool apple_gamecontroller_joypad_button(unsigned port, uint16_t joykey)
{ {
driver_t *driver = driver_get_ptr();
cocoa_input_data_t *apple = (cocoa_input_data_t*)driver->input_data;
if (joykey == NO_BTN) if (joykey == NO_BTN)
return false; return false;
@ -217,18 +215,14 @@ static bool apple_gamecontroller_joypad_button(unsigned port, uint16_t joykey)
/* Check the button. */ /* Check the button. */
if ((port < MAX_USERS) && (joykey < 32)) if ((port < MAX_USERS) && (joykey < 32))
return ((apple->mfi_buttons[port] & (1 << joykey)) != 0); return ((mfi_buttons[port] & (1 << joykey)) != 0);
; ;
return false; return false;
} }
static uint64_t apple_gamecontroller_joypad_get_buttons(unsigned port) static uint64_t apple_gamecontroller_joypad_get_buttons(unsigned port)
{ {
driver_t *driver = driver_get_ptr(); return mfi_buttons[port];
cocoa_input_data_t *apple = (cocoa_input_data_t*)driver->input_data;
if (!apple)
return 0;
return apple->mfi_buttons[port];
} }
static int16_t apple_gamecontroller_joypad_axis(unsigned port, uint32_t joyaxis) static int16_t apple_gamecontroller_joypad_axis(unsigned port, uint32_t joyaxis)