Lines Matching defs:totem

63 totem_dispatch(struct evdev_dispatch *totem)
65 evdev_verify_dispatch_type(totem, DISPATCH_TOTEM);
67 return container_of(totem, struct totem_dispatch, base);
71 totem_libinput_context(const struct totem_dispatch *totem)
73 return evdev_libinput_context(totem->device);
77 totem_new_tool(struct totem_dispatch *totem)
79 struct libinput *libinput = totem_libinput_context(totem);
109 totem_set_touch_device_enabled(struct totem_dispatch *totem,
113 struct evdev_device *touch_device = totem->touch_device;
122 * totem only does one tool right now despite being nominally an MT
124 for (size_t i = 0; !enable_touch_device && i < totem->nslots; i++) {
125 struct totem_slot *slot = &totem->slots[i];
133 mm = evdev_device_units_to_mm(totem->device, &slot->axes.point);
155 switch (totem->arbitration_state) {
175 totem->arbitration_state = state;
179 totem_process_key(struct totem_dispatch *totem,
190 totem->button_state_now = !!e->value;
201 totem_process_abs(struct totem_dispatch *totem,
206 struct totem_slot *slot = &totem->slots[totem->slot];
210 if ((size_t)e->value >= totem->nslots) {
214 totem->nslots);
215 e->value = totem->nslots - 1;
217 totem->slot = e->value;
220 /* If the totem is already down on init, we currently
261 totem_slot_fetch_axes(struct totem_dispatch *totem,
267 struct evdev_device *device = totem->device;
332 totem_slot_mark_all_axes_changed(struct totem_dispatch *totem,
346 totem_slot_reset_changed_axes(struct totem_dispatch *totem,
353 slot_axes_initialize(struct totem_dispatch *totem,
356 struct evdev_device *device = totem->device;
369 totem_handle_slot_state(struct totem_dispatch *totem,
373 struct evdev_device *device = totem->device;
381 slot->tool = totem_new_tool(totem);
382 slot_axes_initialize(totem, slot);
383 totem_slot_mark_all_axes_changed(totem, slot, slot->tool);
394 updated = totem_slot_fetch_axes(totem, slot, slot->tool, &axes, time);
405 totem_slot_reset_changed_axes(totem, slot);
437 * Due to the design of the totem we're also less fancy about
441 if (totem->button_state_now != totem->button_state_previous) {
444 if (totem->button_state_now)
457 totem->button_state_previous = totem->button_state_now;
472 totem_slot_reset_changed_axes(totem, slot);
487 totem_slot_reset_changed_axes(totem, slot);
493 totem_handle_state(struct totem_dispatch *totem,
498 for (size_t i = 0; i < totem->nslots; i++) {
501 s = totem_handle_slot_state(totem,
502 &totem->slots[i],
505 /* If one slot is active, the totem is active */
519 struct totem_dispatch *totem = totem_dispatch(dispatch);
525 totem_process_abs(totem, device, e, time);
528 totem_process_key(totem, device, e, time);
534 global_state = totem_handle_state(totem, time);
536 totem_set_touch_device_enabled(totem,
553 struct totem_dispatch *totem = totem_dispatch(dispatch);
556 for (size_t i = 0; i < totem->nslots; i++) {
557 struct totem_slot *slot = &totem->slots[i];
565 totem_slot_fetch_axes(totem, slot, slot->tool, &axes, now);
566 totem_slot_reset_changed_axes(totem, slot);
573 if (totem->button_state_now) {
582 totem->button_state_now = false;
583 totem->button_state_previous = false;
601 totem_set_touch_device_enabled(totem, true, now);
607 struct totem_dispatch *totem = totem_dispatch(dispatch);
609 free(totem->slots);
610 free(totem);
617 struct totem_dispatch *totem = totem_dispatch(device->dispatch);
633 if (totem->touch_device != NULL) {
640 totem->touch_device = added_device;
641 evdev_log_info(device, "%s: is the totem touch device\n", added_device->devname);
648 struct totem_dispatch *totem = totem_dispatch(device->dispatch);
650 if (totem->touch_device != removed_device)
653 totem_set_touch_device_enabled(totem, true,
655 totem->touch_device = NULL;
662 struct totem_dispatch *totem = totem_dispatch(dispatch);
666 for (size_t i = 0; i < totem->nslots; i++) {
667 struct totem_slot *slot = &totem->slots[i];
677 slot->tool = totem_new_tool(totem);
678 slot_axes_initialize(totem, slot);
679 totem_slot_mark_all_axes_changed(totem, slot, slot->tool);
680 totem_slot_fetch_axes(totem, slot, slot->tool, &axes, now);
687 totem_slot_reset_changed_axes(totem, slot);
698 totem_set_touch_device_enabled(totem, enable_touch, now);
737 "missing totem capabilities:%s%s%s%s%s. "
773 totem_init_accel(struct totem_dispatch *totem, struct evdev_device *device)
802 struct totem_dispatch *totem;
809 totem = zalloc(sizeof *totem);
810 totem->device = device;
811 totem->base.dispatch_type = DISPATCH_TOTEM;
812 totem->base.interface = &totem_interface;
818 totem->slot = libevdev_get_current_slot(device->evdev);
819 slots = zalloc(num_slots * sizeof(*totem->slots));
825 totem->slots = slots;
826 totem->nslots = num_slots;
828 evdev_init_sendevents(device, &totem->base);
829 totem_init_accel(totem, device);
831 return &totem->base;
833 totem_interface_destroy(&totem->base);