Lines Matching refs:ti
110 DDXTouchPointInfoPtr ti;
117 ti = &dev->last.touches[i];
118 if (ti->active && ti->ddx_id == ddx_id)
119 return ti;
141 DDXTouchPointInfoPtr ti = NULL;
159 else if (!ti) /* ti is now first non-active touch rec */
160 ti = &dev->last.touches[i];
162 if (!emulate_pointer && ti)
165 if (ti)
171 if (ti) {
174 ti->active = TRUE;
175 ti->ddx_id = ddx_id;
180 ti->client_id = client_id;
181 ti->emulate_pointer = emulate_pointer;
183 return ti;
187 TouchEndDDXTouch(DeviceIntPtr dev, DDXTouchPointInfoPtr ti)
194 ti->active = FALSE;
207 TouchPointInfoPtr ti;
211 ti = &t->touches[index];
213 memset(ti, 0, sizeof(*ti));
215 ti->valuators = valuator_mask_new(v->numAxes);
216 if (!ti->valuators)
219 ti->sprite.spriteTrace = calloc(32, sizeof(*ti->sprite.spriteTrace));
220 if (!ti->sprite.spriteTrace) {
221 valuator_mask_free(&ti->valuators);
224 ti->sprite.spriteTraceSize = 32;
225 ti->sprite.spriteTrace[0] = screenInfo.screens[0]->root;
226 ti->sprite.hot.pScreen = screenInfo.screens[0];
227 ti->sprite.hotPhys.pScreen = screenInfo.screens[0];
229 ti->client_id = -1;
237 TouchPointInfoPtr ti;
242 ti = &device->touch->touches[index];
244 if (ti->active)
245 TouchEndTouch(device, ti);
247 for (i = 0; i < ti->num_listeners; i++)
248 TouchRemoveListener(ti, ti->listeners[0].listener);
250 valuator_mask_free(&ti->valuators);
251 free(ti->sprite.spriteTrace);
252 ti->sprite.spriteTrace = NULL;
253 free(ti->listeners);
254 ti->listeners = NULL;
255 free(ti->history);
256 ti->history = NULL;
257 ti->history_size = 0;
258 ti->history_elements = 0;
269 TouchPointInfoPtr ti;
276 ti = &t->touches[i];
277 if (ti->active && ti->client_id == client_id)
278 return ti;
297 TouchPointInfoPtr ti;
313 ti = &t->touches[i];
314 if (!ti->active) {
315 ti->active = TRUE;
316 ti->client_id = touchid;
317 ti->sourceid = sourceid;
318 ti->emulate_pointer = emulate_pointer;
319 return ti;
325 tmp = reallocarray(t->touches, t->num_touches + 1, sizeof(*ti));
342 TouchEndTouch(DeviceIntPtr dev, TouchPointInfoPtr ti)
346 if (ti->emulate_pointer) {
357 for (i = 0; i < ti->num_listeners; i++)
358 TouchRemoveListener(ti, ti->listeners[0].listener);
360 ti->active = FALSE;
361 ti->pending_finish = FALSE;
362 ti->sprite.spriteTraceGood = 0;
363 free(ti->listeners);
364 ti->listeners = NULL;
365 ti->num_listeners = 0;
366 ti->num_grabs = 0;
367 ti->client_id = 0;
369 TouchEventHistoryFree(ti);
371 valuator_mask_zero(ti->valuators);
382 TouchEventHistoryAllocate(TouchPointInfoPtr ti)
384 if (ti->history)
387 ti->history = calloc(TOUCH_HISTORY_SIZE, sizeof(*ti->history));
388 ti->history_elements = 0;
389 if (ti->history)
390 ti->history_size = TOUCH_HISTORY_SIZE;
391 return ti->history != NULL;
395 TouchEventHistoryFree(TouchPointInfoPtr ti)
397 free(ti->history);
398 ti->history = NULL;
399 ti->history_size = 0;
400 ti->history_elements = 0;
412 TouchEventHistoryPush(TouchPointInfoPtr ti, const DeviceEvent *ev)
414 if (!ti->history)
420 if (ti->history_elements > 0)
435 ti->history[ti->history_elements++] = *ev;
437 if (ti->history_elements > ti->history_size - 1) {
438 ti->history_elements = ti->history_size - 1;
440 ti->sourceid, ti->history_size, ti->client_id);
445 TouchEventHistoryReplay(TouchPointInfoPtr ti, DeviceIntPtr dev, XID resource)
449 if (!ti->history)
452 DeliverDeviceClassesChangedEvent(ti->sourceid, ti->history[0].time);
454 for (i = 0; i < ti->history_elements; i++) {
455 DeviceEvent *ev = &ti->history[i];
460 We're replaying ti->history which contains the TouchBegin +
461 all TouchUpdates for ti. This needs to be passed on to the next
500 * Ensure a window trace is present in ti->sprite, constructing one for
504 TouchBuildSprite(DeviceIntPtr sourcedev, TouchPointInfoPtr ti,
508 SpritePtr sprite = &ti->sprite;
525 ti->listeners = calloc(sprite->spriteTraceGood + 2, sizeof(*ti->listeners));
526 if (!ti->listeners) {
530 ti->num_listeners = 0;
625 TouchResourceIsOwner(TouchPointInfoPtr ti, XID resource)
627 return (ti->listeners[0].listener == resource);
634 TouchAddListener(TouchPointInfoPtr ti, XID resource, int resource_type,
647 ti->listeners[ti->num_listeners].listener = resource;
648 ti->listeners[ti->num_listeners].resource_type = resource_type;
649 ti->listeners[ti->num_listeners].level = level;
650 ti->listeners[ti->num_listeners].state = state;
651 ti->listeners[ti->num_listeners].type = type;
652 ti->listeners[ti->num_listeners].window = window;
653 ti->listeners[ti->num_listeners].grab = g;
655 ti->num_grabs++;
656 ti->num_listeners++;
666 TouchRemoveListener(TouchPointInfoPtr ti, XID resource)
670 for (i = 0; i < ti->num_listeners; i++) {
672 TouchListener *listener = &ti->listeners[i];
680 ti->num_grabs--;
683 for (j = i; j < ti->num_listeners - 1; j++)
684 ti->listeners[j] = ti->listeners[j + 1];
685 ti->num_listeners--;
686 ti->listeners[ti->num_listeners].listener = 0;
687 ti->listeners[ti->num_listeners].state = TOUCH_LISTENER_AWAITING_BEGIN;
695 TouchAddGrabListener(DeviceIntPtr dev, TouchPointInfoPtr ti,
704 TouchEventHistoryAllocate(ti);
709 TouchEventHistoryAllocate(ti);
714 TouchAddListener(ti, grab->resource, RT_NONE, grab->grabtype,
722 TouchAddPassiveGrabListener(DeviceIntPtr dev, TouchPointInfoPtr ti,
726 Bool check_core = IsMaster(dev) && ti->emulate_pointer;
733 TouchAddGrabListener(dev, ti, ev, grab);
737 TouchAddRegularListener(DeviceIntPtr dev, TouchPointInfoPtr ti,
748 if (!mask && !ti->emulate_pointer)
768 TouchEventHistoryAllocate(ti);
770 TouchAddListener(ti, iclients->resource, RT_INPUTCLIENT, XI2,
784 TouchEventHistoryAllocate(ti);
785 TouchAddListener(ti, iclients->resource, RT_INPUTCLIENT, XI,
800 TouchEventHistoryAllocate(ti);
801 TouchAddListener(ti, win->drawable.id, RT_WINDOW, CORE,
813 TouchEventHistoryAllocate(ti);
814 TouchAddListener(ti, oclients->resource, RT_OTHERCLIENT, CORE,
824 TouchAddActiveGrabListener(DeviceIntPtr dev, TouchPointInfoPtr ti,
827 if (!ti->emulate_pointer &&
831 if (!ti->emulate_pointer &&
836 TouchAddGrabListener(dev, ti, ev, grab);
840 TouchSetupListeners(DeviceIntPtr dev, TouchPointInfoPtr ti, InternalEvent *ev)
843 SpritePtr sprite = &ti->sprite;
847 TouchAddActiveGrabListener(dev, ti, ev, dev->deviceGrab.grab);
858 TouchAddPassiveGrabListener(dev, ti, win, ev);
867 delivered = TouchAddRegularListener(dev, ti, win, ev);
880 TouchPointInfoPtr ti;
895 ti = TouchFindByClientID(dev, ev->device_event.touchid);
896 if (!ti)
908 TouchPointInfoPtr ti;
921 ti = &dev->touch->touches[i];
922 if (!ti->active)
925 for (j = 0; j < ti->num_listeners; j++) {
926 if (CLIENT_BITS(ti->listeners[j].listener) != resource)
929 nev = GetTouchOwnershipEvents(events, dev, ti, XIRejectTouch,
930 ti->listeners[j].listener, 0);
943 TouchListenerAcceptReject(DeviceIntPtr dev, TouchPointInfoPtr ti, int listener,
951 BUG_RETURN_VAL(listener >= ti->num_listeners, BadMatch);
955 TouchRejected(dev, ti, ti->listeners[listener].listener, NULL);
957 ti->listeners[listener].state = TOUCH_LISTENER_EARLY_ACCEPT;
965 nev = GetTouchOwnershipEvents(events, dev, ti, mode,
966 ti->listeners[0].listener, 0);
981 TouchPointInfoPtr ti;
989 ti = TouchFindByClientID(dev, touchid);
990 if (!ti) {
995 for (i = 0; i < ti->num_listeners; i++) {
996 if (CLIENT_ID(ti->listeners[i].listener) == client->index &&
997 ti->listeners[i].window->drawable.id == grab_window)
1000 if (i == ti->num_listeners)
1003 return TouchListenerAcceptReject(dev, ti, i, mode);
1038 * @param ti The touch point record to deliver the event for.
1045 TouchEmitTouchEnd(DeviceIntPtr dev, TouchPointInfoPtr ti, int flags, XID resource)
1054 if (ti->emulate_pointer)
1056 DeliverDeviceClassesChangedEvent(ti->sourceid, GetTimeInMillis());
1057 GetDixTouchEnd(&event, dev, ti, flags);
1058 DeliverTouchEvents(dev, ti, &event, resource);
1059 if (ti->num_grabs == 0)
1066 TouchPointInfoPtr ti = TouchFindByClientID(dev, touchid);
1067 if (!ti)
1070 TouchListenerAcceptReject(dev, ti, 0, XIAcceptTouch);
1071 if (ti->pending_finish)
1072 TouchEmitTouchEnd(dev, ti, 0, 0);
1073 if (ti->num_listeners <= 1)
1074 TouchEndTouch(dev, ti);