<HTML dir=rtl><HEAD><TITLE>Re: New approach to multitouch using DIDs and bitmasked events</TITLE>
<META content="text/html; charset=unicode" http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 8.00.6001.18904"></HEAD>
<BODY><FONT color=#000000 size=2 face=Arial>
<DIV dir=rtl>
<TABLE border=0 cellSpacing=0 cellPadding=0>
<TBODY>
<TR>
<TD vAlign=top>
<DIV dir=ltr>Hi All,</DIV>
<DIV dir=ltr>My name is Micki , I works at N-trig. <BR>I am responsible on the Linux development at N-trig. </DIV>
<DIV dir=ltr>I would like to participle the discussion of adapting multi-touch protocol into Xorg server and share my knowledge regards this issue. </DIV>
<DIV dir=ltr>I had read the posts and I would like to raise a question: </DIV>
<DIV dir=ltr>Is there any distinguish between single touch and multi-touch events?<BR>I think, there are some scenarios need to take into account:</DIV>
<DIV dir=ltr>a. Touching the screen with one finger and then after a while you touch the screen with another finger.</DIV>
<DIV dir=ltr>b.&nbsp; Gestures&nbsp;for example&nbsp;zoom , rotate. </DIV>
<DIV dir=ltr><BR>I think that before sending an event to the server, there should be an application which handles all touch events and transfer the right message to server according to movement type </DIV>
<DIV dir=ltr>(like Mohamed Ikbel Boulabiar suggested) an application which analyze current&nbsp;movement: <BR>a single touch or multi –touch movements (more than one finger). </DIV>
<DIV dir=ltr>For example: In N-trig we developed gesture engine which analyze the current message received from the sensor, analyze the data and transfer it&nbsp;as multi-touch events.</DIV>
<DIV dir=ltr><BR>Do you supports that kind of application, is there a set of new multi-touch commands?<BR>Is there a code I can download for testing to add my feedbacks as well?</DIV>
<DIV dir=ltr>&nbsp;</DIV>
<DIV dir=ltr>Regards,<BR>Micki </DIV></TD></TR></TBODY></TABLE></DIV></FONT>
<DIV dir=rtl><BR></DIV>
<DIV dir=rtl>
<HR tabIndex=-1>
</DIV>
<DIV dir=rtl><FONT size=2 face=Tahoma><B>îàú:</B> xorg-devel-bounces+micki=n-trig.com@lists.x.org áùí Peter Hutterer<BR><B>ðùìç:</B> á 19/07/2010 08:17<BR><B>àì:</B> Simon Thum<BR><B>òåú÷ ìéãéòä:</B> xorg-devel@lists.x.org<BR><B>ðåùà:</B> Re: New approach to multitouch using DIDs and bitmasked events<BR></FONT><BR></DIV>
<DIV>
<P><FONT size=2>On Sun, Jul 18, 2010 at 12:38:04PM +0200, Simon Thum wrote:<BR>&gt; Am 06.07.2010 22:39, schrieb Peter Hutterer:<BR>&gt; &gt;&gt;&gt; what changes did you have planned?<BR>&gt; &gt;&gt; Well, I thought I'd make a function which does common<BR>&gt; &gt;&gt; post-initialization (post = after driver inited structs). To be<BR>&gt; &gt;&gt; sensible, this must be in xf86 so we can parse/access options.<BR>&gt; &gt;&gt; Currently, it's hacked into xf86InitValuatorAxis because of that.<BR>&gt; &gt;&gt;<BR>&gt; &gt;&gt; It you're moving toward server-inited structs, I guess such a post-init<BR>&gt; &gt;&gt; point will come to live?<BR>&gt; &gt;<BR>&gt; &gt; well, there's already xf86ProcessCommonOptions and there is no reason<BR>&gt; &gt; another one couldn't exist. Possibly one automatically called after a<BR>&gt; &gt; successful PreInit().<BR>&gt; Yes, I just checked back and that's exactly what I would need. Same for<BR>&gt; a static configuration of input transforms, I guess.<BR>&gt;<BR>&gt; Are you already working on this? I want to make sure we get this fixed.<BR><BR>haven't started yet, no.<BR><BR>&gt; I'd problby do something naive like the attached stuff, though a hook in<BR>&gt; dix might be preferable. (Just for communicating my idea of it, don't<BR>&gt; apply!)<BR><BR>I don't think slotting it on top is just the way to go. Look at the driver<BR>init process as a whole, it's a mess. some stuff is in the DIX, other stuff<BR>in the DDX, rather randomly distributed in parts. I think mapping out a more<BR>streamlined init process and then figuring out where to put the post init is<BR>probably a better approach.<BR><BR>&gt; (And sorry for letting this rot in my inbox!)<BR>&gt;<BR>&gt; Cheers,<BR>&gt;<BR>&gt; Simon<BR><BR>&gt; From ec32ed5b747934d9d066cd6b8019b2af45915f5c Mon Sep 17 00:00:00 2001<BR>&gt; From: Simon Thum &lt;simon.thum@gmx.de&gt;<BR>&gt; Date: Sun, 18 Jul 2010 12:31:26 +0200<BR>&gt; Subject: [PATCH] fix xf86 backend-specific input initialization<BR>&gt;<BR>&gt; Instead of shoving it in rather unrelated places,<BR>&gt; move acceleration init into xf86NewInputDevice.<BR>&gt;<BR>&gt; Caveat: It's not clear atm how relevant other callers of ActivteDevice<BR>&gt; (like OpenDevice) actually are.<BR>&gt; ---<BR>&gt;&nbsp; hw/xfree86/common/xf86Xinput.c |&nbsp;&nbsp; 27 ++++++++++++++++++++++++---<BR>&gt;&nbsp; 1 files changed, 24 insertions(+), 3 deletions(-)<BR>&gt;<BR>&gt; diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c<BR>&gt; index 76d2d00..684b3c7 100644<BR>&gt; --- a/hw/xfree86/common/xf86Xinput.c<BR>&gt; +++ b/hw/xfree86/common/xf86Xinput.c<BR>&gt; @@ -108,6 +108,9 @@<BR>&gt;&nbsp;<BR>&gt;&nbsp; EventListPtr xf86Events = NULL;<BR>&gt;&nbsp;<BR>&gt; +static int<BR>&gt; +xf86InputDeviceAfterDriverInit(DeviceIntPtr dev);<BR><BR>why not just call it xf86PostInitDevice?<BR><BR>Cheers,<BR>&nbsp; Peter<BR><BR>&gt; +<BR>&gt;&nbsp; /**<BR>&gt;&nbsp;&nbsp; * Eval config and modify DeviceVelocityRec accordingly<BR>&gt;&nbsp;&nbsp; */<BR>&gt; @@ -733,6 +736,19 @@ IgnoreInputClass(const IDevPtr idev, const InputAttributes *attrs)<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ignore;<BR>&gt;&nbsp; }<BR>&gt;&nbsp;<BR>&gt; +/*<BR>&gt; + * Apply backend-specific initialization. Invoked after ActiveteDevice(),<BR>&gt; + * i.e. after the driver successfully completed DEVICE_INIT and the device<BR>&gt; + * is advertised.<BR>&gt; + * @param dev the device<BR>&gt; + * @return Success or an error code<BR>&gt; + */<BR>&gt; +static int<BR>&gt; +xf86InputDeviceAfterDriverInit(DeviceIntPtr dev) {<BR>&gt; +&nbsp;&nbsp;&nbsp; ApplyAccelerationSettings(dev);<BR>&gt; +&nbsp;&nbsp;&nbsp; return Success;<BR>&gt; +}<BR>&gt; +<BR>&gt;&nbsp; /**<BR>&gt;&nbsp;&nbsp; * Create a new input device, activate and enable it.<BR>&gt;&nbsp;&nbsp; *<BR>&gt; @@ -807,6 +823,14 @@ xf86NewInputDevice(IDevPtr idev, DeviceIntPtr *pdev, BOOL enable)<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; goto unwind;<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&gt;&nbsp;<BR>&gt; +&nbsp;&nbsp;&nbsp; rval = xf86InputDeviceAfterDriverInit(dev);<BR>&gt; +&nbsp;&nbsp;&nbsp; if (rval != Success)<BR>&gt; +&nbsp;&nbsp;&nbsp; {<BR>&gt; +&nbsp;&nbsp;&nbsp;&nbsp; xf86Msg(X_ERROR, "Couldn't post-init device \"%s\"\n", idev-&gt;identifier);<BR>&gt; +&nbsp;&nbsp;&nbsp;&nbsp; RemoveDevice(dev, TRUE);<BR>&gt; +&nbsp;&nbsp;&nbsp;&nbsp; goto unwind;<BR>&gt; +&nbsp;&nbsp;&nbsp; }<BR>&gt; +<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Enable it if it's properly initialised and we're currently in the VT */<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (enable &amp;&amp; dev-&gt;inited &amp;&amp; dev-&gt;startup &amp;&amp; xf86Screens[0]-&gt;vtSema)<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&gt; @@ -1323,9 +1347,6 @@ xf86InitValuatorDefaults(DeviceIntPtr dev, int axnum)<BR>&gt;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; dev-&gt;valuator-&gt;axisVal[1] = screenInfo.screens[0]-&gt;height / 2;<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dev-&gt;last.valuators[1] = dev-&gt;valuator-&gt;axisVal[1];<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&gt; -<BR>&gt; -&nbsp;&nbsp;&nbsp; if(axnum == 0)&nbsp; /* to prevent double invocation */<BR>&gt; -&nbsp;&nbsp;&nbsp;&nbsp; ApplyAccelerationSettings(dev);<BR>&gt;&nbsp; }<BR>&gt;&nbsp;<BR>&gt;&nbsp;<BR>&gt; --<BR>&gt; 1.7.1<BR>&gt;<BR><BR>_______________________________________________<BR>xorg-devel@lists.x.org: X.Org development<BR>Archives: <A href="http://lists.x.org/archives/xorg-devel">http://lists.x.org/archives/xorg-devel</A><BR>Info: <A href="http://lists.x.org/mailman/listinfo/xorg-devel">http://lists.x.org/mailman/listinfo/xorg-devel</A><BR></FONT></P></DIV></BODY></HTML>