Backport device properties to XI 1.5 instead of XI 2.0
This commit is contained in:
parent
8b9ed7dec2
commit
de1573172a
|
@ -52,6 +52,7 @@ extern Mask DeviceOwnerGrabButtonMask;
|
|||
extern Mask DeviceButtonGrabMask;
|
||||
extern Mask DeviceButtonMotionMask;
|
||||
extern Mask DevicePresenceNotifyMask;
|
||||
extern Mask DevicePropertyNotifyMask;
|
||||
extern Mask DeviceEnterWindowMask;
|
||||
extern Mask DeviceLeaveWindowMask;
|
||||
extern Mask PropagateMask[];
|
||||
|
@ -72,6 +73,7 @@ extern int DeviceButtonStateNotify;
|
|||
extern int DeviceMappingNotify;
|
||||
extern int ChangeDeviceNotify;
|
||||
extern int DevicePresenceNotify;
|
||||
extern int DevicePropertyNotify;
|
||||
extern int DeviceEnterNotify;
|
||||
extern int DeviceLeaveNotify;
|
||||
|
||||
|
|
93
Xi/extinit.c
93
Xi/extinit.c
|
@ -210,22 +210,24 @@ static int (*ProcIVector[])(ClientPtr) = {
|
|||
ProcXSetDeviceValuators, /* 33 */
|
||||
ProcXGetDeviceControl, /* 34 */
|
||||
ProcXChangeDeviceControl, /* 35 */
|
||||
ProcXQueryDevicePointer, /* 36 */
|
||||
ProcXWarpDevicePointer, /* 37 */
|
||||
ProcXChangeDeviceCursor, /* 38 */
|
||||
ProcXChangeDeviceHierarchy, /* 39 */
|
||||
ProcXChangeWindowAccess, /* 40 */
|
||||
ProcXQueryWindowAccess, /* 41 */
|
||||
ProcXSetClientPointer, /* 42 */
|
||||
ProcXGetClientPointer, /* 43 */
|
||||
ProcXiSelectEvent, /* 44 */
|
||||
ProcXExtendedGrabDevice, /* 45 */
|
||||
ProcXListDeviceProperties, /* 46 */
|
||||
ProcXQueryDeviceProperty, /* 47 */
|
||||
ProcXConfigureDeviceProperty, /* 48 */
|
||||
ProcXChangeDeviceProperty, /* 49 */
|
||||
ProcXDeleteDeviceProperty, /* 50 */
|
||||
ProcXGetDeviceProperty /* 51 */
|
||||
/* XI 1.5 */
|
||||
ProcXListDeviceProperties, /* 36 */
|
||||
ProcXQueryDeviceProperty, /* 37 */
|
||||
ProcXConfigureDeviceProperty, /* 38 */
|
||||
ProcXChangeDeviceProperty, /* 39 */
|
||||
ProcXDeleteDeviceProperty, /* 40 */
|
||||
ProcXGetDeviceProperty, /* 41 */
|
||||
/* XI 2 */
|
||||
ProcXQueryDevicePointer, /* 42 */
|
||||
ProcXWarpDevicePointer, /* 43 */
|
||||
ProcXChangeDeviceCursor, /* 44 */
|
||||
ProcXChangeDeviceHierarchy, /* 45 */
|
||||
ProcXChangeWindowAccess, /* 46 */
|
||||
ProcXQueryWindowAccess, /* 47 */
|
||||
ProcXSetClientPointer, /* 48 */
|
||||
ProcXGetClientPointer, /* 49 */
|
||||
ProcXiSelectEvent, /* 50 */
|
||||
ProcXExtendedGrabDevice /* 51 */
|
||||
};
|
||||
|
||||
/* For swapped clients */
|
||||
|
@ -266,22 +268,22 @@ static int (*SProcIVector[])(ClientPtr) = {
|
|||
SProcXSetDeviceValuators, /* 33 */
|
||||
SProcXGetDeviceControl, /* 34 */
|
||||
SProcXChangeDeviceControl, /* 35 */
|
||||
SProcXQueryDevicePointer, /* 36 */
|
||||
SProcXWarpDevicePointer, /* 37 */
|
||||
SProcXChangeDeviceCursor, /* 38 */
|
||||
SProcXChangeDeviceHierarchy, /* 39 */
|
||||
SProcXChangeWindowAccess, /* 40 */
|
||||
SProcXQueryWindowAccess, /* 41 */
|
||||
SProcXSetClientPointer, /* 42 */
|
||||
SProcXGetClientPointer, /* 43 */
|
||||
SProcXiSelectEvent, /* 44 */
|
||||
SProcXExtendedGrabDevice, /* 45 */
|
||||
SProcXListDeviceProperties, /* 46 */
|
||||
SProcXQueryDeviceProperty, /* 47 */
|
||||
SProcXConfigureDeviceProperty, /* 48 */
|
||||
SProcXChangeDeviceProperty, /* 49 */
|
||||
SProcXDeleteDeviceProperty, /* 50 */
|
||||
SProcXGetDeviceProperty /* 51 */
|
||||
SProcXListDeviceProperties, /* 36 */
|
||||
SProcXQueryDeviceProperty, /* 37 */
|
||||
SProcXConfigureDeviceProperty, /* 38 */
|
||||
SProcXChangeDeviceProperty, /* 39 */
|
||||
SProcXDeleteDeviceProperty, /* 40 */
|
||||
SProcXGetDeviceProperty, /* 41 */
|
||||
SProcXQueryDevicePointer, /* 42 */
|
||||
SProcXWarpDevicePointer, /* 43 */
|
||||
SProcXChangeDeviceCursor, /* 44 */
|
||||
SProcXChangeDeviceHierarchy, /* 45 */
|
||||
SProcXChangeWindowAccess, /* 46 */
|
||||
SProcXQueryWindowAccess, /* 47 */
|
||||
SProcXSetClientPointer, /* 48 */
|
||||
SProcXGetClientPointer, /* 49 */
|
||||
SProcXiSelectEvent, /* 50 */
|
||||
SProcXExtendedGrabDevice /* 51 */
|
||||
};
|
||||
|
||||
/*****************************************************************
|
||||
|
@ -308,6 +310,7 @@ Mask DeviceOwnerGrabButtonMask;
|
|||
Mask DeviceButtonGrabMask;
|
||||
Mask DeviceButtonMotionMask;
|
||||
Mask DevicePresenceNotifyMask;
|
||||
Mask DevicePropertyNotifyMask;
|
||||
Mask DeviceEnterWindowMask;
|
||||
Mask DeviceLeaveWindowMask;
|
||||
|
||||
|
@ -327,6 +330,7 @@ int DeviceButtonStateNotify;
|
|||
int DeviceMappingNotify;
|
||||
int ChangeDeviceNotify;
|
||||
int DevicePresenceNotify;
|
||||
int DevicePropertyNotify;
|
||||
int DeviceEnterNotify;
|
||||
int DeviceLeaveNotify;
|
||||
|
||||
|
@ -589,6 +593,17 @@ SDevicePresenceNotifyEvent (devicePresenceNotify *from, devicePresenceNotify *to
|
|||
swaps(&to->control, n);
|
||||
}
|
||||
|
||||
static void
|
||||
SDevicePropertyNotifyEvent (devicePropertyNotify *from, devicePropertyNotify *to)
|
||||
{
|
||||
char n;
|
||||
|
||||
*to = *from;
|
||||
swaps(&to->sequenceNumber,n);
|
||||
swapl(&to->time, n);
|
||||
swapl(&to->atom, n);
|
||||
}
|
||||
|
||||
static void
|
||||
SDeviceEnterNotifyEvent (deviceEnterNotify *from, deviceEnterNotify *to)
|
||||
{
|
||||
|
@ -786,7 +801,8 @@ FixExtensionEvents(ExtensionEntry * extEntry)
|
|||
DeviceKeyStateNotify = ChangeDeviceNotify + 1;
|
||||
DeviceButtonStateNotify = DeviceKeyStateNotify + 1;
|
||||
DevicePresenceNotify = DeviceButtonStateNotify + 1;
|
||||
DeviceEnterNotify = DevicePresenceNotify + 1;
|
||||
DevicePropertyNotify = DevicePresenceNotify + 1;
|
||||
DeviceEnterNotify = DevicePropertyNotify + 1;
|
||||
DeviceLeaveNotify = DeviceEnterNotify + 1;
|
||||
|
||||
event_base[KeyClass] = DeviceKeyPress;
|
||||
|
@ -876,6 +892,9 @@ FixExtensionEvents(ExtensionEntry * extEntry)
|
|||
DevicePresenceNotifyMask = GetNextExtEventMask();
|
||||
SetEventInfo(DevicePresenceNotifyMask, _devicePresence);
|
||||
|
||||
DevicePropertyNotifyMask = GetNextExtEventMask();
|
||||
SetMaskForExtEvent(DevicePropertyNotifyMask, DevicePropertyNotify);
|
||||
|
||||
DeviceEnterWindowMask = GetNextExtEventMask();
|
||||
SetMaskForExtEvent(DeviceEnterWindowMask, DeviceEnterNotify);
|
||||
AllowPropagateSuppress(DeviceEnterWindowMask);
|
||||
|
@ -929,8 +948,9 @@ RestoreExtensionEvents(void)
|
|||
DeviceKeyStateNotify = 13;
|
||||
DeviceButtonStateNotify = 13;
|
||||
DevicePresenceNotify = 14;
|
||||
DeviceEnterNotify = 15;
|
||||
DeviceLeaveNotify = 16;
|
||||
DevicePropertyNotify = 15;
|
||||
DeviceEnterNotify = 16;
|
||||
DeviceLeaveNotify = 17;
|
||||
|
||||
BadDevice = 0;
|
||||
BadEvent = 1;
|
||||
|
@ -969,6 +989,7 @@ IResetProc(ExtensionEntry * unused)
|
|||
EventSwapVector[DeviceMappingNotify] = NotImplemented;
|
||||
EventSwapVector[ChangeDeviceNotify] = NotImplemented;
|
||||
EventSwapVector[DevicePresenceNotify] = NotImplemented;
|
||||
EventSwapVector[DevicePropertyNotify] = NotImplemented;
|
||||
EventSwapVector[DeviceEnterNotify] = NotImplemented;
|
||||
EventSwapVector[DeviceLeaveNotify] = NotImplemented;
|
||||
RestoreExtensionEvents();
|
||||
|
@ -1072,6 +1093,8 @@ SEventIDispatch(xEvent * from, xEvent * to)
|
|||
DO_SWAP(SChangeDeviceNotifyEvent, changeDeviceNotify);
|
||||
else if (type == DevicePresenceNotify)
|
||||
DO_SWAP(SDevicePresenceNotifyEvent, devicePresenceNotify);
|
||||
else if (type == DevicePropertyNotify)
|
||||
DO_SWAP(SDevicePropertyNotifyEvent, devicePropertyNotify);
|
||||
else if (type == DeviceEnterNotify)
|
||||
DO_SWAP(SDeviceEnterNotifyEvent, deviceEnterNotify);
|
||||
else if (type == DeviceLeaveNotify)
|
||||
|
|
|
@ -191,21 +191,18 @@ XIDeleteAllDeviceProperties (DeviceIntPtr device)
|
|||
{
|
||||
XIPropertyPtr prop, next;
|
||||
XIPropertyHandlerPtr curr_handler, next_handler;
|
||||
devicePropertyNotifyEvent event;
|
||||
devicePropertyNotify event;
|
||||
|
||||
for (prop = device->properties.properties; prop; prop = next)
|
||||
{
|
||||
next = prop->next;
|
||||
|
||||
event.type = GenericEvent;
|
||||
event.extension = IReqCode;
|
||||
event.evtype = XI_DevicePropertyNotify;
|
||||
event.length = 0;
|
||||
event.type = DevicePropertyNotify;
|
||||
event.deviceid = device->id;
|
||||
event.state = PropertyDelete;
|
||||
event.atom = prop->propertyName;
|
||||
event.time = currentTime.milliseconds;
|
||||
SendEventToAllWindows(device, XI_DevicePropertyNotifyMask,
|
||||
SendEventToAllWindows(device, DevicePropertyNotifyMask,
|
||||
(xEvent*)&event, 1);
|
||||
|
||||
XIDestroyDeviceProperty(prop);
|
||||
|
@ -226,7 +223,7 @@ int
|
|||
XIDeleteDeviceProperty (DeviceIntPtr device, Atom property, Bool fromClient)
|
||||
{
|
||||
XIPropertyPtr prop, *prev;
|
||||
devicePropertyNotifyEvent event;
|
||||
devicePropertyNotify event;
|
||||
|
||||
for (prev = &device->properties.properties; (prop = *prev); prev = &(prop->next))
|
||||
if (prop->propertyName == property)
|
||||
|
@ -238,15 +235,12 @@ XIDeleteDeviceProperty (DeviceIntPtr device, Atom property, Bool fromClient)
|
|||
if (prop)
|
||||
{
|
||||
*prev = prop->next;
|
||||
event.type = GenericEvent;
|
||||
event.extension = IReqCode;
|
||||
event.length = 0;
|
||||
event.evtype = XI_DevicePropertyNotify;
|
||||
event.type = DevicePropertyNotify;
|
||||
event.deviceid = device->id;
|
||||
event.state = PropertyDelete;
|
||||
event.atom = prop->propertyName;
|
||||
event.time = currentTime.milliseconds;
|
||||
SendEventToAllWindows(device, XI_DevicePropertyNotifyMask,
|
||||
SendEventToAllWindows(device, DevicePropertyNotifyMask,
|
||||
(xEvent*)&event, 1);
|
||||
XIDestroyDeviceProperty (prop);
|
||||
}
|
||||
|
@ -261,7 +255,7 @@ XIChangeDeviceProperty (DeviceIntPtr dev, Atom property, Atom type,
|
|||
Bool fromClient)
|
||||
{
|
||||
XIPropertyPtr prop;
|
||||
devicePropertyNotifyEvent event;
|
||||
devicePropertyNotify event;
|
||||
int size_in_bytes;
|
||||
int total_size;
|
||||
unsigned long total_len;
|
||||
|
@ -379,15 +373,12 @@ XIChangeDeviceProperty (DeviceIntPtr dev, Atom property, Atom type,
|
|||
|
||||
if (sendevent)
|
||||
{
|
||||
event.type = GenericEvent;
|
||||
event.extension = IReqCode;
|
||||
event.length = 0;
|
||||
event.evtype = XI_DevicePropertyNotify;
|
||||
event.type = DevicePropertyNotify;
|
||||
event.deviceid = dev->id;
|
||||
event.state = PropertyNewValue;
|
||||
event.atom = prop->propertyName;
|
||||
event.time = currentTime.milliseconds;
|
||||
SendEventToAllWindows(dev, XI_DevicePropertyNotifyMask,
|
||||
SendEventToAllWindows(dev, DevicePropertyNotifyMask,
|
||||
(xEvent*)&event, 1);
|
||||
}
|
||||
return(Success);
|
||||
|
@ -786,17 +777,14 @@ ProcXGetDeviceProperty (ClientPtr client)
|
|||
|
||||
if (stuff->delete && (reply.bytesAfter == 0))
|
||||
{
|
||||
devicePropertyNotifyEvent event;
|
||||
devicePropertyNotify event;
|
||||
|
||||
event.type = GenericEvent;
|
||||
event.extension = IReqCode;
|
||||
event.length = 0;
|
||||
event.evtype = XI_DevicePropertyNotify;
|
||||
event.type = DevicePropertyNotify;
|
||||
event.deviceid = dev->id;
|
||||
event.state = PropertyDelete;
|
||||
event.atom = prop->propertyName;
|
||||
event.time = currentTime.milliseconds;
|
||||
SendEventToAllWindows(dev, XI_DevicePropertyNotifyMask,
|
||||
SendEventToAllWindows(dev, DevicePropertyNotifyMask,
|
||||
(xEvent*)&event, 1);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user