--- 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-08 17:14:02.000000000 +0100
@@ -30,8 +30,8 @@
 
 #define _evdev_touch_C_
 
-#include <xf86Version.h>
-#if XF86_VERSION_CURRENT >= XF86_VERSION_NUMERIC(3,9,0,0,0)
+#include <xorgVersion.h>
+#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(3,9,0,0,0)
 #define XFREE86_V4
 #endif
 
@@ -74,7 +74,6 @@
 #include "xf86_OSproc.h"
 #include "xf86Xinput.h"
 #include "exevents.h"
-#include "xf86OSmouse.h"
 #include "randrstr.h"
 
 #ifndef NEED_XF86_TYPES
@@ -139,7 +138,7 @@ static XF86ModuleVersionInfo VersionRec 
         "Kenan Esau",
         MODINFOSTRING1,
         MODINFOSTRING2,
-        XF86_VERSION_CURRENT,
+        XORG_VERSION_CURRENT,
         0, 8, 8,
         ABI_CLASS_XINPUT,
         ABI_XINPUT_VERSION,
@@ -167,7 +166,7 @@ Unplug(pointer p)
 }
 
 
-XF86ModuleData evtouchModuleData = {&VersionRec, Plug, Unplug };
+_X_EXPORT XF86ModuleData evtouchModuleData = {&VersionRec, Plug, Unplug };
 
 #endif /* XFree86LOADER */
 
@@ -306,7 +305,7 @@ void EVTouchProcessAbs(EVTouchPrivatePtr
 	}
 
         if (pos_changed == 1) {
-#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 2
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 2
                 ConvertProc(priv->local, 0, 2, 
                             priv->raw_x, priv->raw_y,
                             0, 0, 0, 0, 
@@ -370,7 +369,7 @@ void EVTouchProcessRel(EVTouchPrivatePtr
                         priv->raw_y = priv->min_y;
         }
 
-#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 2
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 2
         ConvertProc(priv->local, 0, 2,
                     priv->raw_x, priv->raw_y,
                     0, 0, 0, 0,
@@ -591,6 +590,10 @@ 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 btn_label;
+        Atom axis_labels[2] = { 0, 0 };
+#endif
 
         for (i = 0; i < EV_MAX_BUTTONS; i++)
                 map[i] = i;
@@ -629,7 +632,11 @@ 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_label,
+#endif
+                 map) == FALSE)
         {
                 ErrorF("Unable to allocate EVTouch touchscreen ButtonClassDeviceStruct\n");
                 return BadAlloc;
@@ -653,28 +660,34 @@ 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,
-                                          local->history_size, Absolute) == FALSE)
+        if (InitValuatorClassDeviceStruct(dev, 2,
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
+				      axis_labels,
+#endif
+                              local->history_size, Absolute) == FALSE)
         {
                 ErrorF ("Unable to allocate EVTouch touchscreen ValuatorClassDeviceStruct\n");
                 return !Success;
         }
 
-#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 2
-        xf86InitValuatorAxisStruct(dev, 0, 0, priv->screen_width,
+        xf86InitValuatorAxisStruct(dev, 0, 
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
+				           axis_labels[0],
+#endif
+                                   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,
+        xf86InitValuatorAxisStruct(dev, 1,
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
+				           axis_labels[1],
+#endif
+                                   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,
-        xf86InitValuatorDefaults(dev, 1);
-#endif
 
         /* Initial position of pointer on screen: Centered */
         priv->cur_x=(priv->max_x - priv->min_x)/2;
