summaryrefslogtreecommitdiff
path: root/package/xf86-input-evtouch/patches/patch-evtouch_c
diff options
context:
space:
mode:
authorJoerg Seitter <oss@seitter.net>2010-01-08 10:44:54 +0100
committerWaldemar Brodkorb <wbx@openadk.org>2010-01-08 11:00:16 +0100
commit5c7ed5f4cdd82bfd0829c11c6f3779db2bd704ab (patch)
tree112170014c886f41b95cdd2d523fc7d6e9ab0765 /package/xf86-input-evtouch/patches/patch-evtouch_c
parent18fb96ec0fffc0ac2bf76da03677f33285cc8565 (diff)
added xf86-input-evtouch package Support for touchscreens with xf86
Signed-off-by: Joerg Seitter <oss@seitter.net>
Diffstat (limited to 'package/xf86-input-evtouch/patches/patch-evtouch_c')
-rw-r--r--package/xf86-input-evtouch/patches/patch-evtouch_c174
1 files changed, 174 insertions, 0 deletions
diff --git a/package/xf86-input-evtouch/patches/patch-evtouch_c b/package/xf86-input-evtouch/patches/patch-evtouch_c
new file mode 100644
index 000000000..a60a08453
--- /dev/null
+++ b/package/xf86-input-evtouch/patches/patch-evtouch_c
@@ -0,0 +1,174 @@
+fixed compile for xorg 1.7.1
+--- xf86-input-evtouch-0.8.8.orig/evtouch.c 2008-11-11 09:47:55.000000000 +0100
++++ xf86-input-evtouch-0.8.8/evtouch.c 2010-01-06 16:11:16.000000000 +0100
+@@ -30,10 +30,10 @@
+
+ #define _evdev_touch_C_
+
+-#include <xf86Version.h>
+-#if XF86_VERSION_CURRENT >= XF86_VERSION_NUMERIC(3,9,0,0,0)
+-#define XFREE86_V4
+-#endif
++//#include <xf86Version.h>
++//#if XF86_VERSION_CURRENT >= XF86_VERSION_NUMERIC(3,9,0,0,0)
++//#define XFREE86_V4
++//#endif
+
+ /*****************************************************************************
+ * Standard Headers
+@@ -88,6 +88,11 @@
+
+ #include <linux/input.h>
+
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 3
++#include <X11/Xatom.h>
++#include <xserver-properties.h>
++#endif
++
+ /*****************************************************************************
+ * Local Headers
+ ****************************************************************************/
+@@ -132,14 +137,14 @@ InputDriverRec EVTOUCH = {
+ 0
+ };
+
+-#ifdef XFree86LOADER
++//#ifdef XFree86LOADER
+ static XF86ModuleVersionInfo VersionRec =
+ {
+ "evtouch",
+ "Kenan Esau",
+ MODINFOSTRING1,
+ MODINFOSTRING2,
+- XF86_VERSION_CURRENT,
++ XORG_VERSION_CURRENT,
+ 0, 8, 8,
+ ABI_CLASS_XINPUT,
+ ABI_XINPUT_VERSION,
+@@ -167,9 +172,9 @@ Unplug(pointer p)
+ }
+
+
+-XF86ModuleData evtouchModuleData = {&VersionRec, Plug, Unplug };
++_X_EXPORT XF86ModuleData evtouchModuleData = {&VersionRec, Plug, Unplug };
+
+-#endif /* XFree86LOADER */
++//#endif /* XFree86LOADER */
+
+
+ static const char *default_options[] =
+@@ -581,6 +586,32 @@ DeviceOff (DeviceIntPtr dev)
+ }
+
+
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
++static void xf86WcmInitButtonLabels(Atom *labels, int nlabels)
++{
++ memset(labels, 0, nlabels * sizeof(Atom));
++ switch(nlabels)
++ {
++ default:
++ case 7:
++ labels[6] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_HWHEEL_RIGHT);
++ case 6:
++ labels[5] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_HWHEEL_LEFT);
++ case 5:
++ labels[4] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_WHEEL_DOWN);
++ case 4:
++ labels[3] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_WHEEL_UP);
++ case 3:
++ labels[2] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_RIGHT);
++ case 2:
++ labels[1] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_MIDDLE);
++ case 1:
++ labels[0] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_LEFT);
++ break;
++ }
++}
++#endif
++
+
+
+ static Bool
+@@ -591,12 +622,21 @@ DeviceInit (DeviceIntPtr dev)
+ EVTouchPrivatePtr priv = (EVTouchPrivatePtr) (local->private);
+ unsigned char map[EV_MAX_BUTTONS];
+ int i;
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
++ Atom *axis_labels, *btn_labels;
++#endif
+
+ for (i = 0; i < EV_MAX_BUTTONS; i++)
+ map[i] = i;
+
+ priv->btn_count = EV_MAX_BUTTONS;
+
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
++ axis_labels = xcalloc(2, sizeof(Atom));
++ btn_labels = xcalloc(EV_MAX_BUTTONS, sizeof(Atom));
++ xf86WcmInitButtonLabels(btn_labels, EV_MAX_BUTTONS);
++#endif
++
+ /*
+ * these have to be here instead of in the SetupProc, because when the
+ * SetupProc is run at server startup, screenInfo is not setup yet
+@@ -629,8 +669,18 @@ DeviceInit (DeviceIntPtr dev)
+ /*
+ * Device reports button press for 5 buttons.
+ */
+- if (InitButtonClassDeviceStruct (dev, EV_MAX_BUTTONS, map) == FALSE)
++ if (InitButtonClassDeviceStruct (dev, EV_MAX_BUTTONS,
++
++ #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
++ btn_labels,
++ #endif
++ map) == FALSE)
+ {
++
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
++ xfree(btn_labels);
++#endif
++
+ ErrorF("Unable to allocate EVTouch touchscreen ButtonClassDeviceStruct\n");
+ return BadAlloc;
+ }
+@@ -653,7 +703,12 @@ DeviceInit (DeviceIntPtr dev)
+ * Device reports motions on 2 axes in absolute coordinates.
+ * Axes min and max values are reported in raw coordinates.
+ */
+- if (InitValuatorClassDeviceStruct(dev, 2, xf86GetMotionEvents,
++ if (InitValuatorClassDeviceStruct(dev, 2,
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
++ axis_labels,
++#endif
++
++// xf86GetMotionEvents,
+ local->history_size, Absolute) == FALSE)
+ {
+ ErrorF ("Unable to allocate EVTouch touchscreen ValuatorClassDeviceStruct\n");
+@@ -672,7 +727,24 @@ DeviceInit (DeviceIntPtr dev)
+ EV_AXIS_MAX_RES /* max_res */ );
+ xf86InitValuatorDefaults(dev, 1);
+ #else
+- xf86InitValuatorAxisStruct(dev, 0, priv->min_x, priv->max_x,
++ xf86InitValuatorAxisStruct(dev, 0,
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
++ XIGetKnownProperty(AXIS_LABEL_PROP_ABS_X),
++#endif
++ 0, priv->screen_width,
++ 1024,
++ EV_AXIS_MIN_RES /* min_res */ ,
++ EV_AXIS_MAX_RES /* max_res */ );
++ xf86InitValuatorDefaults(dev, 0);
++
++ xf86InitValuatorAxisStruct(dev, 1,
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
++ XIGetKnownProperty(AXIS_LABEL_PROP_ABS_Y),
++#endif
++ 0, priv->screen_width,
++ 1024,
++ EV_AXIS_MIN_RES /* min_res */ ,
++ EV_AXIS_MAX_RES /* max_res */ );
+ xf86InitValuatorDefaults(dev, 1);
+ #endif
+