xserver-kdrive: add 1.4 for X11R7.3 release
authorPhilipp Zabel <philipp.zabel@gmail.com>
Sat, 8 Sep 2007 20:10:15 +0000 (20:10 +0000)
committerPhilipp Zabel <philipp.zabel@gmail.com>
Sat, 8 Sep 2007 20:10:15 +0000 (20:10 +0000)
* The tslib mouse driver has to be selected with "-mouse tslib", it
  defaults to the /dev/input/touchscreen0 evdev device in this build.
* The evdev keyboard driver is available, but not very useful yet. It
  doesn't accept any command line options as long as XKB is disabled.
* xcalibrate and tslib are taped together with a bit of ugly code in
  xcalibrate-new-input-world-order.patch. This should be replaced as
  soon as I learn how to do it correctly.

14 files changed:
packages/xorg-xserver/xserver-kdrive-1.4/.mtn2git_empty [new file with mode: 0644]
packages/xorg-xserver/xserver-kdrive-1.4/disable-xf86-dga-xorgcfg.patch [new file with mode: 0644]
packages/xorg-xserver/xserver-kdrive-1.4/enable-epson.patch [new file with mode: 0644]
packages/xorg-xserver/xserver-kdrive-1.4/enable-tslib.patch [new file with mode: 0644]
packages/xorg-xserver/xserver-kdrive-1.4/enable-xcalibrate.patch [new file with mode: 0644]
packages/xorg-xserver/xserver-kdrive-1.4/fbdev-evdev.patch [new file with mode: 0644]
packages/xorg-xserver/xserver-kdrive-1.4/fix_default_mode.patch [new file with mode: 0644]
packages/xorg-xserver/xserver-kdrive-1.4/optional-xkb.patch [new file with mode: 0644]
packages/xorg-xserver/xserver-kdrive-1.4/tslib-default-device.patch [new file with mode: 0644]
packages/xorg-xserver/xserver-kdrive-1.4/w100-autofoo.patch [new file with mode: 0644]
packages/xorg-xserver/xserver-kdrive-1.4/w100-new-input-world-order.patch [new file with mode: 0644]
packages/xorg-xserver/xserver-kdrive-1.4/xcalibrate-new-input-world-order.patch [new file with mode: 0644]
packages/xorg-xserver/xserver-kdrive-1.4/xcalibrate_coords.patch [new file with mode: 0644]
packages/xorg-xserver/xserver-kdrive_1.4.bb [new file with mode: 0644]

diff --git a/packages/xorg-xserver/xserver-kdrive-1.4/.mtn2git_empty b/packages/xorg-xserver/xserver-kdrive-1.4/.mtn2git_empty
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/packages/xorg-xserver/xserver-kdrive-1.4/disable-xf86-dga-xorgcfg.patch b/packages/xorg-xserver/xserver-kdrive-1.4/disable-xf86-dga-xorgcfg.patch
new file mode 100644 (file)
index 0000000..ccc1913
--- /dev/null
@@ -0,0 +1,39 @@
+Index: xorg-server-1.3.0.0/configure.ac
+===================================================================
+--- xorg-server-1.3.0.0.orig/configure.ac      2007-04-20 03:23:40.000000000 +0200
++++ xorg-server-1.3.0.0/configure.ac   2007-05-09 16:51:34.000000000 +0200
+@@ -520,7 +520,11 @@
+ XEXTXORG_LIB='$(top_builddir)/Xext/libXextbuiltin.la'
+ dnl Core modules for most extensions, et al.
++if test "$KDRIVE" = yes; then
++REQUIRED_MODULES="[randrproto >= 1.2] renderproto [fixesproto >= 4.0] [damageproto >= 1.1] xcmiscproto xextproto xproto xtrans xf86bigfontproto [scrnsaverproto >= 1.1] bigreqsproto resourceproto fontsproto inputproto [kbproto >= 1.0.3]"
++else
+ REQUIRED_MODULES="[randrproto >= 1.2] renderproto [fixesproto >= 4.0] [damageproto >= 1.1] xcmiscproto xextproto xproto xtrans xf86miscproto xf86vidmodeproto xf86bigfontproto [scrnsaverproto >= 1.1] bigreqsproto resourceproto fontsproto inputproto xf86dgaproto [kbproto >= 1.0.3]"
++fi
+ REQUIRED_LIBS="xfont xau fontenc"
+ AM_CONDITIONAL(XV, [test "x$XV" = xyes])
+@@ -1603,7 +1607,9 @@
+ AC_SUBST(XKB_COMPILED_DIR)
+ dnl and the rest of these are generic, so they're in config.h
++if test ! x"$KDRIVE" = xyes; then
+ AC_DEFINE(XFreeXDGA, 1, [Build XDGA support])
++fi
+ AC_DEFINE(XResExtension, 1, [Build XRes extension])
+ AC_TRY_COMPILE([
+@@ -1616,10 +1622,12 @@
+ AC_DEFINE_DIR(PROJECTROOT, prefix, [Overall prefix])
++if test ! "x$KDRIVE" = xyes ; then
+ dnl xorgconfig CLI configuration utility
+ PKG_CHECK_MODULES([XORGCONFIG_DEP], [xkbfile x11])
+ AC_SUBST(XORGCONFIG_DEP_CFLAGS)
+ AC_SUBST(XORGCONFIG_DEP_LIBS)
++fi
+ dnl xorgcfg GUI configuration utility
+ AC_ARG_ENABLE(xorgcfg, AS_HELP_STRING([--enable-xorgcfg], 
diff --git a/packages/xorg-xserver/xserver-kdrive-1.4/enable-epson.patch b/packages/xorg-xserver/xserver-kdrive-1.4/enable-epson.patch
new file mode 100644 (file)
index 0000000..0fffd71
--- /dev/null
@@ -0,0 +1,17 @@
+Index: xorg-server-1.4/hw/kdrive/Makefile.am
+===================================================================
+--- xorg-server-1.4.orig/hw/kdrive/Makefile.am 2007-08-30 01:48:57.000000000 +0200
++++ xorg-server-1.4/hw/kdrive/Makefile.am      2007-09-06 23:24:29.000000000 +0200
+@@ -1,10 +1,10 @@
+ if KDRIVEVESA
+-VESA_SUBDIRS = vesa ati chips epson i810 mach64 mga nvidia pm2 r128 \
++VESA_SUBDIRS = vesa ati chips i810 mach64 mga nvidia pm2 r128 \
+                smi via
+ endif
+ if BUILD_KDRIVEFBDEVLIB
+-FBDEV_SUBDIRS = fbdev
++FBDEV_SUBDIRS = fbdev epson
+ endif
+ if XFAKESERVER
diff --git a/packages/xorg-xserver/xserver-kdrive-1.4/enable-tslib.patch b/packages/xorg-xserver/xserver-kdrive-1.4/enable-tslib.patch
new file mode 100644 (file)
index 0000000..3746be5
--- /dev/null
@@ -0,0 +1,24 @@
+Index: xorg-server-1.4/configure.ac
+===================================================================
+--- xorg-server-1.4.orig/configure.ac  2007-09-08 16:36:37.000000000 +0200
++++ xorg-server-1.4/configure.ac       2007-09-08 16:38:10.000000000 +0200
+@@ -1816,7 +1816,7 @@
+         AC_CHECK_LIB([rt], [nanosleep], XEPHYR_LIBS="$XEPHYR_LIBS -lrt"))
+     
+     if test "x$TSLIB" = xyes; then
+-        PKG_CHECK_MODULES([TSLIB], [tslib-0.0], [HAVE_TSLIB="yes"], [HAVE_TSLIB="no"])
++        PKG_CHECK_MODULES([TSLIB], [tslib-1.0], [HAVE_TSLIB="yes"], [HAVE_TSLIB="no"])
+         if test "x$HAVE_TSLIB" = xno; then
+             AC_MSG_ERROR([tslib must be installed to build the tslib driver. See http://tslib.berlios.de/])
+         fi
+@@ -1840,8 +1840,8 @@
+           ;;
+     esac
+     KDRIVE_STUB_LIB='$(top_builddir)/hw/kdrive/src/libkdrivestubs.a'
+-    KDRIVE_LOCAL_LIBS="$DIX_LIB $CONFIG_LIB $KDRIVE_LIB $TSLIB_LIBS $KDRIVE_OS_LIB $KDRIVE_PURE_LIBS $KDRIVE_STUB_LIB"
+-    KDRIVE_LIBS="$XSERVERLIBS_LIBS $KDRIVE_LOCAL_LIBS"
++    KDRIVE_LOCAL_LIBS="$DIX_LIB $CONFIG_LIB $KDRIVE_LIB $KDRIVE_OS_LIB $KDRIVE_PURE_LIBS $KDRIVE_STUB_LIB"
++    KDRIVE_LIBS="$XSERVERLIBS_LIBS $TSLIB_LIBS $KDRIVE_LOCAL_LIBS"
+     # check if we can build Xephyr
+     PKG_CHECK_MODULES(XEPHYR, x11 xext xfont xau xdmcp, [xephyr="yes"], [xephyr="no"])
diff --git a/packages/xorg-xserver/xserver-kdrive-1.4/enable-xcalibrate.patch b/packages/xorg-xserver/xserver-kdrive-1.4/enable-xcalibrate.patch
new file mode 100644 (file)
index 0000000..113f1cc
--- /dev/null
@@ -0,0 +1,77 @@
+---
+ Xext/Makefile.am           |    6 ++++++
+ configure.ac               |    9 ++++++++-
+ include/kdrive-config.h.in |    3 +++
+ mi/miinitext.c             |    6 ++++++
+ 4 files changed, 23 insertions(+), 1 deletion(-)
+
+Index: xorg-server-1.4/mi/miinitext.c
+===================================================================
+--- xorg-server-1.4.orig/mi/miinitext.c        2007-08-23 21:04:54.000000000 +0200
++++ xorg-server-1.4/mi/miinitext.c     2007-09-06 23:25:35.000000000 +0200
+@@ -374,6 +374,9 @@
+ #ifdef DMXEXT
+ extern void DMXExtensionInit(INITARGS);
+ #endif
++#ifdef XCALIBRATE
++extern void XCalibrateExtensionInit(INITARGS);
++#endif
+ #ifdef XEVIE
+ extern void XevieExtensionInit(INITARGS);
+ #endif
+@@ -666,6 +669,9 @@
+ #ifdef DAMAGE
+     if (!noDamageExtension) DamageExtensionInit();
+ #endif
++#ifdef  XCALIBRATE
++    XCalibrateExtensionInit ();
++#endif
+ }
+ void
+Index: xorg-server-1.4/configure.ac
+===================================================================
+--- xorg-server-1.4.orig/configure.ac  2007-09-06 23:25:15.000000000 +0200
++++ xorg-server-1.4/configure.ac       2007-09-06 23:26:40.000000000 +0200
+@@ -500,6 +500,7 @@
+ AC_ARG_ENABLE(xf86misc,       AS_HELP_STRING([--disable-xf86misc], [Build XF86Misc extension (default: auto)]), [XF86MISC=$enableval], [XF86MISC=auto])
+ AC_ARG_ENABLE(xace,           AS_HELP_STRING([--disable-xace], [Build X-ACE extension (default: enabled)]), [XACE=$enableval], [XACE=yes])
+ AC_ARG_ENABLE(xcsecurity,     AS_HELP_STRING([--disable-xcsecurity], [Build Security extension (default: enabled)]), [XCSECURITY=$enableval], [XCSECURITY=$XACE])
++AC_ARG_ENABLE(xcalibrate,     AS_HELP_STRING([--enable-xcalibrate], [Build XCalibrate extension (default: disabled)]), [XCALIBRATE=$enableval], [XCALIBRATE=no])
+ AC_ARG_ENABLE(appgroup,       AS_HELP_STRING([--disable-appgroup], [Build XC-APPGROUP extension (default: enabled)]), [APPGROUP=$enableval], [APPGROUP=$XCSECURITY])
+ AC_ARG_ENABLE(xcalibrate,     AS_HELP_STRING([--enable-xcalibrate], [Build XCalibrate extension (default: disabled)]), [XCALIBRATE=$enableval], [XCALIBRATE=no])
+ AC_ARG_ENABLE(tslib,          AS_HELP_STRING([--enable-tslib], [Build kdrive tslib touchscreen support (default: disabled)]), [TSLIB=$enableval], [TSLIB=no])
+@@ -787,6 +788,12 @@
+       AC_DEFINE(XCSECURITY, 1, [Build Security extension])
+ fi
++AM_CONDITIONAL(XCALIBRATE, [test "x$XCALIBRATE" = xyes])
++if test "x$XCALIBRATE" = xyes; then
++      AC_DEFINE(XCALIBRATE, 1, [Build XCalibrate extension])
++      REQUIRED_MODULES="$REQUIRED_MODULES xcalibrateproto"
++fi
++
+ AM_CONDITIONAL(XEVIE, [test "x$XEVIE" = xyes])
+ if test "x$XEVIE" = xyes; then
+       AC_DEFINE(XEVIE, 1, [Build XEvIE extension])
+@@ -1841,7 +1848,7 @@
+           ;;
+     esac
+     KDRIVE_STUB_LIB='$(top_builddir)/hw/kdrive/src/libkdrivestubs.a'
+-    KDRIVE_LOCAL_LIBS="$DIX_LIB $CONFIG_LIB $KDRIVE_LIB $KDRIVE_OS_LIB $KDRIVE_PURE_LIBS $KDRIVE_STUB_LIB"
++    KDRIVE_LOCAL_LIBS="$DIX_LIB $CONFIG_LIB $KDRIVE_LIB $KDRIVE_PURE_LIBS $KDRIVE_OS_LIB $KDRIVE_STUB_LIB"
+     KDRIVE_LIBS="$XSERVERLIBS_LIBS $TSLIB_LIBS $KDRIVE_LOCAL_LIBS"
+     # check if we can build Xephyr
+Index: xorg-server-1.4/include/kdrive-config.h.in
+===================================================================
+--- xorg-server-1.4.orig/include/kdrive-config.h.in    2007-08-23 21:04:54.000000000 +0200
++++ xorg-server-1.4/include/kdrive-config.h.in 2007-09-06 23:25:35.000000000 +0200
+@@ -31,4 +31,7 @@
+ /* Have execinfo.h for backtrace(). */
+ #undef HAVE_EXECINFO_H
++/* Enable XCalibrate extension */
++#undef XCALIBRATE
++
+ #endif /* _KDRIVE_CONFIG_H_ */
diff --git a/packages/xorg-xserver/xserver-kdrive-1.4/fbdev-evdev.patch b/packages/xorg-xserver/xserver-kdrive-1.4/fbdev-evdev.patch
new file mode 100644 (file)
index 0000000..5f9b21b
--- /dev/null
@@ -0,0 +1,19 @@
+Index: xorg-server-1.4/hw/kdrive/fbdev/fbinit.c
+===================================================================
+--- xorg-server-1.4.orig/hw/kdrive/fbdev/fbinit.c      2007-09-08 21:27:44.000000000 +0200
++++ xorg-server-1.4/hw/kdrive/fbdev/fbinit.c   2007-09-08 21:28:55.000000000 +0200
+@@ -46,11 +46,13 @@
+     KdAddKeyboardDriver (&LinuxKeyboardDriver);
+     KdAddPointerDriver (&LinuxMouseDriver);
++    KdAddKeyboardDriver (&LinuxEvdevKeyboardDriver);
++    KdAddPointerDriver (&LinuxEvdevMouseDriver);
+ #ifdef TSLIB
+     KdAddPointerDriver (&TsDriver);
+ #endif
+-    ki = KdParseKeyboard ("keybd");
++    ki = KdParseKeyboard ("keyboard");
+     KdAddKeyboard(ki);
+     KdInitInput ();
diff --git a/packages/xorg-xserver/xserver-kdrive-1.4/fix_default_mode.patch b/packages/xorg-xserver/xserver-kdrive-1.4/fix_default_mode.patch
new file mode 100644 (file)
index 0000000..edc5146
--- /dev/null
@@ -0,0 +1,26 @@
+---
+ hw/kdrive/src/kmode.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+Index: xorg-server-1.3.0.0/hw/kdrive/src/kmode.c
+===================================================================
+--- xorg-server-1.3.0.0.orig/hw/kdrive/src/kmode.c     2007-05-16 10:30:29.000000000 +0100
++++ xorg-server-1.3.0.0/hw/kdrive/src/kmode.c  2007-05-16 10:31:08.000000000 +0100
+@@ -106,6 +106,8 @@ const KdMonitorTiming  kdMonitorTimings[
+                   16,     120,    176,    KdSyncNegative, /* 37.861 */
+                   1,      20,     24,     KdSyncNegative, /* 72.809 */
+     },
++    /* DEFAULT */
++#define MONITOR_TIMING_DEFAULT        13
+     { 640,    480,    60,     25175,                      /* VESA */
+                  16,      48,     160,    KdSyncNegative, /* 31.469 */
+                  10,      33,     45,     KdSyncNegative, /* 59.940 */
+@@ -127,8 +129,6 @@ const KdMonitorTiming  kdMonitorTimings[
+                   16,     160,    256,    KdSyncPositive, /* 46.875 */
+                   1,      21,     25,     KdSyncPositive, /* 75.000 */
+     },
+-    /* DEFAULT */
+-#define MONITOR_TIMING_DEFAULT        9
+     { 800,    600,    72,     50000,                      /* VESA */
+                   56,     64,     240,    KdSyncPositive, /* 48.077 */
+                   37,     23,     66,     KdSyncPositive, /* 72.188 */
diff --git a/packages/xorg-xserver/xserver-kdrive-1.4/optional-xkb.patch b/packages/xorg-xserver/xserver-kdrive-1.4/optional-xkb.patch
new file mode 100644 (file)
index 0000000..22d8c94
--- /dev/null
@@ -0,0 +1,58 @@
+Index: xorg-server-1.4/Makefile.am
+===================================================================
+--- xorg-server-1.4.orig/Makefile.am   2007-08-23 21:04:52.000000000 +0200
++++ xorg-server-1.4/Makefile.am        2007-09-06 23:19:59.000000000 +0200
+@@ -26,6 +26,10 @@
+ GLX_DIR=GL
+ endif
++if XKB
++XKB_DIR=xkb
++endif
++
+ if DBE
+ DBE_DIR=dbe
+ endif
+@@ -42,7 +46,7 @@
+       randr \
+       render  \
+       Xi \
+-      xkb \
++      $(XKB_DIR) \
+       $(DBE_DIR) \
+       $(MFB_DIR) \
+       $(AFB_DIR) \
+Index: xorg-server-1.4/configure.ac
+===================================================================
+--- xorg-server-1.4.orig/configure.ac  2007-09-06 07:59:00.000000000 +0200
++++ xorg-server-1.4/configure.ac       2007-09-06 23:19:19.000000000 +0200
+@@ -514,6 +514,7 @@
+ AC_ARG_ENABLE(config-dbus,    AS_HELP_STRING([--enable-config-dbus], [Build D-BUS API support (default: no)]), [CONFIG_DBUS_API=$enableval], [CONFIG_DBUS_API=no])
+ AC_ARG_ENABLE(config-hal,     AS_HELP_STRING([--disable-config-hal], [Build HAL support (default: auto)]), [CONFIG_HAL=$enableval], [CONFIG_HAL=auto])
+ AC_ARG_ENABLE(xfree86-utils,     AS_HELP_STRING([--enable-xfree86-utils], [Build xfree86 DDX utilities (default: enabled)]), [XF86UTILS=$enableval], [XF86UTILS=yes])
++AC_ARG_ENABLE(xkb,            AS_HELP_STRING([--disable-xkb], [Build XKB (default: enabled)]), [XKB=$enableval], [XKB=yes])
+ dnl DDXes.
+ AC_ARG_ENABLE(xorg,                 AS_HELP_STRING([--enable-xorg], [Build Xorg server (default: auto)]), [XORG=$enableval], [XORG=auto])
+@@ -889,12 +890,15 @@
+ AC_DEFINE(SHAPE, 1, [Support SHAPE extension])
+-AC_DEFINE(XKB, 1, [Build XKB])
+-AC_DEFINE(XKB_IN_SERVER, 1, [Build XKB server])
+-AC_DEFINE(XKB_DFLT_DISABLED, 0, [Disable XKB per default])
+-REQUIRED_MODULES="$REQUIRED_MODULES xkbfile"
+-XKB_LIB='$(top_builddir)/xkb/libxkb.la'
+-XKB_STUB_LIB='$(top_builddir)/xkb/libxkbstubs.la'
++AM_CONDITIONAL(XKB, [test "x$XKB" = xyes])
++if test "x$XKB" = xyes; then
++      AC_DEFINE(XKB, 1, [Build XKB])
++      AC_DEFINE(XKB_IN_SERVER, 1, [Build XKB server])
++      AC_DEFINE(XKB_DFLT_DISABLED, 0, [Disable XKB per default])
++      REQUIRED_MODULES="$REQUIRED_MODULES xkbfile"
++      XKB_LIB='$(top_builddir)/xkb/libxkb.la'
++      XKB_STUB_LIB='$(top_builddir)/xkb/libxkbstubs.la'
++fi
+ AC_CHECK_FUNC(strcasecmp, [], AC_DEFINE([NEED_STRCASECMP], 1,
+                                         [Do not have 'strcasecmp'.]))
diff --git a/packages/xorg-xserver/xserver-kdrive-1.4/tslib-default-device.patch b/packages/xorg-xserver/xserver-kdrive-1.4/tslib-default-device.patch
new file mode 100644 (file)
index 0000000..c1bc49f
--- /dev/null
@@ -0,0 +1,15 @@
+Index: xorg-server-1.4/hw/kdrive/linux/tslib.c
+===================================================================
+--- xorg-server-1.4.orig/hw/kdrive/linux/tslib.c       2007-09-08 19:58:08.000000000 +0200
++++ xorg-server-1.4/hw/kdrive/linux/tslib.c    2007-09-08 19:58:09.000000000 +0200
+@@ -121,6 +121,10 @@
+     private->raw_event_hook = NULL;
+     private->raw_event_closure = NULL;
++    if (!pi->path) {
++        pi->path = "/dev/input/touchscreen0";
++        ErrorF("[tslib/TslibEnable] no device path given, trying %s\n", pi->path);
++    }
+     private->tsDev = ts_open(pi->path, 0);
+     private->fd = ts_fd(private->tsDev);
+     if (!private->tsDev || ts_config(private->tsDev) || private->fd < 0) {
diff --git a/packages/xorg-xserver/xserver-kdrive-1.4/w100-autofoo.patch b/packages/xorg-xserver/xserver-kdrive-1.4/w100-autofoo.patch
new file mode 100644 (file)
index 0000000..0812a2e
--- /dev/null
@@ -0,0 +1,54 @@
+Index: xorg-server-1.4/hw/kdrive/Makefile.am
+===================================================================
+--- xorg-server-1.4.orig/hw/kdrive/Makefile.am 2007-09-06 23:32:04.000000000 +0200
++++ xorg-server-1.4/hw/kdrive/Makefile.am      2007-09-06 23:33:44.000000000 +0200
+@@ -11,6 +11,10 @@
+ XFAKE_SUBDIRS = fake
+ endif
++if KDRIVEW100
++W100_SUBDIRS = w100
++endif
++
+ if XSDLSERVER
+ XSDL_SUBDIRS = sdl
+ endif
+@@ -26,6 +30,7 @@
+ SERVER_SUBDIRS =              \
+       $(XSDL_SUBDIRS)         \
+       $(FBDEV_SUBDIRS)        \
++      $(W100_SUBDIRS)         \
+       $(VESA_SUBDIRS)         \
+       $(XEPHYR_SUBDIRS)       \
+       $(XFAKE_SUBDIRS)
+Index: xorg-server-1.4/configure.ac
+===================================================================
+--- xorg-server-1.4.orig/configure.ac  2007-09-06 23:32:05.000000000 +0200
++++ xorg-server-1.4/configure.ac       2007-09-06 23:34:41.000000000 +0200
+@@ -535,6 +535,7 @@
+ AC_ARG_ENABLE(kdrive,         AS_HELP_STRING([--enable-kdrive], [Build kdrive servers (default: no)]), [KDRIVE=$enableval], [KDRIVE=no])
+ AC_ARG_ENABLE(xephyr,         AS_HELP_STRING([--enable-xephyr], [Build the kdrive Xephyr server (default: auto)]), [XEPHYR=$enableval], [XEPHYR=auto])
+ AC_ARG_ENABLE(xsdl,           AS_HELP_STRING([--enable-xsdl], [Build the kdrive Xsdl server (default: auto)]), [XSDL=$enableval], [XSDL=auto])
++AC_ARG_ENABLE(w100,           AS_HELP_STRING([--enable-w100], [Build the kdrive Xw100 server (default: no)]), [KDRIVEW100=$enableval], [KDRIVEW100=no])
+ AC_ARG_ENABLE(xfake,          AS_HELP_STRING([--enable-xfake], [Build the kdrive 'fake' server (default: auto)]), [XFAKE=$enableval], [XFAKE=auto])
+ AC_ARG_ENABLE(xfbdev,         AS_HELP_STRING([--enable-xfbdev], [Build the kdrive framebuffer device server (default: auto)]), [XFBDEV=$enableval], [XFBDEV=auto])
+ AC_ARG_ENABLE(kdrive-vesa,    AS_HELP_STRING([--enable-kdrive-vesa], [Build the kdrive VESA-based servers (default: auto)]), [KDRIVEVESA=$enableval], [KDRIVEVESA=auto])
+@@ -1669,6 +1670,10 @@
+ fi
+ AM_CONDITIONAL(XP_USE_FREETYPE, [test "x$XPRINT" = xyes && test "x$XP_USE_FREETYPE" = xyes])
++AM_CONDITIONAL(KDRIVEW100, [test "x$KDRIVEW100" = xyes])
++if test "x$KDRIVEW100" = xyes; then
++        AC_DEFINE(KDRIVEW100, 1, [Build Xw100 server])
++fi
+ dnl XWin DDX
+@@ -2112,6 +2117,7 @@
+ hw/kdrive/epson/Makefile
+ hw/kdrive/fake/Makefile
+ hw/kdrive/fbdev/Makefile
++hw/kdrive/w100/Makefile
+ hw/kdrive/i810/Makefile
+ hw/kdrive/linux/Makefile
+ hw/kdrive/mach64/Makefile
diff --git a/packages/xorg-xserver/xserver-kdrive-1.4/w100-new-input-world-order.patch b/packages/xorg-xserver/xserver-kdrive-1.4/w100-new-input-world-order.patch
new file mode 100644 (file)
index 0000000..239ae0b
--- /dev/null
@@ -0,0 +1,28 @@
+Index: xorg-server-1.4/hw/kdrive/w100/ati_stub.c
+===================================================================
+--- xorg-server-1.4.orig/hw/kdrive/w100/ati_stub.c     2007-09-08 21:40:26.000000000 +0200
++++ xorg-server-1.4/hw/kdrive/w100/ati_stub.c  2007-09-08 22:04:27.000000000 +0200
+@@ -74,10 +74,20 @@
+ void
+ InitInput(int argc, char **argv)
+ {
+-    KdInitInput(&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+-#ifdef TOUCHSCREEN
+-    KdAddMouseDriver(&TsFuncs);
++    KdKeyboardInfo *ki;
++
++    KdAddKeyboardDriver (&LinuxKeyboardDriver);
++    KdAddPointerDriver (&LinuxMouseDriver);
++    KdAddKeyboardDriver (&LinuxEvdevKeyboardDriver);
++    KdAddPointerDriver (&LinuxEvdevMouseDriver);
++#ifdef TSLIB
++    KdAddPointerDriver (&TsDriver);
+ #endif
++
++    ki = KdParseKeyboard ("keyboard");
++    KdAddKeyboard(ki);
++
++    KdInitInput ();
+ }
+ void
diff --git a/packages/xorg-xserver/xserver-kdrive-1.4/xcalibrate-new-input-world-order.patch b/packages/xorg-xserver/xserver-kdrive-1.4/xcalibrate-new-input-world-order.patch
new file mode 100644 (file)
index 0000000..2cc9e60
--- /dev/null
@@ -0,0 +1,159 @@
+CRUDE HACK ALERT: this patch adds a new device control (DEVICE_RAWEVENT) 
+which cannot be exported in the protocol because the xDeviceRaweventCtl 
+carries a C pointer to the tslib event hook. For lack of a better idea,
+I added this to get the event hook pointer from Xext/xcalibrate.c into
+tslib.c, where the now-private _raw_event_hook and _raw_event_closure
+pointers are manipulated instead of, like before, in the Xcalibrate 
+extension itself.
+
+Index: xorg-server-1.4/Xext/xcalibrate.c
+===================================================================
+--- xorg-server-1.4.orig/Xext/xcalibrate.c     2007-09-08 13:22:55.000000000 +0200
++++ xorg-server-1.4/Xext/xcalibrate.c  2007-09-08 16:03:17.000000000 +0200
+@@ -33,14 +33,14 @@
+ #include "os.h"
+ #include "dixstruct.h"
+ #include "extnsionst.h"
++#include "inputstr.h"                         /* for inputInfo */
+ #include "swaprep.h"
++#include <X11/extensions/XI.h>                        /* for XI_TOUCHSCREEN */
++#include <X11/extensions/XIproto.h>           /* for xDeviceCtl */
+ #include <X11/extensions/xcalibrateproto.h>
+ #include <X11/extensions/xcalibratewire.h>
+-extern void (*tslib_raw_event_hook)(int x, int y, int pressure, void *closure);
+-extern void *tslib_raw_event_closure;
+-
+ static CARD8  XCalibrateReqCode;
+ int           XCalibrateEventBase;
+ int           XCalibrateReqBase;
+@@ -64,6 +64,31 @@
+     WriteEventsToClient (pClient, 1, (xEvent *) &ev);
+ }
++#define DEVICE_RAWEVENT 6
++typedef struct {
++    CARD16          control B16;
++    CARD16          length  B16;
++    void           *hook;
++} xDeviceRaweventCtl;
++
++static void
++xcalibrate_set_event_hook (void *hook, ClientPtr client)
++{
++  DeviceIntPtr devtmp;
++  Atom xiclass;
++  xDeviceRaweventCtl rawevent;
++
++  rawevent.control = DEVICE_RAWEVENT;
++  rawevent.length = sizeof(rawevent);
++  rawevent.hook = hook;
++
++  xiclass = MakeAtom(XI_TOUCHSCREEN, strlen(XI_TOUCHSCREEN), 1);
++
++  for (devtmp = inputInfo.devices; devtmp; devtmp = devtmp->next)
++    if (devtmp->type == xiclass)
++      ChangeDeviceControl(client, devtmp, (xDeviceCtl *) &rawevent);
++}
++
+ static int
+ ProcXCalibrateQueryVersion (ClientPtr client)
+ {
+@@ -124,8 +149,7 @@
+       {
+         /* Start calibrating.  */
+         xcalibrate_client = client;
+-        tslib_raw_event_hook = xcalibrate_event_hook;
+-        tslib_raw_event_closure = client;
++        xcalibrate_set_event_hook(xcalibrate_event_hook, client);
+         rep.status = GrabSuccess;
+       }
+       else
+@@ -139,8 +163,7 @@
+       {
+         /* Stop calibrating.  */
+         xcalibrate_client = NULL;
+-        tslib_raw_event_hook = NULL;
+-        tslib_raw_event_closure = NULL;
++        xcalibrate_set_event_hook(NULL, NULL);
+         rep.status = GrabSuccess;
+         /* Cycle input off and on to reload configuration.  */
+@@ -277,8 +300,7 @@
+       {
+       /* Stop calibrating.  */
+       xcalibrate_client = NULL;
+-      tslib_raw_event_hook = NULL;
+-      tslib_raw_event_closure = NULL;
++      xcalibrate_set_event_hook(NULL, NULL);
+       }
+ }
+Index: xorg-server-1.4/hw/kdrive/linux/tslib.c
+===================================================================
+--- xorg-server-1.4.orig/hw/kdrive/linux/tslib.c       2007-09-08 14:46:41.000000000 +0200
++++ xorg-server-1.4/hw/kdrive/linux/tslib.c    2007-09-08 16:10:57.000000000 +0200
+@@ -56,6 +56,13 @@
+     int phys_screen;
+ };
++void
++tslib_set_raw_event_hook(KdPointerInfo *pi, void *hook, void *closure)
++{
++      struct TslibPrivate *private = pi->driverPrivate;
++      private->raw_event_hook = hook;
++      private->raw_event_closure = closure;
++}
+ static void
+ TsRead (int fd, void *closure)
+Index: xorg-server-1.4/hw/kdrive/src/kinput.c
+===================================================================
+--- xorg-server-1.4.orig/hw/kdrive/src/kinput.c        2007-09-08 14:45:01.000000000 +0200
++++ xorg-server-1.4/hw/kdrive/src/kinput.c     2007-09-08 16:09:32.000000000 +0200
+@@ -2389,10 +2389,19 @@
+     return BadMatch;
+ }
++#define DEVICE_RAWEVENT 6
++typedef struct {
++    CARD16          control B16;
++    CARD16          length  B16;
++    void           *hook;
++} xDeviceRaweventCtl;
++
+ int
+ ChangeDeviceControl(register ClientPtr client, DeviceIntPtr pDev,
+                         xDeviceCtl *control)
+ {
++    KdPointerInfo *pi;
++
+     switch (control->control) {
+     case DEVICE_RESOLUTION:
+         /* FIXME do something more intelligent here */
+@@ -2406,6 +2415,24 @@
+     case DEVICE_ENABLE:
+         return Success;
++    case DEVICE_RAWEVENT:
++        if (!pDev)
++          return BadImplementation;
++
++        for (pi = kdPointers; pi; pi = pi->next) {
++            if (pi->dixdev && pi->dixdev->id == pDev->id)
++                break;
++        }
++
++        if (!pi || !pi->dixdev || pi->dixdev->id != pDev->id) {
++            ErrorF("[ChangeDeviceControl] Failed to find pointer for device %d!\n",
++                   pDev->id);
++            return BadImplementation;
++        }
++
++        tslib_set_raw_event_hook(pi, ((xDeviceRaweventCtl *)control)->hook, client);
++      return Success;
++
+     default:
+         return BadMatch;
+     }
diff --git a/packages/xorg-xserver/xserver-kdrive-1.4/xcalibrate_coords.patch b/packages/xorg-xserver/xserver-kdrive-1.4/xcalibrate_coords.patch
new file mode 100644 (file)
index 0000000..7f4ec09
--- /dev/null
@@ -0,0 +1,122 @@
+---
+ Xext/xcalibrate.c      |   47 ++++++++++++++++++++++++++++++++++++++++++++++-
+ hw/kdrive/src/kdrive.h |    3 +++
+ hw/kdrive/src/kinput.c |   12 ++++++++++++
+ 3 files changed, 61 insertions(+), 1 deletion(-)
+
+Index: xorg-server-1.4/Xext/xcalibrate.c
+===================================================================
+--- xorg-server-1.4.orig/Xext/xcalibrate.c     2007-08-23 21:04:52.000000000 +0200
++++ xorg-server-1.4/Xext/xcalibrate.c  2007-09-06 23:27:40.000000000 +0200
+@@ -164,7 +164,6 @@
+   return (client->noClientException);
+ }
+-
+ static int
+ SProcXCalibrateSetRawMode (ClientPtr client)
+ {
+@@ -178,6 +177,47 @@
+   return ProcXCalibrateSetRawMode(client);
+ }
++static int
++ProcXCalibrateScreenToCoord (ClientPtr client)
++{
++  REQUEST(xXCalibrateScreenToCoordReq);
++  xXCalibrateScreenToCoordReply rep;
++
++  REQUEST_SIZE_MATCH (xXCalibrateScreenToCoordReq);
++
++  memset (&rep, 0, sizeof (rep));
++  rep.type = X_Reply;
++  rep.sequenceNumber = client->sequence;
++  rep.x = stuff->x;
++  rep.y = stuff->y;
++
++  KdScreenToPointerCoords(&rep.x, &rep.y);
++
++  if (client->swapped)
++    {
++      int n;
++
++      swaps (&rep.x, n);
++      swaps (&rep.y, n);
++    }
++  WriteToClient(client, sizeof (rep), (char *) &rep);
++  return (client->noClientException);
++}
++
++static int
++SProcXCalibrateScreenToCoord (ClientPtr client)
++{
++  REQUEST(xXCalibrateScreenToCoordReq);
++  int n;
++
++  REQUEST_SIZE_MATCH (xXCalibrateScreenToCoordReq);
++
++  swaps(&stuff->x, n);
++  swaps(&stuff->y, n);
++
++  return ProcXCalibrateScreenToCoord(client);
++}
++
+ static void
+ XCalibrateResetProc (ExtensionEntry *extEntry) 
+ { 
+@@ -192,6 +232,9 @@
+         return ProcXCalibrateQueryVersion(client);
+     case X_XCalibrateRawMode:
+         return ProcXCalibrateSetRawMode(client);
++    case X_XCalibrateScreenToCoord:
++        return ProcXCalibrateScreenToCoord(client);
++
+     default: break;
+     }
+@@ -211,6 +254,8 @@
+         return SProcXCalibrateQueryVersion(client);
+     case X_XCalibrateRawMode:
+         return SProcXCalibrateSetRawMode(client);
++    case X_XCalibrateScreenToCoord:
++        return SProcXCalibrateScreenToCoord(client);
+     default: break;
+     }
+Index: xorg-server-1.4/hw/kdrive/src/kdrive.h
+===================================================================
+--- xorg-server-1.4.orig/hw/kdrive/src/kdrive.h        2007-08-23 21:04:53.000000000 +0200
++++ xorg-server-1.4/hw/kdrive/src/kdrive.h     2007-09-06 23:28:50.000000000 +0200
+@@ -848,6 +848,9 @@
+ KdSetPointerMatrix (KdPointerMatrix *pointer);
+ void
++KdScreenToPointerCoords (int *x, int *y);
++
++void
+ KdComputePointerMatrix (KdPointerMatrix *pointer, Rotation randr, int width, int height);
+     
+ void
+Index: xorg-server-1.4/hw/kdrive/src/kinput.c
+===================================================================
+--- xorg-server-1.4.orig/hw/kdrive/src/kinput.c        2007-08-23 21:04:53.000000000 +0200
++++ xorg-server-1.4/hw/kdrive/src/kinput.c     2007-09-06 23:30:54.000000000 +0200
+@@ -592,6 +592,18 @@
+ }
+ void
++KdScreenToPointerCoords (int *x, int *y)
++{
++    int       (*m)[3] = kdPointerMatrix.matrix;
++    int div = m[0][1] * m[1][0] - m[1][1] * m[0][0];
++    int sx = *x;
++    int sy = *y;
++
++    *x = (m[0][1] * sy - m[0][1] * m[1][2] + m[1][1] * m[0][2] - m[1][1] * sx) / div;
++    *y = (m[1][0] * sx + m[0][0] * m[1][2] - m[1][0] * m[0][2] - m[0][0] * sy) / div;
++}
++
++void
+ KdComputePointerMatrix (KdPointerMatrix *m, Rotation randr, int width,
+                         int height)
+ {
diff --git a/packages/xorg-xserver/xserver-kdrive_1.4.bb b/packages/xorg-xserver/xserver-kdrive_1.4.bb
new file mode 100644 (file)
index 0000000..9b1cb1c
--- /dev/null
@@ -0,0 +1,27 @@
+require xserver-kdrive-common.inc
+
+DEPENDS += "libxkbfile libxcalibrate pixman"
+
+PE = "1"
+
+SRC_URI = "${XORG_MIRROR}/individual/xserver/xorg-server-${PV}.tar.bz2 \
+       ${KDRIVE_COMMON_PATCHES} \
+        file://fix_default_mode.patch;patch=1 \
+       file://enable-xcalibrate.patch;patch=1 \
+       file://hide-cursor-and-ppm-root.patch;patch=1 \
+       file://xcalibrate_coords.patch;patch=1 \
+       file://w100.patch;patch=1 \
+       file://w100-autofoo.patch;patch=1 \
+       file://w100-fix-offscreen-bmp.patch;patch=1 \
+       file://w100-new-input-world-order.patch;patch=1 \
+       file://xcalibrate-new-input-world-order.patch;patch=1 \
+       file://tslib-default-device.patch;patch=1 \
+       file://fbdev-evdev.patch;patch=1 \
+       "
+
+S = "${WORKDIR}/xorg-server-${PV}"
+
+W100_OECONF = "--disable-w100"
+W100_OECONF_arm = "--enable-w100"
+
+EXTRA_OECONF += "--enable-builtin-fonts"