ecore-x: add new grab touch devices functionality.
authorLukasz Stanislawski <l.stanislaws@samsung.com>
Thu, 4 Jun 2015 17:06:27 +0000 (13:06 -0400)
committerChris Michael <cp.michael@samsung.com>
Thu, 4 Jun 2015 17:06:27 +0000 (13:06 -0400)
commit2017c8be95c06a905a363838922176931cd2a34f
tree7832b641ca729a95fdc6f117da106c6461f72e66
parentaf2bcfa9d1f46fc7ef99b0f5f4dc9851dcf52612
ecore-x: add new grab touch devices functionality.

Summary:
EFL currently supports pointer grabbing. This patch introduces new API
allowing to grab all slave touch devices registered in X server
Grabbing is performed by XIGrabDevice function from XInput 2.0.

By default ecore_x_input_touch_devices_grab grabs all XISlavePointer devices,
having XITouchInfoClass. Function returns EINA_TRUE if at least one touch device
was successfully grabbed. ecore_x_input_touch_devices_ungrab ungrabs all
previously grabbed devices.

To process events correctly change has been done in x_input_handler to emulate
mouse pointer events. If XITouchEmulatingPointer flag is set on touch events and
device is grabbed framework will generate mouse events. This is required
due to X Server design in which mouse events are no longer send to client when device is
detached (grabbed) from virtual core pointer.

@feature

Reviewers: cedric, raster, devilhorns

Subscribers: seoz, cedric

Differential Revision: https://phab.enlightenment.org/D2568
src/lib/ecore_x/Ecore_X.h
src/lib/ecore_x/xcb/ecore_xcb_input.c
src/lib/ecore_x/xlib/ecore_x_xi2.c