ec = e_comp_wl->ptr.ec ? e_comp_wl->ptr.ec : e_comp_wl->touch.faked_ec;
if (!ec) return;
-
- if (!need_send_released)
- return;
+ if (!e_comp_wl->touch.pressed) return;
_e_comp_wl_send_touch_cancel(ec);
-
- need_send_released = EINA_FALSE;
- need_send_motion = EINA_FALSE;
}
static void
ELOGF("Touch", "Up (obj: %p, button: %d, flag: 0x%x, time: %d, x:%d, y:%d, name:%20s)",
ec, obj, ev->button, flags, ev->timestamp, ev->output.x, ev->output.y, e_client_util_name_get(ec));
- if (flags & EVAS_EVENT_FLAG_ON_HOLD) goto finish;
-
dev = ev->dev;
dev_name = evas_device_description_get(dev);
- _e_comp_wl_device_send_event_device(ec, dev, ev->timestamp);
-
if (dev && (evas_device_class_get(dev) == EVAS_DEVICE_CLASS_TOUCH))
{
e_comp_wl->touch.pressed &= ~(1 << 0);
if (!e_comp_wl->touch.pressed && e_comp_wl->touch.faked_ec)
e_comp_wl->touch.faked_ec = NULL;
+ }
+
+ if (flags & EVAS_EVENT_FLAG_ON_HOLD) goto finish;
+
+ _e_comp_wl_device_send_event_device(ec, dev, ev->timestamp);
+ if (dev && (evas_device_class_get(dev) == EVAS_DEVICE_CLASS_TOUCH))
+ {
if (dev_name)
_e_comp_wl_device_handle_axes(dev_name, evas_device_class_get(dev),
ec, 0, ev->radius_x, ev->radius_y, ev->pressure, ev->angle);
ELOGF("Touch", "Up (obj: %p, idx: %d, flag: 0x%x, time: %d, x:%d, y:%d, name:%20s)",
ec, obj, ev->device, flags, ev->timestamp, ev->output.x, ev->output.y, e_client_util_name_get(ec));
- if (flags & EVAS_EVENT_FLAG_ON_HOLD) return;
-
e_comp_wl->touch.pressed &= ~(1 << ev->device);
if (!e_comp_wl->touch.pressed && e_comp_wl->touch.faked_ec)
e_comp_wl->touch.faked_ec = NULL;
+ if (flags & EVAS_EVENT_FLAG_ON_HOLD) return;
+
dev = ev->dev;
if (dev && (dev_name = evas_device_description_get(dev)))
{
static Eina_Bool
_e_comp_wl_cb_mouse_button_cancel(void *d EINA_UNUSED, int t EINA_UNUSED, Ecore_Event_Mouse_Button *ev)
{
- if (e_comp_wl->ptr.ec)
- _e_comp_wl_send_touch_cancel(e_comp_wl->ptr.ec);
+ _e_comp_wl_touch_cancel();
return ECORE_CALLBACK_PASS_ON;
}
static Eina_Bool
_e_comp_wl_cb_zone_display_state_change(void *d EINA_UNUSED, int t EINA_UNUSED, E_Event_Zone_Display_State_Change *ev EINA_UNUSED)
{
- if (e_comp_wl->ptr.ec && need_send_released)
- {
- _e_comp_wl_send_touch_cancel(e_comp_wl->ptr.ec);
-
- need_send_released = EINA_FALSE;
- }
+ _e_comp_wl_touch_cancel();
- return ECORE_CALLBACK_PASS_ON;
- }
+ return ECORE_CALLBACK_PASS_ON;
+}
static Eina_Bool
_e_comp_wl_cb_client_rot_change_begin(void *d EINA_UNUSED, int t EINA_UNUSED, E_Event_Client_Rotation_Change_Begin *ev)