xserver-xorg-input-evtouch: Changes to 'debian-unstable'
debian/changelog | 10
debian/control | 8
debian/patches/06_xf86-input-evtouch-0.8.7-misc.patch | 770 ++++++++++++++++++
debian/patches/07_random_fixes_for_06.patch | 41
debian/patches/series | 4
debian/xsfbs/xsfbs.mk | 76 -
6 files changed, 828 insertions(+), 81 deletions(-)
New commits:
commit d862eaed24c4dbd457ad6d2da71ff7deed02b03c
Author: Mattia Dongili <malattia@linux.it>
Date: Sun Feb 3 10:34:56 2008 +0900
Close bugs in changelog and add more changelog entries
Signed-off-by: Mattia Dongili <malattia@linux.it>
diff --git a/debian/changelog b/debian/changelog
index 8569c3f..1fa3210 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -2,7 +2,9 @@ xf86-input-evtouch (0.8.7-3) unstable; urgency=low
* work(!!!!) with xserver-xorg-core 1.4
* added xf86-input-evtouch-0.8.7-misc.patch from
- http://www.postnuklear.de/xorg-patches/
+ http://www.postnuklear.de/xorg-patches/ (Closes: #443726)
+ * bump Standards-Version to 3.7.3
+ * use Vcs and Homepage headers in debian/control
-- Mattia Dongili <malattia@debian.org> Sat, 02 Feb 2008 21:32:15 +0900
diff --git a/debian/control b/debian/control
index c031375..3f2fe77 100644
--- a/debian/control
+++ b/debian/control
@@ -4,9 +4,10 @@ Priority: optional
Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
Uploaders: Mattia Dongili <malattia@debian.org>
Build-Depends: debhelper (>= 5), pkg-config, xserver-xorg-dev (>= 2:1.4), x11proto-randr-dev, libxrender-dev, libx11-dev, quilt
-Standards-Version: 3.7.2
-XS-Vcs-Git: git://git.debian.org/git/pkg-xorg/driver/xserver-xorg-input-evtouch
-XS-Vcs-Browser: http://git.debian.org/?p=pkg-xorg/driver/xserver-xorg-input-evtouch.git
+Standards-Version: 3.7.3
+Vcs-Git: git://git.debian.org/git/pkg-xorg/driver/xserver-xorg-input-evtouch
+Vcs-Browser: http://git.debian.org/?p=pkg-xorg/driver/xserver-xorg-input-evtouch.git
+Homepage: http://stz-softwaretechnik.com/~ke/touchscreen/evtouch.html
Package: xserver-xorg-input-evtouch
Architecture: any
@@ -17,5 +18,4 @@ Description: Touchscreen-Driver for X.Org/XFree86 server
The driver is actually an evdev-driver which supports events for moving
in absolute coordinates, relative coordinates and mouse-buttons.
.
- Homepage: http://stz-softwaretechnik.com/~ke/touchscreen/evtouch.html
commit d361163e3e5240e2156e975cdf121bc089421556
Author: Mattia Dongili <malattia@linux.it>
Date: Sat Feb 2 22:05:08 2008 +0900
added xf86-input-evtouch-0.8.7-misc.patch from http://www.postnuklear.de/xorg-patches/
to fix the driver non working on the xserver 1.4
Signed-off-by: Mattia Dongili <malattia@linux.it>
diff --git a/debian/changelog b/debian/changelog
index c18974d..8569c3f 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+xf86-input-evtouch (0.8.7-3) unstable; urgency=low
+
+ * work(!!!!) with xserver-xorg-core 1.4
+ * added xf86-input-evtouch-0.8.7-misc.patch from
+ http://www.postnuklear.de/xorg-patches/
+
+ -- Mattia Dongili <malattia@debian.org> Sat, 02 Feb 2008 21:32:15 +0900
+
xf86-input-evtouch (0.8.7-2) unstable; urgency=low
* build with xserver-xorg-core 1.4
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
new file mode 100644
index 0000000..db90f82
--- /dev/null
+++ b/debian/patches/06_xf86-input-evtouch-0.8.7-misc.patch
@@ -0,0 +1,770 @@
+#
+# 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
+===================================================================
+--- xserver-xorg-input-evtouch.orig/libtouch.h 2008-02-02 21:49:36.899983517 +0900
++++ xserver-xorg-input-evtouch/libtouch.h 2008-02-02 21:49:39.734971242 +0900
+@@ -50,6 +50,7 @@ typedef struct _libtouch {
+ CARD32 past;
+ CARD32 now;
+ LocalDevicePtr local;
++ void (*post_button_proc)(LocalDevicePtr local,int button, int is_down,int x,int y);
+ } LibTouchRec, *LibTouchRecPtr;
+
+ void libtouchSetDebugLevel(int level);
+@@ -59,7 +60,7 @@ void libtouchSetOneandahalftapTimeo(LibT
+ void libtouchSetTime(LibTouchRecPtr libtouch, CARD32 now);
+ void libtouchSetMoveLimit(LibTouchRecPtr libtouch, int move_limit);
+
+-void libtouchInit(LibTouchRecPtr libtouch, LocalDevicePtr local);
++void libtouchInit(LibTouchRecPtr libtouch, LocalDevicePtr local,pointer post_button_proc);
+
+ void libtouchSetPos(LibTouchRecPtr libtouch, int x, int y);
+ void libtouchTriggerSM(LibTouchRecPtr libtouch, LibTouchState_t touch);
diff --git a/debian/patches/07_random_fixes_for_06.patch b/debian/patches/07_random_fixes_for_06.patch
new file mode 100644
index 0000000..d5a1269
--- /dev/null
+++ b/debian/patches/07_random_fixes_for_06.patch
@@ -0,0 +1,41 @@
+Index: xserver-xorg-input-evtouch/evtouch.c
+===================================================================
+--- xserver-xorg-input-evtouch.orig/evtouch.c 2008-02-02 21:35:07.970972486 +0900
++++ xserver-xorg-input-evtouch/evtouch.c 2008-02-02 21:36:37.970971869 +0900
+@@ -884,7 +884,7 @@ ConvertProc ( LocalDevicePtr local,
+ float dx = 0, dy = 0;
+
+ int max_x, max_y;
+- int xc, yc;
++ int xc = 0, yc = 0;
+ int screen_width = 0;
+ int screen_height = 0;
+ #ifdef EVDBG
+@@ -895,7 +895,7 @@ ConvertProc ( LocalDevicePtr local,
+ ScrnInfoPtr pScrn = xf86Screens[priv->screen_num];
+
+ // X Segfaults
+-// Rotation rotation = RRGetRotation(pScrn->pScreen);
++ Rotation rotation = RRGetRotation(pScrn->pScreen);
+
+ DBGOUT(2, "EVTouch: FIRST: v0=%d v1=%d\n", v0, v1);
+
+@@ -1056,7 +1056,7 @@ ConvertProc ( LocalDevicePtr local,
+ break;
+ }
+
+-/* X Segfaults on rotation setting
++/* X Segfaults on rotation setting */
+ switch (rotation) {
+ case RR_Rotate_0:
+ v0 = xc;
+@@ -1079,9 +1079,6 @@ ConvertProc ( LocalDevicePtr local,
+ default:
+ break;
+ }
+-
+-
+-*/
+ }
+
+ DBGOUT(2, "EVTouch: FINAL: v0=%d v1=%d\n", v0, v1);
diff --git a/debian/patches/series b/debian/patches/series
index 59b87ff..3c81031 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,4 +1,6 @@
#02-buttonless-device.patch
#03_fix_compile_warns.patch
04_include_xf86_ansic_h.patch
-05_build_with_1_4.patch
+#05_build_with_1_4.patch
+06_xf86-input-evtouch-0.8.7-misc.patch
+07_random_fixes_for_06.patch
commit 844199da71f29556be3436fa0fead2f0cc0bfc1b
Author: David Nusinow <dnusinow@debian.org>
Date: Tue Jan 8 20:18:49 2008 -0500
Kill the manifest code.
It served its purpose for the monolith and is now dead.
diff --git a/debian/xsfbs/xsfbs.mk b/debian/xsfbs/xsfbs.mk
index b8f7afd..4822173 100755
--- a/debian/xsfbs/xsfbs.mk
+++ b/debian/xsfbs/xsfbs.mk
@@ -196,7 +196,6 @@ xsfclean: cleanscripts unpatch
rm -rf $(STAMP_DIR) $(SOURCE_DIR)
rm -rf imports
dh_clean debian/shlibs.local \
- debian/MANIFEST.$(ARCH) debian/MANIFEST.$(ARCH).new \
debian/po/pothead
# Generate the debconf templates POT file header.
@@ -209,58 +208,6 @@ debian/po/pothead: debian/po/pothead.in
updatepo: debian/po/pothead
debian/scripts/debconf-updatepo --pot-header=pothead --verbose
-# Use the MANIFEST files to determine whether we're shipping everything we
-# expect to ship, and not shipping anything we don't expect to ship.
-.PHONY: check-manifest
-stampdir_targets+=check-manifest
-check-manifest: $(STAMP_DIR)/check-manifest
-$(STAMP_DIR)/check-manifest: $(STAMP_DIR)/install
- # Compare manifests.
- (cd debian/tmp && find -type f | LC_ALL=C sort | cut -c3-) \
- >debian/MANIFEST.$(ARCH).new
- # Construct MANIFEST files from MANIFEST.$(ARCH).in and
- # MANIFEST.$(ARCH).all or MANIFEST.all.
- if expr "$(findstring -DBuildFonts=NO,$(IMAKE_DEFINES))" \
- : "-DBuildFonts=NO" >/dev/null 2>&1; then \
- LC_ALL=C sort -u debian/MANIFEST.$(ARCH).in >debian/MANIFEST.$(ARCH); \
- else \
- if [ -e debian/MANIFEST.$(ARCH).all ]; then \
- LC_ALL=C sort -u debian/MANIFEST.$(ARCH).in debian/MANIFEST.$(ARCH).all >debian/MANIFEST.$(ARCH); \
- else \
- LC_ALL=C sort -u debian/MANIFEST.$(ARCH).in debian/MANIFEST.all >debian/MANIFEST.$(ARCH); \
- fi; \
- fi
- # Confirm that the installed file list has not changed.
- if [ -e debian/MANIFEST.$(ARCH) ]; then \
- if ! cmp -s debian/MANIFEST.$(ARCH) debian/MANIFEST.$(ARCH).new; then \
- diff -U 0 debian/MANIFEST.$(ARCH) debian/MANIFEST.$(ARCH).new || DIFFSTATUS=$$?; \
- case $${DIFFSTATUS:-0} in \
- 0) ;; \
- 1) if [ -n "$$IGNORE_MANIFEST_CHANGES" ]; then \
- echo 'MANIFEST check failed; ignoring problem because \$$IGNORE_MANIFEST_CHANGES set' >&2; \
- echo 'Please ensure that the package maintainer has an up-to-date version of the' >&2; \
- echo 'MANIFEST.$(ARCH).in file.' >&2; \
- else \
- echo 'MANIFEST check failed; please see debian/README' >&2; \
- exit 1; \
- fi; \
- ;; \
- *) echo "diff reported unexpected exit status $$DIFFSTATUS when performing MANIFEST check" >&2; \
- exit 1; \
- ;; \
- esac; \
- fi; \
- fi
- >$@
-
-# Because we build (and install) different files depending on whether or not
-# any architecture-independent packages are being created, the list of files we
-# expect to see will differ; see the discussion of the "build" target above.
-.PHONY: check-manifest-arch check-manifest-indep
-check-manifest-arch: IMAKE_DEFINES+= -DBuildSpecsDocs=NO -DBuildFonts=NO -DInstallHardcopyDocs=NO
-check-manifest-arch: check-manifest
-check-manifest-indep: check-manifest
-
# Remove files from the upstream source tree that we don't need, or which have
# licensing problems. It must be run before creating the .orig.tar.gz.
#
commit 331c032528ba1faebef1d8eaa56db47f533f0426
Author: David Nusinow <dnusinow@debian.org>
Date: Sat Sep 22 23:49:11 2007 -0400
Reply to: