From: jeon Date: Fri, 5 Jun 2020 02:56:47 +0000 (+0900) Subject: flush touch aux events without normal touch events X-Git-Tag: submit/tizen_5.5/20200615.082537^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fheads%2Ftizen_5.5;p=platform%2Fupstream%2Flibinput.git flush touch aux events without normal touch events Change-Id: Ib474acac076e7b91fc4a2ae495ff2acafe6a363d --- diff --git a/src/evdev.c b/src/evdev.c index 8cda676f..fb461525 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -883,6 +883,15 @@ fallback_flush_pending_event(struct fallback_dispatch *dispatch, if (!fallback_flush_st_up(dispatch, device, time)) sent_event = EVDEV_NONE; break; + case EVDEV_ABSOLUTE_MT_AUX: + slot_idx = dispatch->mt.slot; + fallback_flush_extra_aux_data(dispatch, + device, + time, + dispatch->pending_event, + slot_idx, + dispatch->mt.slots[slot_idx].seat_slot); + break; default: assert(0 && "Unknown pending event type"); break; @@ -1064,37 +1073,45 @@ fallback_process_touch(struct fallback_dispatch *dispatch, case ABS_MT_POSITION_X: evdev_device_check_abs_axis_range(device, e->code, e->value); dispatch->mt.slots[dispatch->mt.slot].point.x = e->value; - if (dispatch->pending_event == EVDEV_NONE) + if (dispatch->pending_event == EVDEV_NONE || + dispatch->pending_event == EVDEV_ABSOLUTE_MT_AUX) dispatch->pending_event = EVDEV_ABSOLUTE_MT_MOTION; break; case ABS_MT_POSITION_Y: evdev_device_check_abs_axis_range(device, e->code, e->value); dispatch->mt.slots[dispatch->mt.slot].point.y = e->value; - if (dispatch->pending_event == EVDEV_NONE) + if (dispatch->pending_event == EVDEV_NONE || + dispatch->pending_event == EVDEV_ABSOLUTE_MT_AUX) dispatch->pending_event = EVDEV_ABSOLUTE_MT_MOTION; break; case ABS_MT_TOUCH_MAJOR: dispatch->mt.slots[dispatch->mt.slot].area.major = e->value; - if (dispatch->pending_event == EVDEV_NONE) + if (dispatch->pending_event == EVDEV_NONE || + dispatch->pending_event == EVDEV_ABSOLUTE_MT_AUX) dispatch->pending_event = EVDEV_ABSOLUTE_MT_MOTION; break; case ABS_MT_TOUCH_MINOR: dispatch->mt.slots[dispatch->mt.slot].area.minor = e->value; - if (dispatch->pending_event == EVDEV_NONE) + if (dispatch->pending_event == EVDEV_NONE || + dispatch->pending_event == EVDEV_ABSOLUTE_MT_AUX) dispatch->pending_event = EVDEV_ABSOLUTE_MT_MOTION; break; case ABS_MT_ORIENTATION: dispatch->mt.slots[dispatch->mt.slot].area.orientation = e->value; - if (dispatch->pending_event == EVDEV_NONE) + if (dispatch->pending_event == EVDEV_NONE || + dispatch->pending_event == EVDEV_ABSOLUTE_MT_AUX) dispatch->pending_event = EVDEV_ABSOLUTE_MT_MOTION; break; case ABS_MT_PRESSURE: dispatch->mt.slots[dispatch->mt.slot].pressure = e->value; - if (dispatch->pending_event == EVDEV_NONE) + if (dispatch->pending_event == EVDEV_NONE || + dispatch->pending_event == EVDEV_ABSOLUTE_MT_AUX) dispatch->pending_event = EVDEV_ABSOLUTE_MT_MOTION; break; default: fallback_process_touch_extra_aux_data(dispatch, device, e); + if (dispatch->pending_event == EVDEV_NONE) + dispatch->pending_event = EVDEV_ABSOLUTE_MT_AUX; break; } } diff --git a/src/evdev.h b/src/evdev.h index 751d9204..1654d520 100644 --- a/src/evdev.h +++ b/src/evdev.h @@ -54,6 +54,7 @@ enum evdev_event_type { EVDEV_ABSOLUTE_MT_MOTION, EVDEV_ABSOLUTE_MT_UP, EVDEV_RELATIVE_MOTION, + EVDEV_ABSOLUTE_MT_AUX, }; enum evdev_device_seat_capability {