From 29bb8ec546cfa313c6a94d3669d408029effb566 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Tue, 27 Sep 2011 23:14:16 -0400 Subject: [PATCH] ============================================================ --- src/video/x11/SDL_x11touch.c | 92 ++++++++++++++++++------------------ 1 file changed, 45 insertions(+), 47 deletions(-) diff --git a/src/video/x11/SDL_x11touch.c b/src/video/x11/SDL_x11touch.c index 4b4702a77..9f245ad93 100644 --- a/src/video/x11/SDL_x11touch.c +++ b/src/video/x11/SDL_x11touch.c @@ -38,7 +38,7 @@ X11_InitTouch(_THIS) #ifdef SDL_INPUT_LINUXEV FILE *fd; fd = fopen("/proc/bus/input/devices","r"); - + char c; int i = 0; char line[256]; @@ -47,46 +47,44 @@ X11_InitTouch(_THIS) while(!feof(fd)) { if(fgets(line,256,fd) <=0) continue; if(line[0] == '\n') { - if(vendor == 1386 || vendor==1){ - - sprintf(tstr,"/dev/input/event%i",event); - - SDL_Touch touch; - touch.pressure_max = 0; - touch.pressure_min = 0; - touch.id = event; - - - touch.driverdata = SDL_malloc(sizeof(EventTouchData)); - EventTouchData* data = (EventTouchData*)(touch.driverdata); - - data->x = -1; - data->y = -1; - data->pressure = -1; - data->finger = 0; - data->up = SDL_FALSE; - data->down = SDL_FALSE; - - - data->eventStream = open(tstr, - O_RDONLY | O_NONBLOCK); - ioctl (data->eventStream, EVIOCGNAME (sizeof (tstr)), tstr); - - int abs[5]; - ioctl(data->eventStream,EVIOCGABS(0),abs); - touch.x_min = abs[1]; - touch.x_max = abs[2]; - touch.native_xres = touch.x_max - touch.x_min; - ioctl(data->eventStream,EVIOCGABS(ABS_Y),abs); - touch.y_min = abs[1]; - touch.y_max = abs[2]; - touch.native_yres = touch.y_max - touch.y_min; - ioctl(data->eventStream,EVIOCGABS(ABS_PRESSURE),abs); - touch.pressure_min = abs[1]; - touch.pressure_max = abs[2]; - touch.native_pressureres = touch.pressure_max - touch.pressure_min; - - SDL_AddTouch(&touch, tstr); + if(vendor == 1386 || vendor==1) { + + sprintf(tstr,"/dev/input/event%i",event); + + SDL_Touch touch; + touch.pressure_max = 0; + touch.pressure_min = 0; + touch.id = event; + + touch.driverdata = SDL_malloc(sizeof(EventTouchData)); + EventTouchData* data = (EventTouchData*)(touch.driverdata); + + data->x = -1; + data->y = -1; + data->pressure = -1; + data->finger = 0; + data->up = SDL_FALSE; + data->down = SDL_FALSE; + + data->eventStream = open(tstr, + O_RDONLY | O_NONBLOCK); + ioctl (data->eventStream, EVIOCGNAME (sizeof (tstr)), tstr); + + int abs[5]; + ioctl(data->eventStream,EVIOCGABS(0),abs); + touch.x_min = abs[1]; + touch.x_max = abs[2]; + touch.native_xres = touch.x_max - touch.x_min; + ioctl(data->eventStream,EVIOCGABS(ABS_Y),abs); + touch.y_min = abs[1]; + touch.y_max = abs[2]; + touch.native_yres = touch.y_max - touch.y_min; + ioctl(data->eventStream,EVIOCGABS(ABS_PRESSURE),abs); + touch.pressure_min = abs[1]; + touch.pressure_max = abs[2]; + touch.native_pressureres = touch.pressure_max - touch.pressure_min; + + SDL_AddTouch(&touch, tstr); } vendor = -1; product = -1; @@ -95,20 +93,20 @@ X11_InitTouch(_THIS) else if(line[0] == 'I') { i = 1; while(line[i]) { - sscanf(&line[i],"Vendor=%x",&vendor); - sscanf(&line[i],"Product=%x",&product); - i++; + sscanf(&line[i],"Vendor=%x",&vendor); + sscanf(&line[i],"Product=%x",&product); + i++; } } else if(line[0] == 'H') { i = 1; while(line[i]) { - sscanf(&line[i],"event%d",&event); - i++; + sscanf(&line[i],"event%d",&event); + i++; } } } - + close(fd); #endif }