dix: add GetTouchOwnership event API

No callers yet. This API is not to be used by drivers, it's an API for the
DIX which will create ownership events mainly on touch acceptance/rejection.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
This commit is contained in:
Daniel Stone 2011-12-14 15:29:48 +10:00 committed by Peter Hutterer
parent 5c63dc6dbc
commit bec51f5ec6
2 changed files with 43 additions and 0 deletions

View File

@ -155,6 +155,17 @@ key_autorepeats(DeviceIntPtr pDev, int key_code)
(1 << (key_code & 7)));
}
static void
init_touch_ownership(DeviceIntPtr dev, TouchOwnershipEvent *event, Time ms)
{
memset(event, 0, sizeof(TouchOwnershipEvent));
event->header = ET_Internal;
event->type = ET_TouchOwnership;
event->length = sizeof(TouchOwnershipEvent);
event->time = ms;
event->deviceid = dev->id;
}
static void
init_raw(DeviceIntPtr dev, RawDeviceEvent *event, Time ms, int type, int detail)
{
@ -1631,6 +1642,30 @@ GetProximityEvents(InternalEvent *events, DeviceIntPtr pDev, int type, const Val
return num_events;
}
int
GetTouchOwnershipEvents(InternalEvent *events, DeviceIntPtr pDev,
TouchPointInfoPtr ti, uint8_t reason, XID resource,
uint32_t flags)
{
TouchClassPtr t = pDev->touch;
TouchOwnershipEvent *event;
CARD32 ms = GetTimeInMillis();
if (!pDev->enabled || !t || !ti)
return 0;
event = &events->touch_ownership_event;
init_touch_ownership(pDev, event, ms);
event->touchid = ti->client_id;
event->sourceid = ti->sourceid;
event->resource = resource;
event->flags = flags;
event->reason = reason;
return 1;
}
/**
* Generate internal events representing this touch event and enqueue them
* on the event queue.

View File

@ -503,6 +503,14 @@ void QueueTouchEvents(DeviceIntPtr device,
int flags,
const ValuatorMask *mask);
extern int GetTouchOwnershipEvents(
InternalEvent *events,
DeviceIntPtr pDev,
TouchPointInfoPtr ti,
uint8_t mode,
XID resource,
uint32_t flags);
extern _X_EXPORT int GetProximityEvents(
InternalEvent *events,
DeviceIntPtr pDev,