xserver-xorg-input-evtouch: Changes to 'debian-unstable'
69-touchscreen.rules | 3
ChangeLog | 13
Makefile.in | 240
aclocal.m4 | 9137 ++++++----
calibrate.sh | 67
config.guess | 60
config.h.in | 4
config.sub | 66
configure |15856 ++++--------------
configure.ac | 2
debian/changelog | 6
debian/control | 2
debian/patches/01_fix_warnings.patch | 30
debian/patches/02-buttonless-device.patch | 86
debian/patches/04_include_xf86_ansic_h.patch | 23
debian/patches/05_build_with_1_4.patch | 22
debian/patches/06_xf86-input-evtouch-0.8.7-misc.patch | 770
debian/patches/07_random_fixes_for_06.patch | 523
debian/patches/series | 7
debian/xsfbs/xsfbs-autoreconf.mk | 150
debian/xsfbs/xsfbs.mk | 51
debian/xsfbs/xsfbs.sh | 387
ev_calibrate.c | 17
evtouch.c | 118
evtouch.h | 3
install-sh | 514
libtouch.c | 4
ltmain.sh | 7911 +++++---
make_distrib.sh | 2
29 files changed, 15050 insertions(+), 21024 deletions(-)
New commits:
commit e77ff9390f8965489e7628b5fb832b1b37372293
Author: Mattia Dongili <malattia@linux.it>
Date: Wed Jan 21 21:27:03 2009 +0900
Clean up some gcc warning about unused stuff
Signed-off-by: Mattia Dongili <malattia@linux.it>
diff --git a/debian/patches/01_fix_warnings.patch b/debian/patches/01_fix_warnings.patch
new file mode 100644
index 0000000..a97b5d6
--- /dev/null
+++ b/debian/patches/01_fix_warnings.patch
@@ -0,0 +1,30 @@
+Index: xserver-xorg-input-evtouch/evtouch.c
+===================================================================
+--- xserver-xorg-input-evtouch.orig/evtouch.c 2009-01-21 20:06:50.647249439 +0900
++++ xserver-xorg-input-evtouch/evtouch.c 2009-01-21 20:07:39.518253785 +0900
+@@ -352,7 +352,6 @@ void EVTouchProcessAbs(EVTouchPrivatePtr
+ void EVTouchProcessRel(EVTouchPrivatePtr priv)
+ {
+ struct input_event *ev; /* packet being/just read */
+- int dummy;
+
+ ev = &priv->ev;
+ if ( ev->code == REL_X ) {
+@@ -745,17 +744,6 @@ EVTouchNewPacket (EVTouchPrivatePtr priv
+
+
+
+-static unsigned char
+-EVTouchRead(EVTouchPrivatePtr priv)
+-{
+- unsigned char c;
+- XisbBlockDuration (priv->buffer, EV_TIMEOUT);
+- c = XisbRead(priv->buffer);
+- return (c);
+-}
+-
+-
+-
+ static Bool
+ EVTouchGetPacket (EVTouchPrivatePtr priv)
+ {
diff --git a/debian/patches/series b/debian/patches/series
index e69de29..3a0786b 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -0,0 +1 @@
+01_fix_warnings.patch
commit 511b452ec29e1ab9865d89a2dba6103a604e1243
Author: Mattia Dongili <malattia@linux.it>
Date: Mon Jan 19 21:13:08 2009 +0900
Remove unused patches from the series file
The patches have either been applied upstream or reworked implementing
similar functionality
Signed-off-by: Mattia Dongili <malattia@linux.it>
diff --git a/debian/patches/02-buttonless-device.patch b/debian/patches/02-buttonless-device.patch
deleted file mode 100644
index 161d4ae..0000000
--- a/debian/patches/02-buttonless-device.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-Index: xf86-input-evtouch-0.8.3.dirty/evtouch.c
-===================================================================
---- xf86-input-evtouch-0.8.3.dirty.orig/evtouch.c 2007-02-19 18:28:41.749371445 +0100
-+++ xf86-input-evtouch-0.8.3.dirty/evtouch.c 2007-02-19 20:14:50.612312260 +0100
-@@ -364,9 +364,15 @@ void EVTouchLBRBEvent(EVTouchPrivatePtr
- void EVTouchProcessKey(EVTouchPrivatePtr priv)
- {
- struct input_event *ev; /* packet being/just read */
-+ ev = &priv->ev;
-
- DBGOUT(2, "EVTouch: %s\n", __FUNCTION__);
-- ev = &priv->ev;
-+
-+ /* for buttonless devices no emulate3 is available,
-+ only go through the SM */
-+ if (priv->buttonless)
-+ return;
-+
- if ( (ev->code == BTN_LEFT) ||
- (ev->code == BTN_RIGHT) ||
- (ev->code == BTN_MIDDLE) ) {
-@@ -688,6 +694,8 @@ static void ReadInput (LocalDevicePtr lo
- while (EVTouchGetPacket (priv) == Success)
- {
- ev = &priv->ev;
-+ DBGOUT(2, "EVTouch: %s type:%0.2x code: 0x%0.4x value:%d\n",
-+ __FUNCTION__, ev->type, ev->code, ev->value);
-
- xf86XInputSetScreen(local,
- priv->screen_num,
-@@ -708,7 +716,8 @@ static void ReadInput (LocalDevicePtr lo
- EVTouchProcessRel(priv);
- break;
- case EV_KEY:
-- if (priv->ev.code == BTN_TOUCH) {
-+ if (priv->ev.code == BTN_TOUCH
-+ || priv->buttonless) {
- if (priv->ev.value == 1) {
- priv->touch_flags |= TOUCHED;
- DBGOUT(2, "EVTouch: TOUCHED\n");
-Index: xf86-input-evtouch-0.8.3.dirty/libtouch.c
-===================================================================
---- xf86-input-evtouch-0.8.3.dirty.orig/libtouch.c 2007-02-19 18:28:41.749371445 +0100
-+++ xf86-input-evtouch-0.8.3.dirty/libtouch.c 2007-02-19 20:02:36.070453105 +0100
-@@ -320,6 +320,14 @@ static int handle_touched(LibTouchRecPtr
- static void enter_moving(LibTouchRecPtr priv)
- {
- disable_timers(priv);
-+ if (priv->pen == PEN_TOUCHED) {
-+ DBG(4, ErrorF("LibTouch: Issuing Button-press 1\n"));
-+ xf86PostButtonEvent(priv->local->dev, TRUE,
-+ 1, 1, 0, 2,
-+ priv->cur_x,
-+ priv->cur_y);
-+ priv->pressed_btn_stat |= 1 << 1;
-+ }
- }
-
-
-@@ -336,13 +344,13 @@ static void enter_longtouched(LibTouchRe
- {
- disable_timers(priv);
- /* FIXME: Make Longtouch-Event configurable*/
-- /* for now issue an LB down */
-- DBG(4, ErrorF("LibTouch: Issuing Button-press 1\n"));
-+ /* for now issue an RB down */
-+ DBG(4, ErrorF("LibTouch: Issuing Button-press 3\n"));
- xf86PostButtonEvent(priv->local->dev, TRUE,
-- 1, 1, 0, 2,
-+ 3, 1, 0, 2,
- priv->cur_x,
- priv->cur_y);
-- priv->pressed_btn_stat |= 1 << 1;
-+ priv->pressed_btn_stat |= 1 << 3;
- }
-
-
-@@ -515,7 +523,7 @@ static int handle_oneandahalftap(LibTouc
-
- /* FIXME: Make OneAndHalf-Event configurable */
- /* for now RB down */
-- DBG(4, ErrorF("LibTouch: Issuing Button-press 1\n"));
-+ DBG(4, ErrorF("LibTouch: Issuing Button-press 3\n"));
- xf86PostButtonEvent (priv->local->dev, TRUE,
- 3, 1, 0, 2,
- priv->cur_x,
diff --git a/debian/patches/04_include_xf86_ansic_h.patch b/debian/patches/04_include_xf86_ansic_h.patch
deleted file mode 100644
index 009ff7e..0000000
--- a/debian/patches/04_include_xf86_ansic_h.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Index: xserver-xorg-input-evtouch/libtouch.c
-===================================================================
---- xserver-xorg-input-evtouch.orig/libtouch.c 2007-09-11 23:00:20.762131559 +0900
-+++ xserver-xorg-input-evtouch/libtouch.c 2007-09-11 23:00:43.263413833 +0900
-@@ -34,7 +34,6 @@
- #ifndef NEED_XF86_TYPES
- #define NEED_XF86_TYPES
- #endif
--#include <xf86_ansic.h>
- #include <xf86_OSproc.h>
- #include <xf86Xinput.h>
- #include <exevents.h>
-Index: xserver-xorg-input-evtouch/libtouch.h
-===================================================================
---- xserver-xorg-input-evtouch.orig/libtouch.h 2007-09-11 23:00:20.762131559 +0900
-+++ xserver-xorg-input-evtouch/libtouch.h 2007-09-11 23:00:51.263869754 +0900
-@@ -1,5 +1,6 @@
- #ifndef _libtouch_H_
- #define _libtouch_H_
-+#include <xf86_ansic.h>
- #include <os.h>
-
- #define TOUCHED 0x01
diff --git a/debian/patches/05_build_with_1_4.patch b/debian/patches/05_build_with_1_4.patch
deleted file mode 100644
index 3a60d4f..0000000
--- a/debian/patches/05_build_with_1_4.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Index: xserver-xorg-input-evtouch/evtouch.c
-===================================================================
---- xserver-xorg-input-evtouch.orig/evtouch.c 2007-09-17 17:20:21.736761738 +0900
-+++ xserver-xorg-input-evtouch/evtouch.c 2007-09-17 17:31:22.274403633 +0900
-@@ -492,9 +492,6 @@ DeviceOn (DeviceIntPtr dev)
-
- priv->buffer = XisbNew(local->fd, 64);
-
-- DBG (9, XisbTrace (priv->buffer, 1));
--
--
- if (!priv->buffer)
- {
- xf86CloseSerial(local->fd);
-@@ -1207,7 +1204,6 @@ EVTouchPreInit(InputDriverPtr drv, IDevP
- priv->diff[i][0], priv->diff[i][1]);
- }
-
-- xf86AlwaysCore(local, TRUE);
- priv->touch_flags = 0;
-
- local->history_size = xf86SetIntOption( local->options, "HistorySize", 0 );
diff --git a/debian/patches/06_xf86-input-evtouch-0.8.7-misc.patch b/debian/patches/06_xf86-input-evtouch-0.8.7-misc.patch
deleted file mode 100644
index db90f82..0000000
--- a/debian/patches/06_xf86-input-evtouch-0.8.7-misc.patch
+++ /dev/null
@@ -1,770 +0,0 @@
-#
-# This patch is from http://www.postnuklear.de/xorg-patches/
-#
-# Description: This is a patch for the evtouch input driver (
-# http://stz-softwaretechnik.com/~ke/touchscreen/evtouch.html).
-# Changes (for full description see ChangeLog file after patching (-: ):
-# o Changed code to compile a working driver for both XInput ABI 0.x and 2.0 (Xorg 1.4.0)
-# o changed rotation (due to segfault on xorg + fbdev)
-# o drag support
-# o tap "tolerance"
-# o added generic ts-adc touchscreen device to udev rules file
-#
-# Feel free to send comments, critics, suggestions to harryrat@postnuklear.de
-# To apply simply change into the toplevel directory of the source to be modified and enter:
-# patch -p1 < <PATH_TO_PATCH>
-#
-# All patches are available under the GNU GPL, I hope they might be useful for you (-:
-# - Harald Radke
-#
-Index: xserver-xorg-input-evtouch/69-touchscreen.rules
-===================================================================
---- xserver-xorg-input-evtouch.orig/69-touchscreen.rules 2008-02-02 21:49:20.783972805 +0900
-+++ xserver-xorg-input-evtouch/69-touchscreen.rules 2008-02-02 21:49:39.730979724 +0900
-@@ -7,8 +7,11 @@
- # Name can be found in /proc/bus/input/devices ('cat /proc/bus/input/devices')
- #
-
--# These are the touchscreens supported by kernel's "usbtouchscreen" module
-+# Generic ts-adc touchscreen modules
-+KERNEL=="event*", SUBSYSTEM=="input", ATTRS{name}=="ts-adc", SYMLINK+="input/evtouch_event"
-+
-
-+# These are the touchscreens supported by kernel's "usbtouchscreen" module
- # eGalax Inc. USB TouchController)
- KERNEL=="event*", SUBSYSTEM=="input", ATTRS{idVendor}=="3823", ATTRS{idProduct}=="0001", SYMLINK+="input/evtouch_event"
- # eGalax Inc. USB TouchController)
-Index: xserver-xorg-input-evtouch/ChangeLog
-===================================================================
---- xserver-xorg-input-evtouch.orig/ChangeLog 2008-02-02 21:49:20.795972782 +0900
-+++ xserver-xorg-input-evtouch/ChangeLog 2008-02-02 21:49:39.730979724 +0900
-@@ -1,3 +1,61 @@
-+0.8.7-HR *** Note this is not an official release but an "unauthorized
-+ *** fix version by me (Harald Radke - harryrat@postnuklear.de)
-+ -> Changed code to compile a working driver for both
-+ XInput ABI 0.x and 2.0 (Xorg 1.4.0)
-+ (test compile for 0.x still needs to be done)
-+ - evtouch.c:
-+ * capsulated xf86Post*Events and xf86InputSetScreen
-+ in functions where depending on the XINPUT ABI conversion
-+ is done or xf86 functions are directly called
-+ * xf86InitValuatorAxisStruct and xf86AlwaysCore() depending
-+ on ABI done
-+ - libtouch.h: passing xf86PostButtonEvent capsulation function
-+ to init function (same as in evtouch.c) to do proper button
-+ triggering
-+ -> Rotation:
-+ - added support for Option "Rotate" "UD" (upside down)
-+ in evtouch input section of xorg.conf
-+ - due to Segfault with (at least) fbdev video device, only
-+ evtouch "Rotate" option is taken into calculations for coords,
-+ meaning to get proper touchscreen behaviour on rotated X screens.
-+ same Rotate option as in video device section of xorg.conf has
-+ to be set in the evtouch section
-+ -> Drag support:
-+ Option "<STATE>_drag" "<BUTTON_ID>" has been added. When set,
-+ the handle_<STATE>() function triggers BUTTON_DOWN for Button <BUTTON_ID>
-+ before changing into S_MOVE state. Note that actually only
-+ Option "touched_drag" "<BUTTON_ID>" is implemented, rest is dummy
-+ (and doesn't make too much sense I guess) (-;
-+ -> tap "tolerance":
-+ introduce move_limit to evtouch.c as it is in libtouch.c, using it
-+ to discard ABS_X/Y position changes if they are inside move_limit
-+ around cur_x/y. this way pointer hopping can be avoided as well as
-+ proper touched_drag established
-+ - changes of cur_x/y are reported on EV_SYN in evtouch.c ReadInput() instead
-+ on EV_ABS
-+ -> added generic ts-adc touchscreen device to udev rules file
-+
-+ => Example for a Loox720 PDA setup in input section of xorg.conf:
-+ Section "InputDevice"
-+ Identifier "touchscreen"
-+ Driver "evtouch"
-+ Option "Device" "/dev/input/evtouch_event"
-+ Option "MinX" "434"
-+ Option "MinY" "333"
-+ Option "MaxX" "3643"
-+ Option "MaxY" "3804"
-+ Option "SwapX" "true"
-+ Option "longtouched_action" "down"
-+ Option "longtouched_button" "3"
-+ Option "maybetapped_action" "click"
-+ Option "maybetapped_button" "1"
-+ Option "touched_drag" "1"
-+ Option "oneandahalftap_button" "0"
-+ Option "TapTimer" "30"
-+ Option "LongtouchTimer" "500"
-+ Option "MoveLimit" "18"
-+ EndSection
-+
- 0.8.7
- - Added Elo Touchscreen to udev-rules (Stephen Webb)
- - Added "fix" for AMD64-crashes on touch (Martin Letenay)
-Index: xserver-xorg-input-evtouch/evtouch.c
-===================================================================
---- xserver-xorg-input-evtouch.orig/evtouch.c 2008-02-02 21:49:20.811973497 +0900
-+++ xserver-xorg-input-evtouch/evtouch.c 2008-02-02 21:49:39.734971242 +0900
-@@ -182,6 +182,20 @@ static const char *default_options[] =
- static int
- ControlProc(LocalDevicePtr device, xDeviceCtl *ctrl);
-
-+static void
-+PostMotionEvent(LocalDevicePtr local);
-+
-+static void
-+PostProximityEvent(LocalDevicePtr local,int is_in);
-+
-+static void
-+PostButtonEvent(LocalDevicePtr local, int button,
-+ int is_down, int x,int y);
-+
-+static void
-+InputSetScreen(LocalDevicePtr local);
-+
-+
- /*****************************************************************************
- * Function Definitions
- ****************************************************************************/
-@@ -197,11 +211,10 @@ emulate3Timer(OsTimerPtr timer, CARD32 n
- LocalDevicePtr local = (LocalDevicePtr)_local;
- EVTouchPrivatePtr priv = (EVTouchPrivatePtr) local->private;
-
-+
- sigstate = xf86BlockSIGIO();
-
-- xf86PostMotionEvent(local->dev, TRUE, 0, 2,
-- priv->cur_x,
-- priv->cur_y);
-+ PostMotionEvent(local);
-
- /*
- * Emit a button press -- release is handled in EVTouchLBRBEvent
-@@ -209,31 +222,21 @@ emulate3Timer(OsTimerPtr timer, CARD32 n
- if ( ( priv->touch_flags & LB_STAT ) &&
- !( priv->touch_flags & RB_STAT ) ) {
- DBGOUT(2, "EVTouch: Left Press\n");
-- xf86PostButtonEvent (local->dev, TRUE,
-- 1, 1, 0, 2,
-- priv->cur_x,
-- priv->cur_y);
-+ PostButtonEvent (local, 1, 1,priv->cur_x,priv->cur_y);
- }
-
- if ( ( priv->touch_flags & RB_STAT ) &&
- !( priv->touch_flags & LB_STAT ) ) {
- DBGOUT(2, "EVTouch: Right Press\n");
-- xf86PostButtonEvent (local->dev, TRUE,
-- 3, 1, 0, 2,
-- priv->cur_x,
-- priv->cur_y);
-- }
--
-+ PostButtonEvent (local, 3, 1,priv->cur_x,priv->cur_y);
-+ }
- /*
- Handling "middle" button press
- */
- if ( ( priv->touch_flags & RB_STAT ) &&
- ( priv->touch_flags & LB_STAT ) ) {
- DBGOUT(2, "EVTouch: Middle Press\n");
-- xf86PostButtonEvent (local->dev, TRUE,
-- 2, 1, 0, 2,
-- priv->cur_x,
-- priv->cur_y);
-+ PostButtonEvent (local, 2, 1,priv->cur_x,priv->cur_y);
- }
-
- priv->emulate3_timer_expired = TRUE;
-@@ -246,6 +249,7 @@ static void DoBtnAction(EVTouchPrivatePt
- {
- int btn = 0;
- LocalDevicePtr local = priv->local;
-+
- DBGOUT(2, "EVTouch: %s btn_count=%d\n", __FUNCTION__, priv->btn_count);
-
- for (btn = 0; btn < priv->btn_count; btn++) {
-@@ -262,12 +266,7 @@ static void DoBtnAction(EVTouchPrivatePt
- DBGOUT(2, "EVTouch: %s btn = %d action = %d\n",
- __FUNCTION__, btn,
- priv->btn_actions[btn].action);
--
-- xf86PostButtonEvent (local->dev, TRUE, btn,
-- priv->btn_actions[btn].action,
-- 0, 2,
-- priv->cur_x,
-- priv->cur_y);
-+ PostButtonEvent (local, btn, priv->btn_actions[btn].action,priv->cur_x,priv->cur_y);
-
- priv->btn_actions[btn].do_it = 0;
- priv->btn_actions[btn].action = 0;
-@@ -292,39 +291,32 @@ void EVTouchProcessAbs(EVTouchPrivatePtr
- ev = &priv->ev;
-
- if ( (ev->code == ABS_X) || (ev->code == ABS_Z) ) {
-+ if ((priv->cur_x - ev->value < priv->move_limit)
-+ && (priv->cur_x - ev->value > -priv->move_limit))
-+ return;
- priv->cur_x = ev->value;
-- libtouchSetXPos(priv->libtouch, priv->cur_x);
-+// libtouchSetXPos(priv->libtouch, priv->cur_x);
- }
-
- if ( (ev->code == ABS_Y) || (ev->code == ABS_RX) ) {
-+ if ((priv->cur_y - ev->value < priv->move_limit)
-+ && (priv->cur_y - ev->value > -priv->move_limit))
-+ return;
- priv->cur_y = ev->value;
-- libtouchSetYPos(priv->libtouch, priv->cur_y);
-+// libtouchSetYPos(priv->libtouch, priv->cur_y);
- }
-
- if (ev->code == ABS_WHEEL) {
- LocalDevicePtr local = priv->local;
--
- if (ev->value > 0) {
- for (; ev->value > 0; ev->value--) {
-- xf86PostButtonEvent (local->dev, TRUE,
-- 4, 1, 0, 2,
-- priv->cur_x,
-- priv->cur_y);
-- xf86PostButtonEvent (local->dev, TRUE,
-- 4, 0, 0, 2,
-- priv->cur_x,
-- priv->cur_y);
-+ PostButtonEvent (local, 4,1,priv->cur_x,priv->cur_y);
-+ PostButtonEvent (local, 4,0,priv->cur_x,priv->cur_y);
- }
- } else if (ev->value < 0) {
- for (ev->value = -ev->value; ev->value > 0; ev->value--) {
-- xf86PostButtonEvent (local->dev, TRUE,
-- 5, 1, 0, 2,
-- priv->cur_x,
-- priv->cur_y);
-- xf86PostButtonEvent (local->dev, TRUE,
-- 5, 0, 0, 2,
-- priv->cur_x,
-- priv->cur_y);
-+ PostButtonEvent (local, 5,1,priv->cur_x,priv->cur_y);
-+ PostButtonEvent (local, 5,0,priv->cur_x,priv->cur_y);
- }
- }
- }
-@@ -451,10 +443,7 @@ void EVTouchProcessKey(EVTouchPrivatePtr
- default:
- return;
- }
-- xf86PostButtonEvent(local->dev, TRUE,
-- btn, ev->value, 0, 2,
-- priv->cur_x,
-- priv->cur_y);
-+ PostButtonEvent (local, btn, ev->value,priv->cur_x,priv->cur_y);
- #endif
-
- return;
-@@ -492,8 +481,8 @@ DeviceOn (DeviceIntPtr dev)
-
- priv->buffer = XisbNew(local->fd, 64);
-
-- DBG (9, XisbTrace (priv->buffer, 1));
--
-+// breaks compilation
-+// DBG (9, XisbTrace (priv->buffer, 1));
-
- if (!priv->buffer)
- {
-@@ -637,8 +626,19 @@ DeviceInit (DeviceIntPtr dev)
- ErrorF ("Unable to allocate EVTouch touchscreen ValuatorClassDeviceStruct\n");
- return !Success;
- }
--
-- xf86InitValuatorAxisStruct(dev, 0, priv->min_x, priv->max_x,
-+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 2
-+ xf86InitValuatorAxisStruct(dev, 0, 0, priv->screen_width,
-+ 1024,
-+ EV_AXIS_MIN_RES /* min_res */ ,
-+ EV_AXIS_MAX_RES /* max_res */ );
-+ xf86InitValuatorDefaults(dev, 0);
-+ xf86InitValuatorAxisStruct(dev, 1, 0, priv->screen_height,
-+ 1024,
-+ EV_AXIS_MIN_RES /* min_res */ ,
-+ EV_AXIS_MAX_RES /* max_res */ );
-+ xf86InitValuatorDefaults(dev, 1);
-+#else
-+ xf86InitValuatorAxisStruct(dev, 0, priv->min_x, priv->max_x,
- 1024,
- EV_AXIS_MIN_RES /* min_res */ ,
- EV_AXIS_MAX_RES /* max_res */ );
-@@ -648,7 +648,7 @@ DeviceInit (DeviceIntPtr dev)
- EV_AXIS_MIN_RES /* min_res */ ,
- EV_AXIS_MAX_RES /* max_res */ );
- xf86InitValuatorDefaults(dev, 1);
--
-+#endif
- /* Initial position of pointer on screen: Centered */
- priv->cur_x=(priv->max_x - priv->min_x)/2;
- priv->cur_y=(priv->max_y - priv->min_y)/2;
-@@ -777,14 +777,8 @@ static void ReadInput (LocalDevicePtr lo
- DBGOUT(2, "EVTouch: %s type:%0.2x code: 0x%0.4x value:%d\n",
- __FUNCTION__, ev->type, ev->code, ev->value);
-
-- xf86XInputSetScreen(local,
-- priv->screen_num,
-- priv->cur_x,
-- priv->cur_y);
--
-- xf86PostProximityEvent(local->dev, 1, 0, 2,
-- priv->cur_x,
-- priv->cur_y);
-+ InputSetScreen(local);
-+ PostProximityEvent (local,1);
-
- switch (ev->type) {
- case EV_ABS:
-@@ -794,9 +788,7 @@ static void ReadInput (LocalDevicePtr lo
- EVTouchProcessRel(priv);
- break;
- case EV_KEY:
-- xf86PostMotionEvent (local->dev, TRUE, 0, 2,
-- priv->cur_x,
-- priv->cur_y);
-+ PostMotionEvent (local);
-
- if (priv->ev.code == BTN_TOUCH) {
- if (priv->ev.value == 1) {
-@@ -811,9 +803,8 @@ static void ReadInput (LocalDevicePtr lo
- EVTouchProcessKey(priv);
- break;
- case EV_SYN:
-- xf86PostMotionEvent (local->dev, TRUE, 0, 2,
-- priv->cur_x,
-- priv->cur_y);
-+ libtouchSetPos(priv->libtouch, priv->cur_x,priv->cur_y);
-+ PostMotionEvent (local);
-
- if ( priv->touch_flags & TOUCHED )
- libtouchTriggerSM(priv->libtouch, PEN_TOUCHED);
-@@ -902,7 +893,9 @@ ConvertProc ( LocalDevicePtr local,
-
- EVTouchPrivatePtr priv = (EVTouchPrivatePtr) (local->private);
- ScrnInfoPtr pScrn = xf86Screens[priv->screen_num];
-- Rotation rotation = RRGetRotation(pScrn->pScreen);
-+
-+// X Segfaults
-+// Rotation rotation = RRGetRotation(pScrn->pScreen);
-
- DBGOUT(2, "EVTouch: FIRST: v0=%d v1=%d\n", v0, v1);
-
-@@ -921,15 +914,17 @@ ConvertProc ( LocalDevicePtr local,
- max_x = priv->max_x - priv->min_x;
- max_y = priv->max_y - priv->min_y;
-
-- if (priv->rotate == EV_ROTATE_NONE) {
-+
-+// if (priv->rotate == EV_ROTATE_NONE) {
- screen_width = pScrn->currentMode->HDisplay;
- screen_height = pScrn->currentMode->VDisplay;
-+/* Swapping is done below in Coords! Leave those to be able to calc correct mapping
- } else {
- screen_width = pScrn->currentMode->VDisplay;
- screen_height = pScrn->currentMode->HDisplay;
- }
-
--
-+*/
- if (xc < (max_x / 2)) {
- /*
- left
-@@ -1042,45 +1037,57 @@ ConvertProc ( LocalDevicePtr local,
-
- int tmp = 0;
- /* rotation mixes x and y up a bit */
-- if (priv->rotate == EV_ROTATE_CW) {
-+ switch(priv->rotate) {
-+ case EV_ROTATE_CW:
- tmp = xc;
- xc = yc;
- yc = screen_width - tmp;
-- } else if (priv->rotate == EV_ROTATE_CCW) {
-+ break;
-+ case EV_ROTATE_CCW:
- tmp = xc;
- xc = screen_height - yc;
- yc = tmp;
-+ break;
-+ case EV_ROTATE_UD:
-+ xc = screen_width - xc;
-+ yc = screen_height - yc;
-+ break;
-+ default:
-+ break;
- }
-
-- switch (rotation) {
-- case RR_Rotate_0:
-+/* X Segfaults on rotation setting
-+ switch (rotation) {
-+ case RR_Rotate_0:
- v0 = xc;
- v1 = yc;
-- break;
-- case RR_Rotate_180:
-- v0 = screen_width - xc;
-- v1 = screen_height - yc;
-- break;
-- case RR_Rotate_90:
-+ break;
-+ case RR_Rotate_180:
-+ v0 = screen_width - xc;
-+ v1 = screen_height - yc;
-+ break;
-+ case RR_Rotate_90:
- tmp = xc;
-- v0 = screen_height - yc;
-+ v0 = screen_height - yc;
- v1 = tmp;
-- break;
-- case RR_Rotate_270:
-+ break;
-+ case RR_Rotate_270:
- tmp = xc;
-- v0 = yc;
-- v1 = screen_width - tmp;
-- break;
-- default:
-- break;
-- }
-+ v0 = yc;
-+ v1 = screen_width - tmp;
-+ break;
-+ default:
-+ break;
-+ }
-+
-+
-+*/
- }
-
- DBGOUT(2, "EVTouch: FINAL: v0=%d v1=%d\n", v0, v1);
-
-- *x = v0;
-- *y = v1;
--
-+ *x = xc;
-+ *y = yc;
- return (TRUE);
- }
-
-@@ -1133,8 +1140,9 @@ EVTouchPreInit(InputDriverPtr drv, IDevP
-
- xf86OptionListReport(local->options);
-
-+
- priv->libtouch = xcalloc(1, sizeof(LibTouchRec));
-- libtouchInit(priv->libtouch, local);
-+ libtouchInit(priv->libtouch, local,PostButtonEvent);
-
- priv->screen_num = xf86SetIntOption(local->options, "ScreenNumber", 0 );
-
-@@ -1164,9 +1172,9 @@ EVTouchPreInit(InputDriverPtr drv, IDevP
- timeo = xf86SetIntOption(local->options, "LongtouchTimer", 160);
- libtouchSetLongtouchTimeo(priv->libtouch, timeo);
-
-- libtouchSetMoveLimit(priv->libtouch,
-- xf86SetIntOption( local->options,
-- "MoveLimit", 180 ));
-+ priv->move_limit = xf86SetIntOption( local->options,
-+ "MoveLimit", 180 );
-+ libtouchSetMoveLimit(priv->libtouch, priv->move_limit);
-
- priv->rotate = EV_ROTATE_NONE;
- s = xf86FindOptionValue(local->options, "Rotate");
-@@ -1175,7 +1183,11 @@ EVTouchPreInit(InputDriverPtr drv, IDevP
- priv->rotate = EV_ROTATE_CW;
- } else if (xf86NameCmp(s, "CCW") == 0 ) {
- priv->rotate = EV_ROTATE_CCW;
-- }
-+ } else if (xf86NameCmp(s, "UD") == 0 ) {
-+ priv->rotate = EV_ROTATE_UD;
-+ }
-+
-+
- }
-
- if (priv->rotate == EV_ROTATE_NONE) {
-@@ -1207,9 +1219,10 @@ EVTouchPreInit(InputDriverPtr drv, IDevP
- priv->diff[i][0], priv->diff[i][1]);
- }
-
-+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0
- xf86AlwaysCore(local, TRUE);
-+#endif
- priv->touch_flags = 0;
--
- local->history_size = xf86SetIntOption( local->options, "HistorySize", 0 );
-
- /* prepare to process touch packets */
-@@ -1232,6 +1245,7 @@ EVTouchPreInit(InputDriverPtr drv, IDevP
-
- xf86CloseSerial(local->fd);
- local->fd = -1;
-+
- return (local);
- }
-
-@@ -1243,3 +1257,58 @@ EVTouchPtrCtrl(DeviceIntPtr device, PtrC
- Ho Hum.
- */
- }
-+
-+
-+static void
-+PostMotionEvent(LocalDevicePtr local) {
-+int cur_x, cur_y;
-+EVTouchPrivatePtr priv = (EVTouchPrivatePtr) (local->private);
-+
-+ cur_x = priv->cur_x;
-+ cur_y = priv->cur_y;
-+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 2
-+ ConvertProc(local,0,2,priv->cur_x,priv->cur_y,0,0,0,0,&cur_x,&cur_y);
-+#endif
-+
-+xf86PostMotionEvent (local->dev, TRUE, 0, 2, cur_x, cur_y);
-+}
-+
-+static void
-+PostProximityEvent(LocalDevicePtr local, int is_in) {
-+int cur_x, cur_y;
-+EVTouchPrivatePtr priv = (EVTouchPrivatePtr) (local->private);
-+
-+ cur_x = priv->cur_x;
-+ cur_y = priv->cur_y;
-+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 2
-+ ConvertProc(local,0,2,priv->cur_x,priv->cur_y,0,0,0,0,&cur_x,&cur_y);
-+#endif
-+
-+xf86PostProximityEvent(local->dev, is_in, 0, 2, cur_x,cur_y);
-+}
-+
-+static void
-+PostButtonEvent(LocalDevicePtr local, int button, int is_down,int x, int y) {
-+EVTouchPrivatePtr priv = (EVTouchPrivatePtr) (local->private);
-+
-+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 2
-+ ConvertProc(local,0,2,x,y,0,0,0,0,&x,&y);
-+#endif
-+
-+xf86PostButtonEvent (local->dev, TRUE, button, is_down, 0, 2, x, y);
-+}
-+
-+
-+static void InputSetScreen(LocalDevicePtr local) {
-+int cur_x, cur_y;
-+EVTouchPrivatePtr priv = (EVTouchPrivatePtr) (local->private);
-+
-+ cur_x = priv->cur_x;
-+ cur_y = priv->cur_y;
-+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 2
-+ ConvertProc(local,0,2,priv->cur_x,priv->cur_y,0,0,0,0,&cur_x,&cur_y);
-+#endif
-+
-+xf86XInputSetScreen(local,priv->screen_num,cur_x,cur_y);
-+}
-+
-Index: xserver-xorg-input-evtouch/evtouch.h
-===================================================================
---- xserver-xorg-input-evtouch.orig/evtouch.h 2008-02-02 21:49:20.823984091 +0900
-+++ xserver-xorg-input-evtouch/evtouch.h 2008-02-02 21:49:39.734971242 +0900
-@@ -42,6 +42,7 @@
- #define EV_ROTATE_NONE 0
- #define EV_ROTATE_CW 1
- #define EV_ROTATE_CCW 2
-+#define EV_ROTATE_UD 3
-
- #define EV_AXIS_MIN_RES 0
- #define EV_AXIS_MAX_RES 1024
-@@ -80,6 +81,7 @@ typedef struct _EVTouchPrivateRec
- int max_rel_y; /* Maximum y */
-
- int drag_timer;
-+ int move_limit;
- Bool emulate3;
- int emulate3_timeout;
- OsTimerPtr emulate3_timer;
-@@ -138,6 +140,7 @@ typedef struct _EVTouchPrivateRec
-
- LibTouchRecPtr libtouch;
- LocalDevicePtr local;
-+
- } EVTouchPrivateRec, *EVTouchPrivatePtr;
-
-
-Index: xserver-xorg-input-evtouch/libtouch.c
-===================================================================
---- xserver-xorg-input-evtouch.orig/libtouch.c 2008-02-02 21:49:36.899983517 +0900
-+++ xserver-xorg-input-evtouch/libtouch.c 2008-02-02 21:49:39.734971242 +0900
-@@ -52,6 +52,7 @@ typedef struct state {
- int (*handle_state)(LibTouchRecPtr priv);
- void (*action)(LibTouchRecPtr priv, int btn, int x, int y);
- int btn;
-+ int drag_btn;
- } state_t;
-
-
-@@ -68,16 +69,14 @@ typedef enum states {
- static void btn_down_action(LibTouchRecPtr priv, int btn, int x, int y)
- {
- DBG(4, ErrorF("LibTouch: Issuing Button %d down\n", btn));
-- xf86PostButtonEvent(priv->local->dev, TRUE,
-- btn, 1, 0, 2, x, y);
-+ priv->post_button_proc(priv->local,btn, 1,x,y);
- priv->pressed_btn_stat |= 1 << btn;
- }
-
- static void btn_up_action(LibTouchRecPtr priv, int btn, int x, int y)
- {
- DBG(4, ErrorF("LibTouch: Issuing Button %d up\n", btn));
-- xf86PostButtonEvent(priv->local->dev, TRUE,
-- btn, 0, 0, 2, x, y);
-+ priv->post_button_proc(priv->local,btn, 0,x,y);
- priv->pressed_btn_stat &= ~(1 << btn);
- }
-
-@@ -103,13 +102,13 @@ static int handle_oneandahalftap(LibTouc
- static void dump_configuration();
-
- state_t state_ar[] = {
-- {enter_untouched, handle_untouched, NULL, 0},
-- {enter_touched, handle_touched, NULL, 0},
-- {enter_longtouched, handle_longtouched, btn_down_action, 1},
-- {enter_moving, handle_moving, NULL, 0},
-- {enter_maybetap, handle_maybetap, btn_click_action, 1},
-- {enter_oneandahalftap, handle_oneandahalftap, btn_down_action, 3},
-- {NULL, NULL, NULL, -1},
-+ {enter_untouched, handle_untouched, NULL, 0,-1},
-+ {enter_touched, handle_touched, NULL, 0,-1},
-+ {enter_longtouched, handle_longtouched, btn_down_action, 1,-1},
-+ {enter_moving, handle_moving, NULL, 0,-1},
-+ {enter_maybetap, handle_maybetap, btn_click_action, 1,-1},
-+ {enter_oneandahalftap, handle_oneandahalftap, btn_down_action, 3,-1},
-+ {NULL, NULL, NULL, -1,-1},
- };
-
- char *state_str[] = {
-@@ -142,6 +141,16 @@ char *state_button_str[] = {
- NULL,
- };
-
-+char *state_drag_str[] = {
-+ "untouched_drag",
-+ "touched_drag",
-+ "longtouched_drag",
-+ "moving_drag",
-+ "maybetapped_drag",
-+ "oneandahalftap_drag",
-+ NULL,
-+};
-+
- char *action_str[] = {
- "down",
- "up",
-@@ -177,13 +186,13 @@ void libtouchSetMoveLimit(LibTouchRecPtr
- }
-
-
--void libtouchInit(LibTouchRecPtr libtouch, LocalDevicePtr local)
-+void libtouchInit(LibTouchRecPtr libtouch, LocalDevicePtr local,pointer post_button_proc)
- {
- int state_action_idx = 0;
- int state_button_idx = 0;
-+ int state_drag_idx = 0;
- int action_idx = 0;
- int btn;
--
- char *str;
-
- xf86memset(libtouch, 0, sizeof(LibTouchRec));
-@@ -193,6 +202,7 @@ void libtouchInit(LibTouchRecPtr libtouc
- libtouch->local = local;
- libtouch->move_limit = 30;
-
-+ libtouch->post_button_proc = post_button_proc;
- /*
- Actions: up, down, click
-
-@@ -228,6 +238,11 @@ void libtouchInit(LibTouchRecPtr libtouc
- }
- }
-
-+ /* parse dragging for the states, that is which button sent to be as down, when in state and about to change to MOVING state */
-+ for (state_drag_idx = 0; state_drag_str[state_drag_idx] != NULL; state_drag_idx++) {
-+ btn = xf86SetIntOption(local->options, state_drag_str[state_drag_idx], -1);
-+ if (btn != -1) state_ar[state_drag_idx].drag_btn = btn;
-+ }
-
- dump_configuration();
- }
-@@ -359,10 +374,7 @@ static void enter_untouched(LibTouchRecP
- for (i = 0; i < bit_size; i++)
- if (priv->pressed_btn_stat & (1 << i)) {
- DBG(4, ErrorF("LibTouch: Issuing Button-release %d\n", i));
-- xf86PostButtonEvent(priv->local->dev, TRUE,
-- i, 0, 0, 2,
-- priv->cur_x,
-- priv->cur_y);
-+ priv->post_button_proc(priv->local,i, 0,priv->cur_x,priv->cur_y);
- }
-
- priv->pressed_btn_stat = 0;
-@@ -445,6 +457,10 @@ static int handle_touched(LibTouchRecPtr
- if (priv->cur_x != priv->old_x) {
- dx = delta(priv->touch_x, priv->cur_x);
- if (dx > priv->move_limit) {
-+ if((state_ar[S_TOUCHED].drag_btn != -1) && (priv->touch_time != priv->now)){
-+ libtouchSetTime(priv, GetTimeInMillis());
-+ btn_down_action(priv, state_ar[S_TOUCHED].drag_btn, priv->cur_x,priv->cur_y);
-+ }
- return S_MOVING;
- }
- }
-@@ -454,7 +470,10 @@ static int handle_touched(LibTouchRecPtr
- if (priv->cur_y != priv->old_y) {
- dy = delta(priv->touch_y, priv->cur_y);
- if (dy > priv->move_limit) {
-- return S_MOVING;
-+ if((state_ar[S_TOUCHED].drag_btn != -1) && (priv->touch_time != priv->now)){
-+ libtouchSetTime(priv, GetTimeInMillis());
-+ btn_down_action(priv, state_ar[S_TOUCHED].drag_btn, priv->cur_x,priv->cur_y);
-+} return S_MOVING;
- }
- }
- }
-@@ -500,7 +519,7 @@ static int handle_longtouched(LibTouchRe
- } else {
- if (priv->cur_x != priv->old_x) {
- dx = delta(priv->touch_x, priv->cur_x);
-- if (dx > priv->move_limit)
-+ if (dx > priv->move_limit)
- rc = S_MOVING;
- }
-
-Index: xserver-xorg-input-evtouch/libtouch.h
-===================================================================
Reply to: