Mercurial > sdl-ios-xcode
changeset 4674:89d5e2201b00
Prevented SDL_SendDown from sending on nonexistent touch devices.
author | Jim Grandpre <jim.tla@gmail.com> |
---|---|
date | Thu, 29 Jul 2010 12:24:34 -0400 |
parents | c17ac64abb70 |
children | 641c13b0ce5f |
files | src/events/SDL_touch.c src/video/cocoa/SDL_cocoawindow.m |
diffstat | 2 files changed, 20 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/events/SDL_touch.c Wed Jul 28 23:32:13 2010 -0700 +++ b/src/events/SDL_touch.c Thu Jul 29 12:24:34 2010 -0400 @@ -312,6 +312,10 @@ int posted; SDL_Touch* touch = SDL_GetTouch(id); + if(!touch) { + return SDL_TouchNotFoundError(id); + } + if(down) { SDL_Finger *finger = SDL_GetFinger(touch,fingerid); if(finger == NULL) { @@ -374,7 +378,10 @@ int yrel; int x_max = 0, y_max = 0; - if (!touch || touch->flush_motion) { + if (!touch) { + return SDL_TouchNotFoundError(id); + } + if(touch->flush_motion) { return 0; } @@ -459,8 +466,9 @@ int posted; Uint32 type; + if (!touch) { - return 0; + return SDL_TouchNotFoundError(id); } /* Figure out which event to perform */ @@ -510,4 +518,13 @@ return touch->name; } +int SDL_TouchNotFoundError(int id) { + printf("ERROR: Cannot send touch on non-existent device with id: %i make sure SDL_AddTouch has been called\n",id); + printf("ERROR: There are %i touches installed with Id's:\n",SDL_num_touch); + int i; + for(i=0;i < SDL_num_touch;i++) { + printf("ERROR: %i\n",SDL_touchPads[i]->id); + } + return 0; +} /* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/cocoa/SDL_cocoawindow.m Wed Jul 28 23:32:13 2010 -0700 +++ b/src/video/cocoa/SDL_cocoawindow.m Thu Jul 29 12:24:34 2010 -0400 @@ -313,7 +313,7 @@ touch.pressureres = touch.pressure_max - touch.pressure_min; if (SDL_AddTouch(&touch, "") < 0) { - return; + continue; } } float x = [touch normalizedPosition].x;