From 56d720592155c55617728e8ddf1ba8192fe5d46c Mon Sep 17 00:00:00 2001 From: Povilas Kanapickas Date: Sat, 10 Oct 2020 02:51:33 +0300 Subject: [PATCH] dix: Extract DeliverDeviceClassesChangedEvent() utility function --- dix/devices.c | 23 +++++++++++++++++++++++ dix/inpututils.c | 1 - dix/touch.c | 28 ++-------------------------- include/input.h | 3 +-- 4 files changed, 26 insertions(+), 29 deletions(-) diff --git a/dix/devices.c b/dix/devices.c index 59a4dbfee..4ac27a2d8 100644 --- a/dix/devices.c +++ b/dix/devices.c @@ -2811,3 +2811,26 @@ valuator_set_mode(DeviceIntPtr dev, int axis, int mode) dev->valuator->axes[i].mode = mode; } } + +void +DeliverDeviceClassesChangedEvent(int sourceid, Time time) +{ + DeviceIntPtr dev; + int num_events = 0; + InternalEvent dcce; + + dixLookupDevice(&dev, sourceid, serverClient, DixWriteAccess); + + if (!dev) + return; + + /* UpdateFromMaster generates at most one event */ + UpdateFromMaster(&dcce, dev, DEVCHANGE_POINTER_EVENT, &num_events); + BUG_WARN(num_events > 1); + + if (num_events) { + dcce.any.time = time; + /* FIXME: This doesn't do anything */ + dev->public.processInputProc(&dcce, dev); + } +} diff --git a/dix/inpututils.c b/dix/inpututils.c index e7e1ce815..b60ffff0d 100644 --- a/dix/inpututils.c +++ b/dix/inpututils.c @@ -1245,4 +1245,3 @@ CopySprite(SpritePtr src, SpritePtr dst) dst->spriteTraceGood = src->spriteTraceGood; return TRUE; } - diff --git a/dix/touch.c b/dix/touch.c index 193931294..4e6910f26 100644 --- a/dix/touch.c +++ b/dix/touch.c @@ -447,7 +447,7 @@ TouchEventHistoryReplay(TouchPointInfoPtr ti, DeviceIntPtr dev, XID resource) if (!ti->history) return; - TouchDeliverDeviceClassesChangedEvent(ti, ti->history[0].time, resource); + DeliverDeviceClassesChangedEvent(ti->sourceid, ti->history[0].time); for (i = 0; i < ti->history_elements; i++) { DeviceEvent *ev = &ti->history[i]; @@ -471,30 +471,6 @@ TouchEventHistoryReplay(TouchPointInfoPtr ti, DeviceIntPtr dev, XID resource) } } -void -TouchDeliverDeviceClassesChangedEvent(TouchPointInfoPtr ti, Time time, - XID resource) -{ - DeviceIntPtr dev; - int num_events = 0; - InternalEvent dcce; - - dixLookupDevice(&dev, ti->sourceid, serverClient, DixWriteAccess); - - if (!dev) - return; - - /* UpdateFromMaster generates at most one event */ - UpdateFromMaster(&dcce, dev, DEVCHANGE_POINTER_EVENT, &num_events); - BUG_WARN(num_events > 1); - - if (num_events) { - dcce.any.time = time; - /* FIXME: This doesn't do anything */ - dev->public.processInputProc(&dcce, dev); - } -} - Bool TouchBuildDependentSpriteTrace(DeviceIntPtr dev, SpritePtr sprite) { @@ -1073,7 +1049,7 @@ TouchEmitTouchEnd(DeviceIntPtr dev, TouchPointInfoPtr ti, int flags, XID resourc flags |= TOUCH_CLIENT_ID; if (ti->emulate_pointer) flags |= TOUCH_POINTER_EMULATED; - TouchDeliverDeviceClassesChangedEvent(ti, GetTimeInMillis(), resource); + DeliverDeviceClassesChangedEvent(ti->sourceid, GetTimeInMillis()); GetDixTouchEnd(&event, dev, ti, flags); DeliverTouchEvents(dev, ti, &event, resource); if (ti->num_grabs == 0) diff --git a/include/input.h b/include/input.h index e57de626d..8732890a0 100644 --- a/include/input.h +++ b/include/input.h @@ -549,6 +549,7 @@ extern int AllocXTestDevice(ClientPtr client, const char *name, extern BOOL IsXTestDevice(DeviceIntPtr dev, DeviceIntPtr master); extern DeviceIntPtr GetXTestDevice(DeviceIntPtr master); extern void SendDevicePresenceEvent(int deviceid, int type); +extern void DeliverDeviceClassesChangedEvent(int sourceid, Time time); extern _X_EXPORT InputAttributes *DuplicateInputAttributes(InputAttributes * attrs); extern _X_EXPORT void FreeInputAttributes(InputAttributes * attrs); @@ -612,8 +613,6 @@ extern int TouchListenerAcceptReject(DeviceIntPtr dev, TouchPointInfoPtr ti, extern int TouchAcceptReject(ClientPtr client, DeviceIntPtr dev, int mode, uint32_t touchid, Window grab_window, XID *error); extern void TouchEndPhysicallyActiveTouches(DeviceIntPtr dev); -extern void TouchDeliverDeviceClassesChangedEvent(TouchPointInfoPtr ti, - Time time, XID resource); extern void TouchEmitTouchEnd(DeviceIntPtr dev, TouchPointInfoPtr ti, int flags, XID resource); extern void TouchAcceptAndEnd(DeviceIntPtr dev, int touchid);