Android: add define GAMEPAD_AS_RPC to handle gamepad under SDLActivity (default) or C Thread
diff --git a/src/core/android/SDL_android.c b/src/core/android/SDL_android.c index 019e4e8..7b3e24b 100644 --- a/src/core/android/SDL_android.c +++ b/src/core/android/SDL_android.c
@@ -491,11 +491,8 @@ RPC_cmd_nativeCommitText, RPC_cmd_nativeGenerateScancodeForUnichar, - // SDLAudioManager_tab - RPC_cmd_nativeAddAudioDevice, - RPC_cmd_nativeRemoveAudioDevice, - // SDLControllerManager_tab +#ifdef GAMEPAD_AS_RPC RPC_cmd_onNativePadDown, RPC_cmd_onNativePadUp, RPC_cmd_onNativeJoy, @@ -503,7 +500,12 @@ RPC_cmd_nativeAddJoystick, RPC_cmd_nativeRemoveJoystick, RPC_cmd_nativeAddHaptic, - RPC_cmd_nativeRemoveHaptic + RPC_cmd_nativeRemoveHaptic, +#endif + + // SDLAudioManager_tab + RPC_cmd_nativeAddAudioDevice, + RPC_cmd_nativeRemoveAudioDevice // RPC TODO HID ? see HIDDeviceManager_tab @@ -554,6 +556,7 @@ CASE(nativeAddAudioDevice); CASE(nativeRemoveAudioDevice); +#ifdef GAMEPAD_AS_RPC // SDLControllerManager_tab CASE(onNativePadDown); CASE(onNativePadUp); @@ -563,6 +566,7 @@ CASE(nativeRemoveJoystick); CASE(nativeAddHaptic); CASE(nativeRemoveHaptic); +#endif #undef CASE default: @@ -1358,12 +1362,16 @@ jint device_id, jint keycode) { #ifdef SDL_JOYSTICK_ANDROID -int button = Android_keycode_to_SDL(keycode); + int button = Android_keycode_to_SDL(keycode); if (button >= 0) { +#ifdef GAMEPAD_AS_RPC RPC_Prepare(onNativePadDown); RPC_Add(device_id); RPC_Add(keycode); RPC_Send; +#else + Android_OnPadDown(device_id, keycode); +#endif return true; } return false; @@ -1387,10 +1395,14 @@ #ifdef SDL_JOYSTICK_ANDROID int button = Android_keycode_to_SDL(keycode); if (button >= 0) { +#ifdef GAMEPAD_AS_RPC RPC_Prepare(onNativePadUp); RPC_Add(device_id); RPC_Add(keycode); RPC_Send; +#else + Android_OnPadUp(device_id, keycode); +#endif return true; } return false; @@ -1414,11 +1426,15 @@ jint device_id, jint axis, jfloat value) { #ifdef SDL_JOYSTICK_ANDROID +#ifdef GAMEPAD_AS_RPC RPC_Prepare(onNativeJoy); RPC_Add(device_id); RPC_Add(axis); RPC_Add(value); RPC_Send; +#else + Android_OnJoy(device_id, axis, value); +#endif #endif } @@ -1437,12 +1453,16 @@ jint device_id, jint hat_id, jint x, jint y) { #ifdef SDL_JOYSTICK_ANDROID +#ifdef GAMEPAD_AS_RPC RPC_Prepare(onNativeHat); RPC_Add(device_id); RPC_Add(hat_id); RPC_Add(x); RPC_Add(y); RPC_Send; +#else + Android_OnHat(device_id, hat_id, x, y); +#endif #endif } @@ -1470,6 +1490,7 @@ jint button_mask, jint naxes, jint axis_mask, jint nhats, jboolean can_rumble, jboolean has_rgb_led) { #ifdef SDL_JOYSTICK_ANDROID +#ifdef GAMEPAD_AS_RPC RPC_Prepare(nativeAddJoystick); RPC_Add(device_id); RPC_AddString(device_name); @@ -1483,6 +1504,11 @@ RPC_Add(can_rumble); RPC_Add(has_rgb_led); RPC_Send; +#else + Android_AddJoystick(device_id, device_name, device_desc, + vendor_id, product_id, button_mask, naxes, + axis_mask, nhats, can_rumble, has_rgb_led); +#endif #endif } @@ -1497,9 +1523,13 @@ jint device_id) { #ifdef SDL_JOYSTICK_ANDROID +#ifdef GAMEPAD_AS_RPC RPC_Prepare(nativeRemoveJoystick); RPC_Add(device_id); RPC_Send; +#else + Android_RemoveJoystick(device_id); +#endif #endif } @@ -1515,10 +1545,14 @@ JNIEnv *env, jclass jcls, jint device_id, jstring device_name) { #ifdef SDL_HAPTIC_ANDROID +#ifdef GAMEPAD_AS_RPC RPC_Prepare(nativeAddHaptic); RPC_Add(device_name); RPC_AddString(device_name); RPC_Send; +#else + Android_AddHaptic(device_id, device_name); +#endif #endif } @@ -1532,9 +1566,13 @@ JNIEnv *env, jclass jcls, jint device_id) { #ifdef SDL_HAPTIC_ANDROID +#ifdef GAMEPAD_AS_RPC RPC_Prepare(nativeRemoveHaptic); RPC_Add(device_id); RPC_Send; +#else + Android_RemoveHaptic(device_id); +#endif #endif } @@ -3684,6 +3722,7 @@ } break; +#ifdef GAMEPAD_AS_RPC // ------------------------------ // SDLControllerManager_tab // ------------------------------ @@ -3753,7 +3792,6 @@ #ifdef SDL_HAPTIC_ANDROID Android_AddHaptic(data.device_id, data.device_name); - #endif SDL_free(data.device_name); @@ -3769,6 +3807,8 @@ } break; +#endif + // ------------------------------ // HIDDeviceManager_tab