diff options
author | Philipp Zabel <philipp.zabel@gmail.com> | 2007-09-08 21:10:27 +0000 |
---|---|---|
committer | Philipp Zabel <philipp.zabel@gmail.com> | 2007-09-08 21:10:27 +0000 |
commit | d052d266644b8c23e966e8f3d3c761ff19877127 (patch) | |
tree | 534ca6ae5534bcf0fe327fdffe9a46ab3054f608 /packages/xorg-xserver/xserver-kdrive | |
parent | 062c44df0eb1877a9580ef5aa422c16ac188b171 (diff) |
xserver-kdrive: patch shuffle and cleanup
* drop unused build-fix-panoramix, devfs and faster-rotated patches
* move some version specific patches into xserver-kdrive-1.1.0
and move some 1.4 patches that also apply to git into
unversioned xserver-kdrive
Diffstat (limited to 'packages/xorg-xserver/xserver-kdrive')
12 files changed, 398 insertions, 348 deletions
diff --git a/packages/xorg-xserver/xserver-kdrive/build-fix-panoramix.patch b/packages/xorg-xserver/xserver-kdrive/build-fix-panoramix.patch deleted file mode 100644 index f919b48f0e..0000000000 --- a/packages/xorg-xserver/xserver-kdrive/build-fix-panoramix.patch +++ /dev/null @@ -1,18 +0,0 @@ -Index: git/composite/compext.c -=================================================================== ---- git.orig/composite/compext.c 2007-03-28 16:25:12.000000000 +0200 -+++ git/composite/compext.c 2007-03-28 16:25:15.000000000 +0200 -@@ -696,11 +696,13 @@ - if (GetPictureScreenIfSet(pScreen) == NULL) - return; - } -+#ifdef PANORAMIX - /* Xinerama's rewriting of window drawing before Composite gets to it - * breaks Composite. - */ - if (!noPanoramiXExtension) - return; -+#endif - - CompositeClientWindowType = CreateNewResourceType (FreeCompositeClientWindow); - if (!CompositeClientWindowType) diff --git a/packages/xorg-xserver/xserver-kdrive/devfs.patch b/packages/xorg-xserver/xserver-kdrive/devfs.patch deleted file mode 100644 index a6238126c0..0000000000 --- a/packages/xorg-xserver/xserver-kdrive/devfs.patch +++ /dev/null @@ -1,47 +0,0 @@ - -# -# Patch managed by http://www.holgerschurig.de/patcher.html -# - ---- xserver/hw/kdrive/linux/linux.c~devfs -+++ xserver/hw/kdrive/linux/linux.c -@@ -82,10 +82,10 @@ - vtno = kdVirtualTerminal; - else - { -- if ((fd = open("/dev/tty0",O_WRONLY,0)) < 0) -+ if ((fd = open("/dev/vc/0",O_WRONLY,0)) < 0) - { - FatalError( -- "LinuxInit: Cannot open /dev/tty0 (%s)\n", -+ "LinuxInit: Cannot open /dev/tty/0 (%s)\n", - strerror(errno)); - } - if ((ioctl(fd, VT_OPENQRY, &vtno) < 0) || -@@ -96,7 +96,7 @@ - } - close(fd); - -- sprintf(vtname,"/dev/tty%d",vtno); /* /dev/tty1-64 */ -+ sprintf(vtname,"/dev/vc/%d",vtno); /* /dev/tty1-64 */ - - if ((LinuxConsoleFd = open(vtname, O_RDWR|O_NDELAY, 0)) < 0) - { -@@ -113,7 +113,7 @@ - * - * Why is this needed? - */ -- LinuxCheckChown ("/dev/tty0"); -+ LinuxCheckChown ("/dev/vc/0"); - /* - * Linux doesn't switch to an active vt after the last close of a vt, - * so we do this ourselves by remembering which is active now. -@@ -453,7 +453,7 @@ - activeVT = -1; - } - close(LinuxConsoleFd); /* make the vt-manager happy */ -- fd = open ("/dev/tty0", O_RDWR|O_NDELAY, 0); -+ fd = open ("/dev/vc/0", O_RDWR|O_NDELAY, 0); - if (fd >= 0) - { - memset (&vts, '\0', sizeof (vts)); /* valgrind */ diff --git a/packages/xorg-xserver/xserver-kdrive/enable-epson.patch b/packages/xorg-xserver/xserver-kdrive/enable-epson.patch index 63b13a4511..0fffd71dce 100644 --- a/packages/xorg-xserver/xserver-kdrive/enable-epson.patch +++ b/packages/xorg-xserver/xserver-kdrive/enable-epson.patch @@ -1,11 +1,17 @@ ---- /tmp/Makefile.am 2006-08-30 09:51:21.000000000 +0200 -+++ git/hw/kdrive/Makefile.am 2006-08-30 09:51:44.425780000 +0200 -@@ -4,7 +4,7 @@ +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 KDRIVEFBDEV + if BUILD_KDRIVEFBDEVLIB -FBDEV_SUBDIRS = fbdev +FBDEV_SUBDIRS = fbdev epson endif - if XSDLSERVER + if XFAKESERVER diff --git a/packages/xorg-xserver/xserver-kdrive/enable-tslib.patch b/packages/xorg-xserver/xserver-kdrive/enable-tslib.patch deleted file mode 100644 index e488657b74..0000000000 --- a/packages/xorg-xserver/xserver-kdrive/enable-tslib.patch +++ /dev/null @@ -1,23 +0,0 @@ ---- git/configure.ac.orig 2006-05-22 22:40:00.000000000 +0200 -+++ git/configure.ac 2006-06-10 15:10:14.000000000 +0200 -@@ -1438,6 +1446,10 @@ - fi - -- # tslib... -+ AC_CHECK_HEADERS([tslib.h]) -+ if test "$ac_cv_header_tslib_h" = yes; then -+ AC_DEFINE(TSLIB, 1, [Build kdrive with tslib support]) -+ AC_DEFINE(TOUCHSCREEN, 1, [Build kdrive with touchscreen support]) -+ fi - - # damage shadow extension glx (NOTYET) fb mi - KDRIVE_INC='-I$(top_srcdir)/hw/kdrive/src' -@@ -1467,7 +1479,7 @@ - AC_SUBST(KDRIVE_CFLAGS) - AC_SUBST(KDRIVE_PURE_LIBS) - AC_SUBST(KDRIVE_LIBS) --AM_CONDITIONAL(TSLIB, false) -+AM_CONDITIONAL(TSLIB, [test x"$ac_cv_header_tslib_h" = xyes]) - AM_CONDITIONAL(H3600_TS, false) - AM_CONDITIONAL(KDRIVEVESA, [test x"$ac_cv_header_sys_vm86_h" = xyes]) - AM_CONDITIONAL(KDRIVEFBDEV, [test x"$ac_cv_header_linux_fb_h" = xyes]) diff --git a/packages/xorg-xserver/xserver-kdrive/faster-rotated.patch b/packages/xorg-xserver/xserver-kdrive/faster-rotated.patch deleted file mode 100644 index eaf7ddec36..0000000000 --- a/packages/xorg-xserver/xserver-kdrive/faster-rotated.patch +++ /dev/null @@ -1,241 +0,0 @@ -Index: xserver/miext/shadow/shrotate.c -=================================================================== -RCS file: /scratch/openbsd/cvs/XF4/xc/programs/Xserver/miext/shadow/shrotate.c,v -retrieving revision 1.2 -diff -u -r1.2 shrotate.c ---- xserver/miext/shadow/shrotate.c 3 Nov 2004 00:09:54 -0000 1.2 -+++ xserver/miext/shadow/shrotate.c 20 Sep 2005 23:07:58 -0000 -@@ -45,6 +45,106 @@ - #define TOP_TO_BOTTOM 2 - #define BOTTOM_TO_TOP -2 - -+ -+static void -+shadowUpdateRotatePackedSubRectangle(shadowBufPtr pBuf, -+ FbBits *shaLine, int shaFirstShift, -+ int shaStepOverX, int shaStepOverY, -+ int shaStepDownX, int shaStepDownY, -+ int shaBpp, FbBits shaMask, -+ ScreenPtr pScreen, -+ int scr_x1, int scr_y, -+ int scr_h, int scr_w, -+ int pixelsPerBits) -+{ -+ FbBits *sha; -+ int shaShift; -+ int scr_x; -+ int w; -+ -+ /* -+ * Copy the bits, always write across the physical frame buffer -+ * to take advantage of write combining. -+ */ -+ while (scr_h--) -+ { -+ int p; -+ FbBits bits; -+ FbBits *win; -+ int i; -+ CARD32 winSize; -+ -+ sha = shaLine; -+ shaShift = shaFirstShift; -+ w = scr_w; -+ scr_x = scr_x1 * shaBpp >> FB_SHIFT; -+ -+ while (w) -+ { -+ /* -+ * Map some of this line -+ */ -+ win = (FbBits *) (*pBuf->window) (pScreen, -+ scr_y, -+ scr_x << 2, -+ SHADOW_WINDOW_WRITE, -+ &winSize, -+ pBuf->closure); -+ i = (winSize >> 2); -+ if (i > w) -+ i = w; -+ w -= i; -+ scr_x += i; -+ /* -+ * Copy the portion of the line mapped -+ */ -+ while (i--) -+ { -+ bits = 0; -+ p = pixelsPerBits; -+ /* -+ * Build one word of output from multiple inputs -+ */ -+ while (p--) -+ { -+ bits = FbScrLeft(bits, shaBpp); -+ bits |= FbScrRight (*sha, shaShift) & shaMask; -+ -+ shaShift -= shaStepOverX; -+ if (shaShift >= FB_UNIT) -+ { -+ shaShift -= FB_UNIT; -+ sha--; -+ } -+ else if (shaShift < 0) -+ { -+ shaShift += FB_UNIT; -+ sha++; -+ } -+ sha += shaStepOverY; -+ } -+ *win++ = bits; -+ } -+ } -+ scr_y++; -+ shaFirstShift -= shaStepDownX; -+ if (shaFirstShift >= FB_UNIT) -+ { -+ shaFirstShift -= FB_UNIT; -+ shaLine--; -+ } -+ else if (shaFirstShift < 0) -+ { -+ shaFirstShift += FB_UNIT; -+ shaLine++; -+ } -+ shaLine += shaStepDownY; -+ } -+} -+ -+#define BLOCKSIZE_HEIGHT 32 -+#define BLOCKSIZE_WIDTH 32 -+ - void - shadowUpdateRotatePacked (ScreenPtr pScreen, - shadowBufPtr pBuf) -@@ -61,7 +161,6 @@ - int sha_x1 = 0, sha_y1 = 0; - int scr_x1 = 0, scr_x2 = 0, scr_y1 = 0, scr_y2 = 0, scr_w, scr_h; - int scr_x, scr_y; -- int w; - int pixelsPerBits; - int pixelsMask; - FbStride shaStepOverY = 0, shaStepDownY = 0; -@@ -221,86 +320,46 @@ - ((sha_x1 * shaBpp) >> FB_SHIFT)); - - /* -- * Copy the bits, always write across the physical frame buffer -- * to take advantage of write combining. -+ * Copy in blocks of size BLOCKSIZE_WIDTH x BLOCKSIZE_HEIGHT -+ * to reduce the number of cache misses when rotating 90 or -+ * 270 degrees. - */ -- while (scr_h--) -+ for (scr_y = scr_y1; scr_y < scr_y2; scr_y += BLOCKSIZE_HEIGHT) - { -- int p; -- FbBits bits; -- FbBits *win; -- int i; -- CARD32 winSize; -- - sha = shaLine; - shaShift = shaFirstShift; -- w = scr_w; -- scr_x = scr_x1 * shaBpp >> FB_SHIFT; - -- while (w) -+ for (scr_x = scr_x1; scr_x < scr_x2; scr_x += BLOCKSIZE_WIDTH) - { -- /* -- * Map some of this line -- */ -- win = (FbBits *) (*pBuf->window) (pScreen, -- scr_y, -- scr_x << 2, -- SHADOW_WINDOW_WRITE, -- &winSize, -- pBuf->closure); -- i = (winSize >> 2); -- if (i > w) -- i = w; -- w -= i; -- scr_x += i; -- /* -- * Copy the portion of the line mapped -- */ -- while (i--) -- { -- bits = 0; -- p = pixelsPerBits; -- /* -- * Build one word of output from multiple inputs -- * -- * Note that for 90/270 rotations, this will walk -- * down the shadow hitting each scanline once. -- * This is probably not very efficient. -- */ -- while (p--) -- { -- bits = FbScrLeft(bits, shaBpp); -- bits |= FbScrRight (*sha, shaShift) & shaMask; -+ int h = BLOCKSIZE_HEIGHT; -+ int w = BLOCKSIZE_WIDTH; - -- shaShift -= shaStepOverX; -- if (shaShift >= FB_UNIT) -- { -- shaShift -= FB_UNIT; -- sha--; -- } -- else if (shaShift < 0) -- { -- shaShift += FB_UNIT; -- sha++; -- } -- sha += shaStepOverY; -- } -- *win++ = bits; -- } -- } -- scr_y++; -- shaFirstShift -= shaStepDownX; -- if (shaFirstShift >= FB_UNIT) -- { -- shaFirstShift -= FB_UNIT; -- shaLine--; -- } -- else if (shaFirstShift < 0) -- { -- shaFirstShift += FB_UNIT; -- shaLine++; -+ if (scr_y + h > scr_y2) -+ h = scr_y2 - scr_y; -+ if (scr_x + w > scr_x2) -+ w = scr_x2 - scr_x; -+ w = (w * shaBpp) >> FB_SHIFT; -+ -+ shadowUpdateRotatePackedSubRectangle -+ (pBuf, -+ sha, shaShift, -+ shaStepOverX, shaStepOverY, -+ shaStepDownX, shaStepDownY, -+ shaBpp, shaMask, -+ pScreen, -+ scr_x, scr_y, -+ h, w, -+ pixelsPerBits); -+ -+ shaShift -= BLOCKSIZE_WIDTH * shaStepOverX; -+ sha += BLOCKSIZE_WIDTH * shaStepOverY; -+ sha -= (shaShift >> FB_SHIFT); -+ shaShift &= FB_MASK; - } -- shaLine += shaStepDownY; -+ shaFirstShift -= BLOCKSIZE_HEIGHT * shaStepDownX; -+ shaLine += BLOCKSIZE_HEIGHT * shaStepDownY; -+ shaLine -= (shaFirstShift >> FB_SHIFT); -+ shaFirstShift &= FB_MASK; - } - } - } diff --git a/packages/xorg-xserver/xserver-kdrive/fbdev-evdev.patch b/packages/xorg-xserver/xserver-kdrive/fbdev-evdev.patch new file mode 100644 index 0000000000..5f9b21b627 --- /dev/null +++ b/packages/xorg-xserver/xserver-kdrive/fbdev-evdev.patch @@ -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/fix_default_mode.patch b/packages/xorg-xserver/xserver-kdrive/fix_default_mode.patch new file mode 100644 index 0000000000..edc5146302 --- /dev/null +++ b/packages/xorg-xserver/xserver-kdrive/fix_default_mode.patch @@ -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/optional-xkb.patch b/packages/xorg-xserver/xserver-kdrive/optional-xkb.patch index d9ef51c5ba..22d8c94c78 100644 --- a/packages/xorg-xserver/xserver-kdrive/optional-xkb.patch +++ b/packages/xorg-xserver/xserver-kdrive/optional-xkb.patch @@ -1,7 +1,9 @@ ---- git/Makefile.am.orig 2006-06-09 16:01:51.000000000 +0200 -+++ git/Makefile.am 2006-06-09 16:02:59.000000000 +0200 -@@ -35,6 +35,10 @@ - XINPUT_DIR=Xi +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 @@ -11,26 +13,28 @@ if DBE DBE_DIR=dbe endif -@@ -51,7 +55,7 @@ +@@ -42,7 +46,7 @@ randr \ render \ - $(XINPUT_DIR) \ + Xi \ - xkb \ + $(XKB_DIR) \ $(DBE_DIR) \ $(MFB_DIR) \ $(AFB_DIR) \ ---- git/configure.ac.orig 2006-05-22 22:40:00.000000000 +0200 -+++ git/configure.ac 2006-06-10 15:10:14.000000000 +0200 -@@ -418,6 +418,7 @@ - AC_ARG_ENABLE(xf86bigfont, AS_HELP_STRING([--disable-xf86bigfont], [Build XF86 Big Font extension (default: enabled)]), [XF86BIGFONT=$enableval], [XF86BIGFONT=yes]) - AC_ARG_ENABLE(dpms, AS_HELP_STRING([--disable-dpms], [Build DPMS extension (default: enabled)]), [DPMS=$enableval], [DPMSExtension=yes]) - AC_ARG_ENABLE(xinput, AS_HELP_STRING([--disable-xinput], [Build XInput Extension (default: enabled)]), [XINPUT=$enableval], [XINPUT=yes]) +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]) -@@ -739,12 +740,15 @@ +@@ -889,12 +890,15 @@ AC_DEFINE(SHAPE, 1, [Support SHAPE extension]) @@ -51,4 +55,4 @@ +fi AC_CHECK_FUNC(strcasecmp, [], AC_DEFINE([NEED_STRCASECMP], 1, - [Do not have `strcasecmp'.])) + [Do not have 'strcasecmp'.])) diff --git a/packages/xorg-xserver/xserver-kdrive/tslib-default-device.patch b/packages/xorg-xserver/xserver-kdrive/tslib-default-device.patch new file mode 100644 index 0000000000..c1bc49f58e --- /dev/null +++ b/packages/xorg-xserver/xserver-kdrive/tslib-default-device.patch @@ -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/w100-new-input-world-order.patch b/packages/xorg-xserver/xserver-kdrive/w100-new-input-world-order.patch new file mode 100644 index 0000000000..239ae0bb67 --- /dev/null +++ b/packages/xorg-xserver/xserver-kdrive/w100-new-input-world-order.patch @@ -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/xcalibrate-new-input-world-order.patch b/packages/xorg-xserver/xserver-kdrive/xcalibrate-new-input-world-order.patch new file mode 100644 index 0000000000..2cc9e60d8d --- /dev/null +++ b/packages/xorg-xserver/xserver-kdrive/xcalibrate-new-input-world-order.patch @@ -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/xcalibrate_coords.patch b/packages/xorg-xserver/xserver-kdrive/xcalibrate_coords.patch new file mode 100644 index 0000000000..7f4ec09d68 --- /dev/null +++ b/packages/xorg-xserver/xserver-kdrive/xcalibrate_coords.patch @@ -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) + { |