flush touch aux events without normal touch events 88/235488/2 accepted/tizen_5.5_unified accepted/tizen_5.5_unified_wearable_hotfix tizen_5.5 tizen_5.5_wearable_hotfix accepted/tizen/5.5/unified/20200616.155011 accepted/tizen/5.5/unified/wearable/hotfix/20201027.100429 submit/tizen_5.5/20200615.082537 submit/tizen_5.5_wearable_hotfix/20201026.184307
authorjeon <jhyuni.kang@samsung.com>
Fri, 5 Jun 2020 02:56:47 +0000 (11:56 +0900)
committerjeon <jhyuni.kang@samsung.com>
Fri, 5 Jun 2020 05:28:49 +0000 (14:28 +0900)
Change-Id: Ib474acac076e7b91fc4a2ae495ff2acafe6a363d

src/evdev.c
src/evdev.h

index 8cda676f230fe57fb7901c774a60b36556e21f9d..fb46152511dcf718a0e9a82bea201eabeb89d119 100644 (file)
@@ -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;
        }
 }
index 751d9204c7754797d4c473d95e74677746857c51..1654d52087d83413185c05c9c63e6ec83bef1f45 100644 (file)
@@ -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 {