Merging r6181 through r6184 from trunk to ogl-es branch
- Changes to touch-input handling on X11 git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/branches/ogl-es@6185 dfc29bdd-3216-0410-991c-e03cc46cb475
This commit is contained in:
		| @@ -2040,39 +2040,19 @@ void CIrrDeviceLinux::initXInput2() | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| 	int cnt = 0; | ||||
| 	XIDeviceInfo *di = XIQueryDevice(XDisplay, XIAllDevices, &cnt); | ||||
| 	if ( di ) | ||||
| 	{ | ||||
| 		for (int i = 0; i < cnt; ++i) | ||||
| 		{ | ||||
| 			bool hasTouchClass = false; | ||||
| 			XIDeviceInfo *dev = &di[i]; | ||||
| 			for (int j = 0; j < dev->num_classes; ++j) | ||||
| 			{ | ||||
| 				if (dev->classes[j]->type == XITouchClass) | ||||
| 				{ | ||||
| 					hasTouchClass = true; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			if ( hasTouchClass ) | ||||
| 			{ | ||||
| 				XIEventMask eventMask; | ||||
| 				unsigned char mask[XIMaskLen(XI_TouchEnd)]; | ||||
| 				memset(mask, 0, sizeof(mask)); | ||||
| 				eventMask.deviceid = dev->deviceid; | ||||
| 				eventMask.mask_len = sizeof(mask); | ||||
| 				eventMask.mask = mask; | ||||
| 				XISetMask(eventMask.mask, XI_TouchBegin); | ||||
| 				XISetMask(eventMask.mask, XI_TouchUpdate); | ||||
| 				XISetMask(eventMask.mask, XI_TouchEnd); | ||||
| 	// So far we only use XInput2 for touch events. | ||||
| 	// So we enable those and disable all other events for now. | ||||
| 	XIEventMask eventMask; | ||||
| 	unsigned char mask[XIMaskLen(XI_TouchEnd)]; | ||||
| 	memset(mask, 0, sizeof(mask)); | ||||
| 	eventMask.deviceid = XIAllMasterDevices; | ||||
| 	eventMask.mask_len = sizeof(mask); | ||||
| 	eventMask.mask = mask; | ||||
| 	XISetMask(eventMask.mask, XI_TouchBegin); | ||||
| 	XISetMask(eventMask.mask, XI_TouchUpdate); | ||||
| 	XISetMask(eventMask.mask, XI_TouchEnd); | ||||
|  | ||||
| 				XISelectEvents(XDisplay, XWindow, &eventMask, 1); | ||||
| 			} | ||||
| 		} | ||||
| 		XIFreeDeviceInfo(di); | ||||
| 	} | ||||
| 	XISelectEvents(XDisplay, XWindow, &eventMask, 1); | ||||
| #endif | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user