diff options
-rw-r--r-- | dix/getevents.c | 7 | ||||
-rw-r--r-- | include/inputstr.h | 2 |
2 files changed, 5 insertions, 4 deletions
diff --git a/dix/getevents.c b/dix/getevents.c index b60ddc006..3b40a5bb7 100644 --- a/dix/getevents.c +++ b/dix/getevents.c @@ -1738,6 +1738,7 @@ GetTouchEvents(InternalEvent *events, DeviceIntPtr dev, uint32_t ddx_touchid, } touchpoint; int need_rawevent = TRUE; Bool emulate_pointer = FALSE; + int client_id = 0; if (!dev->enabled || !t || !v) return 0; @@ -1761,6 +1762,7 @@ GetTouchEvents(InternalEvent *events, DeviceIntPtr dev, uint32_t ddx_touchid, } need_rawevent = FALSE; + client_id = touchpoint.dix_ti->client_id; } else /* a DDX-submitted touch */ { touchpoint.ti = TouchFindByDDXID(dev, ddx_touchid, (type == XI_TouchBegin)); @@ -1770,6 +1772,7 @@ GetTouchEvents(InternalEvent *events, DeviceIntPtr dev, uint32_t ddx_touchid, type == XI_TouchBegin ? "begin" : "find", ddx_touchid); return 0; } + client_id = touchpoint.ti->client_id; } if (!(flags & TOUCH_CLIENT_ID)) @@ -1787,7 +1790,7 @@ GetTouchEvents(InternalEvent *events, DeviceIntPtr dev, uint32_t ddx_touchid, raw = &events->raw_event; events++; num_events++; - init_raw(dev, raw, ms, type, touchpoint.ti->client_id); + init_raw(dev, raw, ms, type, client_id); set_raw_valuators(raw, &mask, raw->valuators.data_raw); } @@ -1877,7 +1880,7 @@ GetTouchEvents(InternalEvent *events, DeviceIntPtr dev, uint32_t ddx_touchid, event->root = scr->root->drawable.id; event_set_root_coordinates(event, screenx, screeny); - event->touchid = touchpoint.ti->client_id; + event->touchid = client_id; event->flags = flags; if (emulate_pointer) diff --git a/include/inputstr.h b/include/inputstr.h index 9881c7e46..518e2f4f7 100644 --- a/include/inputstr.h +++ b/include/inputstr.h @@ -301,7 +301,6 @@ typedef struct _ValuatorClassRec { } ValuatorClassRec; typedef struct _TouchPointInfo { - /* client_id must be first element, see GetTouchEvents */ uint32_t client_id; /* touch ID as seen in client events */ int sourceid; /* Source device's ID for this touchpoint */ Bool active; /* whether or not the touch is active */ @@ -328,7 +327,6 @@ typedef struct _TouchPointInfo { typedef struct _TouchListener TouchListener; typedef struct _DDXTouchPointInfo { - /* client_id must be first element, see GetTouchEvents */ uint32_t client_id; /* touch ID as seen in client events */ Bool active; /* whether or not the touch is active */ uint32_t ddx_id; /* touch ID given by the DDX */ |