Skip to content
Permalink
Browse files

Fixed bug 2054 - SDL_GetError: "Unknown touch device"

Volumetric

The "Unknown touch device" message appears because the initial touch device setup loop uses SDL_GetTouch() as a guard for calling SDL_AddTouch().  SDL_GetTouch() will always report "Unknown touch device" since the device hasn't been added yet.  The SDL_GetTouch() call is unnecessary since SDL_AddTouch() calls SDL_GetTouchIndex() to verify that the device hasn't been added yet, and SDL_GetTouchIndex() has the benefit of not reporting an error for a device it can't find.
  • Loading branch information
slouken committed May 28, 2015
1 parent 32d6dcd commit 6e67c949c1b2f1d5be50b85e4e1b7aa00a8a6982
@@ -951,10 +951,8 @@ - (void)handleTouches:(NSTouchPhase) phase withEvent:(NSEvent *) theEvent

for (NSTouch *touch in touches) {
const SDL_TouchID touchId = (SDL_TouchID)(intptr_t)[touch device];
if (!SDL_GetTouch(touchId)) {
if (SDL_AddTouch(touchId, "") < 0) {
return;
}
if (SDL_AddTouch(touchId, "") < 0) {
return;
}

const SDL_FingerID fingerId = (SDL_FingerID)(intptr_t)[touch identity];
@@ -376,10 +376,8 @@ Emscripten_HandleTouch(int eventType, const EmscriptenTouchEvent *touchEvent, vo
int i;

SDL_TouchID deviceId = 0;
if (!SDL_GetTouch(deviceId)) {
if (SDL_AddTouch(deviceId, "") < 0) {
return 0;
}
if (SDL_AddTouch(deviceId, "") < 0) {
return 0;
}

for (i = 0; i < touchEvent->numTouches; i++) {
@@ -89,11 +89,9 @@ touch_handle_touch(void *data,
*/

SDL_TouchID deviceId = 0;
if (!SDL_GetTouch(deviceId)) {
if (SDL_AddTouch(deviceId, "qt_touch_extension") < 0) {
SDL_Log("error: can't add touch %s, %d", __FILE__, __LINE__);
}
}
if (SDL_AddTouch(deviceId, "qt_touch_extension") < 0) {
SDL_Log("error: can't add touch %s, %d", __FILE__, __LINE__);
}

switch (touchState) {
case QtWaylandTouchPointPressed:
@@ -849,10 +849,8 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
PTOUCHINPUT input = &inputs[i];

const SDL_TouchID touchId = (SDL_TouchID)((size_t)input->hSource);
if (!SDL_GetTouch(touchId)) {
if (SDL_AddTouch(touchId, "") < 0) {
continue;
}
if (SDL_AddTouch(touchId, "") < 0) {
continue;
}

/* Get the normalized coordinates for the window */
@@ -197,9 +197,7 @@ X11_InitXinput2Multitouch(_THIS)
continue;

touchId = t->sourceid;
if (!SDL_GetTouch(touchId)) {
SDL_AddTouch(touchId, dev->name);
}
SDL_AddTouch(touchId, dev->name);
}
}
X11_XIFreeDeviceInfo(info);

0 comments on commit 6e67c94

Please sign in to comment.