Fixed bug 1781 - SDL sets an error for the initial touch on Android.
authorSam Lantinga <slouken@libsdl.org>
Tue, 02 Apr 2013 07:51:23 -0700
changeset 7043 fb7b426ab660
parent 7042 6460bf6d33cf
child 7044 30b7b0f09c51
Fixed bug 1781 - SDL sets an error for the initial touch on Android. Philipp Wiesemann SDL sets an error to be queried with SDL_GetError() for the initial touch on Android. Android_OnTouch() in SDL_androidtouch.c uses SDL_GetTouch() to check if a touch device was already added. SDL_GetTouch() sets the error "Unknown touch device" for an out of range access because touch devices are added after initial touch. I think this error is confusing because it always happens by design. I attached a patch which removes the call to SDL_GetTouch() and only uses SDL_AddTouch() which does the check (if already added) again and does not set an error (if not added yet).
src/video/android/SDL_androidtouch.c
--- a/src/video/android/SDL_androidtouch.c	Mon Apr 01 23:15:21 2013 -0700
+++ b/src/video/android/SDL_androidtouch.c	Tue Apr 02 07:51:23 2013 -0700
@@ -63,10 +63,8 @@
     }
 
     touchDeviceId = (SDL_TouchID)touch_device_id_in;
-    if (!SDL_GetTouch(touchDeviceId)) {
-        if (SDL_AddTouch(touchDeviceId, "") < 0) {
-             SDL_Log("error: can't add touch %s, %d", __FILE__, __LINE__);
-        }
+    if (SDL_AddTouch(touchDeviceId, "") < 0) {
+        SDL_Log("error: can't add touch %s, %d", __FILE__, __LINE__);
     }
 
     fingerId = (SDL_FingerID)pointer_finger_id_in;