path: root/src/lib/ecore_wayland/ecore_wl_private.h
diff options
authorjhyuni.kang <>2015-05-12 08:57:03 -0400
committerChris Michael <>2015-05-12 08:57:47 -0400
commitaee186b4f3fdc27b5fe6ac13238e517f4f02fe15 (patch)
tree47f2340ef440b95059be7f0db15611523d0b4b78 /src/lib/ecore_wayland/ecore_wl_private.h
parent8a3441dfe9f2c59586498b41cc87fc26288b7d06 (diff)
ecore-wayland: Add a grab_count variable for synchronization wl_input_grab/ungrab with pointer and touch event
Summary: The touch screen device generates touch events. But in some special enviroments, a first finger will be matched to a pointer event(not touch event). And other fingers (second, third, ...) will be matched touch events. In that case ecore_wl_input_ungrab() is called abnormally. A first finger pressed, _ecore_wl_input_cb_pointer_button() call ecore_wl_input_grab(). A second finger pressed, _ecore_wl_input_cb_touch_down() is called but not grab. But when a second finger is released, _ecore_wl_input_cb_touch_up() call ecore_wl_input_ungrab() So ungrab function generate two mouse up events and a first finger is released. In other case, first finger pressed -> second finger pressed -> first finger release. That case when a first finger released a second finger release event is generated. So after that application doesn't get a release event about a second finger when a second finger is really released. I think in a multitouch case, ungrab function will be called when a all finger are released. So I add a grab_count variable for count currently touched fingers. And only called a ungrab funtion all fingers are released. Test Plan: In a touch screen supported multitouch, press two or more fingers and release. And watch events generation. Reviewers: raster, devilhorns Subscribers: cedric Differential Revision:
Diffstat (limited to '')
1 files changed, 1 insertions, 0 deletions
diff --git a/src/lib/ecore_wayland/ecore_wl_private.h b/src/lib/ecore_wayland/ecore_wl_private.h
index 77c12dbdf6..c54b157c1f 100644
--- a/src/lib/ecore_wayland/ecore_wl_private.h
+++ b/src/lib/ecore_wayland/ecore_wl_private.h
@@ -209,6 +209,7 @@ struct _Ecore_Wl_Input
209 Ecore_Wl_Window *grab; 209 Ecore_Wl_Window *grab;
210 unsigned int grab_button; 210 unsigned int grab_button;
211 unsigned int grab_timestamp; 211 unsigned int grab_timestamp;
212 unsigned int grab_count;
212 213
213 Ecore_Wl_Dnd_Source *drag_source; 214 Ecore_Wl_Dnd_Source *drag_source;
214 Ecore_Wl_Dnd_Source *selection_source; 215 Ecore_Wl_Dnd_Source *selection_source;