Index: /trunk/src/VBox/Additions/x11/vboxmouse/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Additions/x11/vboxmouse/Makefile.kmk	(revision 35839)
+++ /trunk/src/VBox/Additions/x11/vboxmouse/Makefile.kmk	(revision 35840)
@@ -215,4 +215,24 @@
 
 
+#
+# vboxmouse_drv_110
+#
+DLLS += vboxmouse_drv_110
+vboxmouse_drv_110_TEMPLATE = VBOXGUESTR3XORGMOD
+vboxmouse_drv_110_DEFS := $(vboxmouse_drv_70_DEFS) NO_ANSIC
+## @todo replace $(VBOX_PATH_X11_ROOT)/xorg-server-1.6.0-local
+vboxmouse_drv_110_INCS := \
+	$(VBOX_PATH_X11_ROOT)/inputproto-1.9.99.902 \
+	$(VBOX_PATH_X11_ROOT)/libpciaccess-0.10.8 \
+	$(VBOX_PATH_X11_ROOT)/pixman-0.16.0 \
+	$(VBOX_PATH_X11_ROOT)/xextproto-7.1.1 \
+	$(VBOX_PATH_X11_ROOT)/xorg-server-1.9.99.901+git20110131.be3be758 \
+	$(VBOX_PATH_X11_ROOT)/xorg-server-1.6.0-local \
+	$(VBOX_PATH_X11_ROOT)/xproto-7.0.18 \
+	$(PATH_SUB_CURRENT)
+vboxmouse_drv_110_SOURCES = \
+	vboxmouse_15.c
+
+
 # Check the undefined symbols in the X.Org modules against lists of allowed
 # symbols.  Not very elegant, but it will catch problems early.
@@ -306,4 +326,12 @@
 	$(QUIET)$(APPEND) -t "$@" "done"
 
+     TESTING += $(vboxmouse_drv_110_0_OUTDIR)/tstvboxmouse19.run
+     OTHERS += $(vboxmouse_drv_110_0_OUTDIR)/tstvboxmouse19.run
+$$(vboxmouse_drv_110_0_OUTDIR)/tstvboxmouse19.run: $$(INSTARGET_vboxmouse_drv_110)
+	$(QUIET)$(call MSG_L1,Checking for unresolved symbols in $<)
+	$(QUIET)/bin/sh $(PATH_ROOT)/src/bldprogs/checkUndefined.sh $(KBUILD_TARGET)  \
+	    $(INSTARGET_vboxmouse_drv_110) $(VBOXMOUSE_SRC_PATH)/undefined_15
+	$(QUIET)$(APPEND) -t "$@" "done"
+
     endif # ! VBOX_ONLY_SDK
    endif # eq ($(KBUILD_HOST_ARCH),$(KBUILD_TARGET_ARCH))
Index: /trunk/src/VBox/Additions/x11/vboxmouse/vboxmouse_15.c
===================================================================
--- /trunk/src/VBox/Additions/x11/vboxmouse/vboxmouse_15.c	(revision 35839)
+++ /trunk/src/VBox/Additions/x11/vboxmouse/vboxmouse_15.c	(revision 35840)
@@ -133,5 +133,9 @@
 # endif
                                0 /* min X */, 65536 /* max X */,
-                               10000, 0, 10000);
+                               10000, 0, 10000
+# if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
+                               , Absolute
+# endif                               
+                               );
 
     xf86InitValuatorAxisStruct(device, 1,
@@ -140,5 +144,9 @@
 # endif
                                0 /* min Y */, 65536 /* max Y */,
-                               10000, 0, 10000);
+                               10000, 0, 10000
+# if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
+                               , Absolute
+# endif                               
+                               );
 #endif
     xf86InitValuatorDefaults(device, 0);
@@ -215,5 +223,5 @@
         xf86Msg(X_ERROR, "%s: Failed to open the VirtualBox device (error %d)\n",
                 pInfo->name, rc);
-        return !Success;
+        return BadMatch;
     }
 
@@ -233,28 +241,18 @@
 }
 
-static InputInfoPtr
-VBoxPreInit(InputDriverPtr drv, IDevPtr dev, int flags)
-{
-    InputInfoPtr pInfo;
+static int
+VBoxPreInitInfo(InputDriverPtr drv, InputInfoPtr pInfo, int flags)
+{
     const char *device;
-
-    if (!(pInfo = xf86AllocateInput(drv, 0)))
-        return NULL;
+    int rc;
 
     /* Initialise the InputInfoRec. */
-    pInfo->name = dev->identifier;
     pInfo->device_control = VBoxProc;
     pInfo->read_input = VBoxReadInput;
-    pInfo->conf_idev = dev;
     /* Unlike evdev, we set this unconditionally, as we don't handle keyboards. */
     pInfo->type_name = XI_MOUSE;
-    pInfo->conversion_proc = VBoxConvert;
-    pInfo->flags = XI86_POINTER_CAPABLE | XI86_SEND_DRAG_EVENTS |
-            XI86_ALWAYS_CORE;
-
-    xf86CollectInputOptions(pInfo, NULL, NULL);
-    xf86ProcessCommonOptions(pInfo, pInfo->options);
-
-    device = xf86CheckStrOption(dev->commonOptions, "Device",
+    pInfo->flags |= XI86_ALWAYS_CORE;
+
+    device = xf86CheckStrOption(pInfo->options, "Device",
                                 "/dev/vboxguest");
 
@@ -267,16 +265,42 @@
     if (pInfo->fd < 0) {
         xf86Msg(X_ERROR, "Unable to open VirtualBox device \"%s\".\n", device);
+        return BadMatch;
+    }
+
+    rc = VBoxProbe(pInfo);
+    if (rc != Success)
+        return rc;
+
+    return Success;
+}
+
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
+static InputInfoPtr
+VBoxPreInit(InputDriverPtr drv, IDevPtr dev, int flags)
+{
+    InputInfoPtr pInfo;
+    const char *device;
+
+    if (!(pInfo = xf86AllocateInput(drv, 0)))
+        return NULL;
+
+    /* Initialise the InputInfoRec. */
+    pInfo->name = dev->identifier;
+    pInfo->conf_idev = dev;
+    pInfo->conversion_proc = VBoxConvert;
+    pInfo->flags = XI86_POINTER_CAPABLE | XI86_SEND_DRAG_EVENTS;
+
+    xf86CollectInputOptions(pInfo, NULL, NULL);
+    xf86ProcessCommonOptions(pInfo, pInfo->options);
+
+    if (VBoxPreInitInfo(drv, pInfo, flags) != Success) {
         xf86DeleteInput(pInfo, 0);
         return NULL;
     }
 
-    if (VBoxProbe(pInfo) != Success) {
-        xf86DeleteInput(pInfo, 0);
-        return NULL;
-    }
-
     pInfo->flags |= XI86_CONFIGURED;
     return pInfo;
 }
+#endif
 
 _X_EXPORT InputDriverRec VBOXMOUSE = {
@@ -284,5 +308,9 @@
     "vboxmouse",
     NULL,
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
     VBoxPreInit,
+#else
+    VBoxPreInitInfo,
+#endif
     NULL,
     NULL,
Index: /trunk/src/VBox/Additions/x11/vboxvideo/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Additions/x11/vboxvideo/Makefile.kmk	(revision 35839)
+++ /trunk/src/VBox/Additions/x11/vboxvideo/Makefile.kmk	(revision 35840)
@@ -72,6 +72,6 @@
 vboxvideo_drv_INCS += $(PATH_ROOT)/src/VBox/Runtime/include
 vboxvideo_drv_SOURCES = \
+	vboxutils.c \
 	vboxvideo.c \
-	vboxutils.c \
 	$(PATH_ROOT)/src/VBox/Additions/common/VBoxVideo/HGSMIBase.cpp \
 	$(PATH_ROOT)/src/VBox/Additions/common/VBoxVideo/Modesetting.cpp \
@@ -291,4 +291,31 @@
 
 
+#
+# vboxvideo_drv_110
+#
+DLLS += vboxvideo_drv_110
+vboxvideo_drv_110_TEMPLATE = VBOXGUESTR3XORGMOD
+vboxvideo_drv_110_CFLAGS := $(vboxvideo_drv_70_CFLAGS)
+vboxvideo_drv_110_DEFS := $(vboxvideo_drv_15_DEFS)
+## @todo replace $(VBOX_PATH_X11_ROOT)/xorg-server-1.6.0-local
+vboxvideo_drv_110_INCS = \
+	$(VBOX_PATH_X11_ROOT)/fontsproto-2.1.0 \
+	$(VBOX_PATH_X11_ROOT)/glproto-1.4.10 \
+	$(VBOX_PATH_X11_ROOT)/mesa-7.2/include \
+	$(VBOX_PATH_X11_ROOT)/inputproto-1.9.99.902 \
+	$(VBOX_PATH_X11_ROOT)/libdrm-2.4.13 \
+	$(VBOX_PATH_X11_ROOT)/libpciaccess-0.10.8 \
+	$(VBOX_PATH_X11_ROOT)/pixman-0.16.0 \
+	$(VBOX_PATH_X11_ROOT)/randrproto-1.3.0 \
+	$(VBOX_PATH_X11_ROOT)/renderproto-0.11 \
+	$(VBOX_PATH_X11_ROOT)/xextproto-7.1.1 \
+	$(VBOX_PATH_X11_ROOT)/xf86driproto-2.1.0 \
+	$(VBOX_PATH_X11_ROOT)/xorg-server-1.9.99.901+git20110131.be3be758 \
+	$(VBOX_PATH_X11_ROOT)/xorg-server-1.6.0-local \
+	$(VBOX_PATH_X11_ROOT)/xproto-7.0.18
+vboxvideo_drv_110_INCS += $(PATH_ROOT)/src/VBox/Runtime/include
+vboxvideo_drv_110_SOURCES := $(vboxvideo_drv_15_SOURCES)
+
+
 # Check the undefined symbols in the X.Org modules against lists of allowed
 # symbols.  Not very elegant, but it will catch problems early.
@@ -382,4 +409,12 @@
 	$(QUIET)$(APPEND) -t "$@" "done"
 
+     TESTING += $(vboxvideo_drv_110_0_OUTDIR)/tstvboxvideo19.run
+     OTHERS += $(vboxvideo_drv_110_0_OUTDIR)/tstvboxvideo19.run
+$$(vboxvideo_drv_110_0_OUTDIR)/tstvboxvideo19.run: $$(INSTARGET_vboxvideo_drv_110)
+	$(QUIET)$(call MSG_L1,Checking for unresolved symbols in $<)
+	$(QUIET)/bin/sh $(PATH_ROOT)/src/bldprogs/checkUndefined.sh $(KBUILD_TARGET)  \
+	    $(INSTARGET_vboxvideo_drv_110) $(VBOXVIDEO_SRC_PATH)/undefined
+	$(QUIET)$(APPEND) -t "$@" "done"
+
     endif # ! VBOX_ONLY_SDK
    endif # eq ($(KBUILD_HOST_ARCH),$(KBUILD_TARGET_ARCH))
