Hi Anisee Anstier,

>> 1. This can be hardware-dependent code.
>> 
>> There are two or more types Linux MT protocol. (You can see here
>> <http://www.google.co.kr/url?q=http://www.mjmwired.net/kernel/Documentation/
>> input/multi-touch-protocol.txt&sa=U&ei=BaV5Tqr5O-
>> 3UmAWYhInLAQ&ved=0CBAQFjAA&sig2=U9xA2Bo40_i6yfBqEBgwLw&usg=AFQjCNFe7mFV5heDy
>> IKS3IGHzr-0GFJ_eA> .)
>> Protocol A, B and so on.
>> 
>> In system whose kernel uses MT protocol A, ABS_MT_TRACKING_ID event won¡¯t
>> be made. 
>> Then _ecore_mouse_move() won¡¯t be called in _ecore_x_input_handler() in
>> your patch.

> What you say is true, but not in this case. This implementation is for
> the xorg-x11-drv-mtev driver, that uses the mtdev library
>  (http://bitmath.org/code/mtdev/). The mtdev library takes care of the
> protocol abstraction and does finger tracking.

I thought you would like to patch this code to upstream.
If you would, it can be problem in system which doesn’t support tracking id.
If not, sorry for misunderstanding. :)

>> 
>> 
>> 2. As you mentioned earlier in your mail, event for the first finger will
>> be made twice.
>> 
>> When you move with the first finger, it makes MotionNotify and
>> XI_MotionNotify for the same finger.
>> Both events must be made and transferred via wire by Xserver at the same
>> time.
>> This can make overheads for transferring both X event and XI event between
>> Xserver and application for the first finger.
>> Besides in evas multi_down and multi_move callback, application must check
>> deviceid everytime.
>> 
>> Multitouch device can be configured on X system in some ways.
>> (1) Each finger can be configured as an XISlavePointer attached to a master
>> pointer.
>> (2) Each finger can also be configured as an XIFloatingSlave.
>> (3) One finger can be configured as an XISlavePointer and the others can be
>> XIFloatingSlave.
>> I¡¯d like to recommend that you take 3rd configuration in the above ways.
>> 
>>  
>> 
>> First finger makes only X events as SlavePointer device.
>> 
>> The other fingers make XI events as FloatingSlave device.
>> 
>> Currently, ecore and evas code based on this configuration.
>> 
>> Application gets mouse event as the first finger and gets multi events as
>> the other fingers.
>> 
>> Is there any difficulty to use the 3rd configuration in your platform ?
>> 
>>  
>> 
>> If you didn¡¯t float 2nd/3rd finger from master pointer, the fingers will
>> make X events such as ButtonPress/ButtonRelease/MotionNotify.
>> 
>> For example, in a list widget in an application just gets X events, 2nd/3rd
>> finger¡¯s movement will be affected.
>> 
>> How about your opinions ?

> That would be ideal for our use case, but AFAIK, there's no way to have
> multiple pointers in one X driver, nor control the type of pointer, ie
> make it a SlavePointer or FloatingSlave (this could be done *after* the X
> server is launched, but would require an additionnal program).

IMO, there is a way to have multiple pointers in a X driver such like Benjamin 
Tissoire's multitouch driver.
(http://cgit.freedesktop.org/~tissoire/xf86-input-evdev/
 It's a little bit outdated and something like a hack but it can be useful. :) )
This can be hack of evdev driver, but evdev driver can also be used for several 
devices at the same time.
Multitouch pointers are physically in a device but logically in each device.
You can also make a pointer device as FloatingSlave just by setting 
SendCoreEvents option off.
(Ex> pInfo->options = xf86AddNewOption(pInfo->options, "SendCoreEvents", 
"off"); )


> In its current form, Ecore_X's input support is MPX (Multi-pointer)
> oriented. But having multiple pointers is quite different from supporting
> multi-touch, and that's why XI2 is being reworked (see first email and
> http://liveweb.waybackmachine.org/http://who-t.blogspot.com/2010/10/thoughts-on-linux-multitouch.html
> (a bit outdated)).

You're right. Current ecore x backend is based on MPX.
As you mentioned, MPX is different from multitouch therefore if you want to 
implement multitouch stuff using MPX,
IMO, you may have to make the 2nd/3rd finger uninfluential to the master 
pointer.
That's why FloatingSlaves are only selected by XISelectEvents() in ecore x 
backend.

Of course, Peter Hutterer is making X protocol stuff for multitouch.
When it’s ready, we can get multitouch events through 
XI_TouchBegin/XI_TouchUpdate/XI_TouchEnd type.
Thus, the attachment such as SlavePointer, FloatingSlave doesn't matter at that 
time
because each touch device doesn't any make pointer events.
Until the multitouch protocol is ready, we may use MPX for implementing 
multitouch. :)

Best regards,
Sung-Jin Park

-----Original Message-----
From: Anisse Astier [mailto:ani...@astier.eu] 
Sent: Wednesday, September 21, 2011 10:40 PM
To: sj76.p...@samsung.com
Cc: enlightenment-devel@lists.sourceforge.net; 이상진
Subject: Re: [E-devel] [PATCH RFC] Ecore: Ecore_X : adapt XInput2 handling to 
support multitouch events with mtev

Hi Sung-Jin,

First of all, thanks for you review,

On Wed, 21 Sep 2011 21:02:21 +0900, Sung-Jin Park <sj76.p...@samsung.com> wrote 
:

> Hi,
> 
>  
> 
> I have several opinions about the code.
> 
> 
> 1. This can be hardware-dependent code.
> 
> There are two or more types Linux MT protocol. (You can see here
> <http://www.google.co.kr/url?q=http://www.mjmwired.net/kernel/Documentation/
> input/multi-touch-protocol.txt&sa=U&ei=BaV5Tqr5O-
> 3UmAWYhInLAQ&ved=0CBAQFjAA&sig2=U9xA2Bo40_i6yfBqEBgwLw&usg=AFQjCNFe7mFV5heDy
> IKS3IGHzr-0GFJ_eA> .)
> Protocol A, B and so on.
> 
> In system whose kernel uses MT protocol A, ABS_MT_TRACKING_ID event won¡¯t
> be made. 
> Then _ecore_mouse_move() won¡¯t be called in _ecore_x_input_handler() in
> your patch.

What you say is true, but not in this case. This implementation is for
the xorg-x11-drv-mtev driver, that uses the mtdev library
(http://bitmath.org/code/mtdev/). The mtdev library takes care of the
protocol abstraction and does finger tracking.

> 
> 
> 2. As you mentioned earlier in your mail, event for the first finger will
> be made twice.
> 
> When you move with the first finger, it makes MotionNotify and
> XI_MotionNotify for the same finger.
> Both events must be made and transferred via wire by Xserver at the same
> time.
> This can make overheads for transferring both X event and XI event between
> Xserver and application for the first finger.
> Besides in evas multi_down and multi_move callback, application must check
> deviceid everytime.
> 
> Multitouch device can be configured on X system in some ways.
> (1) Each finger can be configured as an XISlavePointer attached to a master
> pointer.
> (2) Each finger can also be configured as an XIFloatingSlave.
> (3) One finger can be configured as an XISlavePointer and the others can be
> XIFloatingSlave.
> I¡¯d like to recommend that you take 3rd configuration in the above ways.
> 
>  
> 
> First finger makes only X events as SlavePointer device.
> 
> The other fingers make XI events as FloatingSlave device.
> 
> Currently, ecore and evas code based on this configuration.
> 
> Application gets mouse event as the first finger and gets multi events as
> the other fingers.
> 
> Is there any difficulty to use the 3rd configuration in your platform ?
> 
>  
> 
> If you didn¡¯t float 2nd/3rd finger from master pointer, the fingers will
> make X events such as ButtonPress/ButtonRelease/MotionNotify.
> 
> For example, in a list widget in an application just gets X events, 2nd/3rd
> finger¡¯s movement will be affected.
> 
> How about your opinions ?
That would be ideal for our use case, but AFAIK, there's no way to have
multiple pointers in one X driver, nor control the type of pointer, ie
make it a SlavePointer or FloatingSlave (this could be done *after* the X
server is launched, but would require an additionnal program).

In its current form, Ecore_X's input support is MPX (Multi-pointer)
oriented. But having multiple pointers is quite different from supporting
multi-touch, and that's why XI2 is being reworked (see first email and
http://liveweb.waybackmachine.org/http://who-t.blogspot.com/2010/10/thoughts-on-linux-multitouch.html
(a bit outdated)).


Regards,

Anisse


------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure contains a
definitive record of customers, application performance, security
threats, fraudulent activity and more. Splunk takes this data and makes
sense of it. Business sense. IT sense. Common sense.
http://p.sf.net/sfu/splunk-d2dcopy1
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to