diff options
author | Daniel Stone <daniel@fooishbar.org> | 2011-12-14 15:29:48 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2011-12-20 13:01:03 +1000 |
commit | bec51f5ec6575a1971ae5371a4b6d8563933032c (patch) | |
tree | f9e1b1ce56967d25988931c81f33d3de25e70faa /dix/getevents.c | |
parent | 5c63dc6dbcbebbb19d79575a9f1ec9878e6537f1 (diff) |
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>
Diffstat (limited to 'dix/getevents.c')
-rw-r--r-- | dix/getevents.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/dix/getevents.c b/dix/getevents.c index 39f8ca7b6..b38928187 100644 --- a/dix/getevents.c +++ b/dix/getevents.c @@ -156,6 +156,17 @@ key_autorepeats(DeviceIntPtr pDev, int key_code) } 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) { memset(event, 0, sizeof(RawDeviceEvent)); @@ -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. |