From 9b3c2258aa9b9a8aedaee653c8570f4f81030f6d Mon Sep 17 00:00:00 2001 From: Sylvain Becker Date: Tue, 2 Apr 2019 17:23:55 +0200 Subject: [PATCH] Bug 4576: remove touch/mouse duplication for Android --- src/video/android/SDL_androidtouch.c | 40 +--------------------------- 1 file changed, 1 insertion(+), 39 deletions(-) diff --git a/src/video/android/SDL_androidtouch.c b/src/video/android/SDL_androidtouch.c index fde33757b..5d508aa19 100644 --- a/src/video/android/SDL_androidtouch.c +++ b/src/video/android/SDL_androidtouch.c @@ -40,23 +40,11 @@ #define ACTION_POINTER_DOWN 5 #define ACTION_POINTER_UP 6 -static void Android_GetWindowCoordinates(SDL_Window *window, float x, float y, - int *window_x, int *window_y) -{ - int window_w, window_h; - - SDL_GetWindowSize(window, &window_w, &window_h); - *window_x = (int)(x * window_w); - *window_y = (int)(y * window_h); -} - -static SDL_bool separate_mouse_and_touch = SDL_FALSE; - static void SDLCALL SeparateEventsHintWatcher(void *userdata, const char *name, const char *oldValue, const char *newValue) { - separate_mouse_and_touch = (newValue && (SDL_strcmp(newValue, "1") == 0)); + SDL_bool separate_mouse_and_touch = (newValue && (SDL_strcmp(newValue, "1") == 0)); Android_JNI_SetSeparateMouseAndTouch(separate_mouse_and_touch); } @@ -74,7 +62,6 @@ void Android_QuitTouch(void) { SDL_DelHintCallback(SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH, SeparateEventsHintWatcher, NULL); - separate_mouse_and_touch = SDL_FALSE; } void Android_OnTouch(SDL_Window *window, int touch_device_id_in, int pointer_finger_id_in, int action, float x, float y, float p) @@ -82,7 +69,6 @@ void Android_OnTouch(SDL_Window *window, int touch_device_id_in, int pointer_fin SDL_TouchID touchDeviceId = 0; SDL_FingerID fingerId = 0; int window_x, window_y; - static SDL_FingerID pointerFingerID = 0; if (!window) { return; @@ -96,40 +82,16 @@ void Android_OnTouch(SDL_Window *window, int touch_device_id_in, int pointer_fin fingerId = (SDL_FingerID)pointer_finger_id_in; switch (action) { case ACTION_DOWN: - /* Primary pointer down */ - if (!separate_mouse_and_touch) { - Android_GetWindowCoordinates(window, x, y, &window_x, &window_y); - /* send moved event */ - SDL_SendMouseMotion(window, SDL_TOUCH_MOUSEID, 0, window_x, window_y); - /* send mouse down event */ - SDL_SendMouseButton(window, SDL_TOUCH_MOUSEID, SDL_PRESSED, SDL_BUTTON_LEFT); - } - pointerFingerID = fingerId; case ACTION_POINTER_DOWN: - /* Non primary pointer down */ SDL_SendTouch(touchDeviceId, fingerId, SDL_TRUE, x, y, p); break; case ACTION_MOVE: - if (!pointerFingerID) { - if (!separate_mouse_and_touch) { - Android_GetWindowCoordinates(window, x, y, &window_x, &window_y); - /* send moved event */ - SDL_SendMouseMotion(window, SDL_TOUCH_MOUSEID, 0, window_x, window_y); - } - } SDL_SendTouchMotion(touchDeviceId, fingerId, x, y, p); break; case ACTION_UP: - /* Primary pointer up */ - if (!separate_mouse_and_touch) { - /* send mouse up */ - SDL_SendMouseButton(window, SDL_TOUCH_MOUSEID, SDL_RELEASED, SDL_BUTTON_LEFT); - } - pointerFingerID = (SDL_FingerID) 0; case ACTION_POINTER_UP: - /* Non primary pointer up */ SDL_SendTouch(touchDeviceId, fingerId, SDL_FALSE, x, y, p); break;