Mercurial > sdl-ios-xcode
diff src/video/x11/SDL_x11mouse.c @ 3772:9087a84cba51 gsoc2008_manymouse
First comments and code upgrades in X11
author | Szymon Wilczek <kazeuser@gmail.com> |
---|---|
date | Sat, 02 Aug 2008 17:40:49 +0000 |
parents | 24db5d326f57 |
children | e5011833348a |
line wrap: on
line diff
--- a/src/video/x11/SDL_x11mouse.c Sat Aug 02 14:02:28 2008 +0000 +++ b/src/video/x11/SDL_x11mouse.c Sat Aug 02 17:40:49 2008 +0000 @@ -35,19 +35,26 @@ XDeviceInfo *DevList; XAnyClassPtr deviceClass; SDL_VideoData *data = (SDL_VideoData *) _this->driverdata; - + + /*we're getting the list of input devices*/ DevList=XListInputDevices(data->display, &numOfDevices); SDL_XDevices=(XDevice**) SDL_malloc(sizeof(XDevice)); + + /*we're aquiring valuators:mices, tablets, etc.*/ for(i=0;i<numOfDevices;++i) { + /*if it's the core pointer or core keyborard we don't want it*/ if((DevList[i].use!=IsXPointer && DevList[i].use!=IsXKeyboard)) { + /*we have to check all of the device classes*/ deviceClass=DevList[i].inputclassinfo; for(j=0;j<DevList[i].num_classes;++j) { - if(deviceClass->class==ValuatorClass) + if(deviceClass->class==ValuatorClass)/*bingo;)*/ { XValuatorInfo* valInfo; + SDL_Mouse mouse; + newDevices= (XDevice**) SDL_realloc(SDL_XDevices, (index+1)*sizeof(*newDevices)); if(!newDevices) { @@ -56,10 +63,14 @@ } SDL_XDevices=newDevices; SDL_XDevices[index]=XOpenDevice(data->display,DevList[i].id); - SDL_Mouse mouse; SDL_zero(mouse); + + /*the id of the device differs from its index + *so we're assigning the index of a device to it's id*/ SDL_SetIndexId(DevList[i].id,index); + /*lets get the device parameters*/ valInfo=(XValuatorInfo*)deviceClass; + /*if the device reports pressure, lets check it parameteres*/ if(valInfo->num_axes>2) { data->mouse = SDL_AddMouse(&mouse, index++,DevList[i].name,valInfo->axes[2].max_value,valInfo->axes[2].min_value); @@ -70,11 +81,13 @@ } break; } + /*if it's not class we're interested in, lets go further*/ deviceClass=(XAnyClassPtr)((char*)deviceClass + deviceClass->length); } } } XFreeDeviceList(DevList); + SDL_NumOfXDevices=index; } @@ -83,6 +96,7 @@ { SDL_VideoData *data = (SDL_VideoData *) _this->driverdata; + /*Lets delete all of the mice*/ SDL_MouseQuit(); }