diff options
author | Richard Purdie <rpurdie@linux.intel.com> | 2010-08-27 15:14:24 +0100 |
---|---|---|
committer | Richard Purdie <rpurdie@linux.intel.com> | 2010-08-27 15:29:45 +0100 |
commit | 29d6678fd546377459ef75cf54abeef5b969b5cf (patch) | |
tree | 8edd65790e37a00d01c3f203f773fe4b5012db18 /meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0 | |
parent | da49de6885ee1bc424e70bc02f21f6ab920efb55 (diff) | |
download | poky-29d6678fd546377459ef75cf54abeef5b969b5cf.tar.gz |
Major layout change to the packages directory
Having one monolithic packages directory makes it hard to find things
and is generally overwhelming. This commit splits it into several
logical sections roughly based on function, recipes.txt gives more
information about the classifications used.
The opportunity is also used to switch from "packages" to "recipes"
as used in OpenEmbedded as the term "packages" can be confusing to
people and has many different meanings.
Not all recipes have been classified yet, this is just a first pass
at separating things out. Some packages are moved to meta-extras as
they're no longer actively used or maintained.
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0')
13 files changed, 1440 insertions, 0 deletions
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/enable-builtin-fonts.patch b/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/enable-builtin-fonts.patch new file mode 100644 index 0000000000..13a6c2c954 --- /dev/null +++ b/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/enable-builtin-fonts.patch | |||
@@ -0,0 +1,12 @@ | |||
1 | --- xorg-server-X11R7.1-1.1.0/dix/dixfonts.c.orig 2006-06-08 14:49:12.158684250 +0200 | ||
2 | +++ xorg-server-X11R7.1-1.1.0/dix/dixfonts.c 2006-06-08 14:49:52.493205000 +0200 | ||
3 | @@ -52,8 +52,8 @@ | ||
4 | /* $Xorg: dixfonts.c,v 1.4 2000/08/17 19:48:18 cpqbld Exp $ */ | ||
5 | |||
6 | #define NEED_REPLIES | ||
7 | #ifdef HAVE_DIX_CONFIG_H | ||
8 | -#include <dix-config.h> | ||
9 | +#include <kdrive-config.h> | ||
10 | #endif | ||
11 | |||
12 | #include <X11/X.h> | ||
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/enable-epson.patch b/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/enable-epson.patch new file mode 100644 index 0000000000..8ec3a37c78 --- /dev/null +++ b/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/enable-epson.patch | |||
@@ -0,0 +1,11 @@ | |||
1 | Index: xorg-server-1.2.0/hw/kdrive/Makefile.am | ||
2 | =================================================================== | ||
3 | --- xorg-server-1.2.0.orig/hw/kdrive/Makefile.am 2007-03-28 17:11:38.000000000 +0200 | ||
4 | +++ xorg-server-1.2.0/hw/kdrive/Makefile.am 2007-03-28 17:12:28.000000000 +0200 | ||
5 | @@ -1,5 +1,5 @@ | ||
6 | if KDRIVEFBDEV | ||
7 | -FBDEV_SUBDIRS = fbdev | ||
8 | +FBDEV_SUBDIRS = fbdev epson | ||
9 | endif | ||
10 | |||
11 | if KDRIVEIMAGEON | ||
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/enable-tslib.patch b/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/enable-tslib.patch new file mode 100644 index 0000000000..9a59530ed3 --- /dev/null +++ b/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/enable-tslib.patch | |||
@@ -0,0 +1,12 @@ | |||
1 | Index: xorg-server-1.2.0/configure.ac | ||
2 | =================================================================== | ||
3 | --- xorg-server-1.2.0.orig/configure.ac 2007-03-29 13:28:10.000000000 +0200 | ||
4 | +++ xorg-server-1.2.0/configure.ac 2007-03-29 13:28:35.000000000 +0200 | ||
5 | @@ -1517,6 +1517,7 @@ | ||
6 | AC_MSG_ERROR([tslib must be installed to build the tslib driver. See http://tslib.berlios.de/]) | ||
7 | fi | ||
8 | AC_DEFINE(TSLIB, 1, [Have tslib support]) | ||
9 | + AC_DEFINE(TOUCHSCREEN, 1, [Have touchscreen support]) | ||
10 | fi | ||
11 | |||
12 | # damage shadow extension glx (NOTYET) fb mi | ||
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/enable-xcalibrate.patch b/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/enable-xcalibrate.patch new file mode 100644 index 0000000000..5a971002cd --- /dev/null +++ b/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/enable-xcalibrate.patch | |||
@@ -0,0 +1,110 @@ | |||
1 | --- | ||
2 | Xext/Makefile.am | 6 ++++++ | ||
3 | configure.ac | 11 +++++++++-- | ||
4 | include/kdrive-config.h.in | 3 +++ | ||
5 | mi/miinitext.c | 6 ++++++ | ||
6 | 4 files changed, 24 insertions(+), 2 deletions(-) | ||
7 | |||
8 | Index: xorg-server-1.3.0.0/mi/miinitext.c | ||
9 | =================================================================== | ||
10 | --- xorg-server-1.3.0.0.orig/mi/miinitext.c 2006-11-16 18:01:26.000000000 +0000 | ||
11 | +++ xorg-server-1.3.0.0/mi/miinitext.c 2008-01-11 13:45:57.000000000 +0000 | ||
12 | @@ -372,6 +372,9 @@ extern void ResExtensionInit(INITARGS); | ||
13 | #ifdef DMXEXT | ||
14 | extern void DMXExtensionInit(INITARGS); | ||
15 | #endif | ||
16 | +#ifdef XCALIBRATE | ||
17 | +extern void XCalibrateExtensionInit(INITARGS); | ||
18 | +#endif | ||
19 | #ifdef XEVIE | ||
20 | extern void XevieExtensionInit(INITARGS); | ||
21 | #endif | ||
22 | @@ -663,6 +666,9 @@ InitExtensions(argc, argv) | ||
23 | #ifdef DAMAGE | ||
24 | if (!noDamageExtension) DamageExtensionInit(); | ||
25 | #endif | ||
26 | +#ifdef XCALIBRATE | ||
27 | + XCalibrateExtensionInit (); | ||
28 | +#endif | ||
29 | } | ||
30 | |||
31 | void | ||
32 | Index: xorg-server-1.3.0.0/configure.ac | ||
33 | =================================================================== | ||
34 | --- xorg-server-1.3.0.0.orig/configure.ac 2008-01-11 13:45:57.000000000 +0000 | ||
35 | +++ xorg-server-1.3.0.0/configure.ac 2008-01-11 13:45:58.000000000 +0000 | ||
36 | @@ -421,6 +421,7 @@ AC_ARG_ENABLE(xf86vidmode, AS_HELP_ST | ||
37 | AC_ARG_ENABLE(xf86misc, AS_HELP_STRING([--disable-xf86misc], [Build XF86Misc extension (default: enabled)]), [XF86MISC=$enableval], [XF86MISC=yes]) | ||
38 | AC_ARG_ENABLE(xace, AS_HELP_STRING([--disable-xace], [Build X-ACE extension (default: enabled)]), [XACE=$enableval], [XACE=yes]) | ||
39 | AC_ARG_ENABLE(xcsecurity, AS_HELP_STRING([--disable-xcsecurity], [Build Security extension (default: enabled)]), [XCSECURITY=$enableval], [XCSECURITY=$XACE]) | ||
40 | +AC_ARG_ENABLE(xcalibrate, AS_HELP_STRING([--enable-xcalibrate], [Build XCalibrate extension (default: disabled)]), [XCALIBRATE=$enableval], [XCALIBRATE=no]) | ||
41 | AC_ARG_ENABLE(appgroup, AS_HELP_STRING([--disable-appgroup], [Build XC-APPGROUP extension (default: enabled)]), [APPGROUP=$enableval], [APPGROUP=$XCSECURITY]) | ||
42 | AC_ARG_ENABLE(xcalibrate, AS_HELP_STRING([--enable-xcalibrate], [Build XCalibrate extension (default: disabled)]), [XCALIBRATE=$enableval], [XCALIBRATE=no]) | ||
43 | AC_ARG_ENABLE(tslib, AS_HELP_STRING([--enable-tslib], [Build kdrive tslib touchscreen support (default: disabled)]), [TSLIB=$enableval], [TSLIB=no]) | ||
44 | @@ -653,6 +654,12 @@ if test "x$XCSECURITY" = xyes; then | ||
45 | AC_DEFINE(XCSECURITY, 1, [Build Security extension]) | ||
46 | fi | ||
47 | |||
48 | +AM_CONDITIONAL(XCALIBRATE, [test "x$XCALIBRATE" = xyes]) | ||
49 | +if test "x$XCALIBRATE" = xyes; then | ||
50 | + AC_DEFINE(XCALIBRATE, 1, [Build XCalibrate extension]) | ||
51 | + REQUIRED_MODULES="$REQUIRED_MODULES xcalibrateproto" | ||
52 | +fi | ||
53 | + | ||
54 | AM_CONDITIONAL(XEVIE, [test "x$XEVIE" = xyes]) | ||
55 | if test "x$XEVIE" = xyes; then | ||
56 | AC_DEFINE(XEVIE, 1, [Build XEvIE extension]) | ||
57 | @@ -1519,7 +1526,7 @@ if test "$KDRIVE" = yes; then | ||
58 | |||
59 | # tslib... | ||
60 | if test "x$TSLIB" = xyes; then | ||
61 | - PKG_CHECK_MODULES([TSLIB], [tslib-0.0], [HAVE_TSLIB="yes"], [HAVE_TSLIB="no"]) | ||
62 | + PKG_CHECK_MODULES([TSLIB], [tslib-1.0], [HAVE_TSLIB="yes"], [HAVE_TSLIB="no"]) | ||
63 | if test "x$HAVE_TSLIB" = xno; then | ||
64 | AC_MSG_ERROR([tslib must be installed to build the tslib driver. See http://tslib.berlios.de/]) | ||
65 | fi | ||
66 | @@ -1547,7 +1554,7 @@ if test "$KDRIVE" = yes; then | ||
67 | ;; | ||
68 | esac | ||
69 | KDRIVE_STUB_LIB='$(top_builddir)/hw/kdrive/src/libkdrivestubs.a' | ||
70 | - KDRIVE_LIBS="$DIX_LIB $KDRIVE_LIB $KDRIVE_OS_LIB $KDRIVE_PURE_LIBS $KDRIVE_STUB_LIB $TSLIB_LIBS" | ||
71 | + KDRIVE_LIBS="$DIX_LIB $KDRIVE_LIB $KDRIVE_PURE_LIBS $KDRIVE_OS_LIB $KDRIVE_STUB_LIB $TSLIB_LIBS" | ||
72 | |||
73 | # check if we can build Xephyr | ||
74 | PKG_CHECK_MODULES(XEPHYR, x11 xext xfont xau xdmcp, [xephyr="yes"], [xephyr="no"]) | ||
75 | Index: xorg-server-1.3.0.0/include/kdrive-config.h.in | ||
76 | =================================================================== | ||
77 | --- xorg-server-1.3.0.0.orig/include/kdrive-config.h.in 2006-11-16 18:01:26.000000000 +0000 | ||
78 | +++ xorg-server-1.3.0.0/include/kdrive-config.h.in 2008-01-11 13:45:57.000000000 +0000 | ||
79 | @@ -25,4 +25,7 @@ | ||
80 | /* Verbose debugging output hilarity */ | ||
81 | #undef DEBUG | ||
82 | |||
83 | +/* Enable XCalibrate extension */ | ||
84 | +#undef XCALIBRATE | ||
85 | + | ||
86 | #endif /* _KDRIVE_CONFIG_H_ */ | ||
87 | Index: xorg-server-1.3.0.0/Xext/Makefile.am | ||
88 | =================================================================== | ||
89 | --- xorg-server-1.3.0.0.orig/Xext/Makefile.am 2006-10-25 01:25:19.000000000 +0100 | ||
90 | +++ xorg-server-1.3.0.0/Xext/Makefile.am 2008-01-11 13:45:57.000000000 +0000 | ||
91 | @@ -91,6 +91,11 @@ BUILTIN_SRCS += $(XCALIBRATE_SRCS) | ||
92 | # XCalibrare needs tslib | ||
93 | endif | ||
94 | |||
95 | +XCALIBRATE_SRCS = xcalibrate.c | ||
96 | +if XCALIBRATE | ||
97 | +BUILTIN_SRCS += $(XCALIBRATE_SRCS) | ||
98 | +endif | ||
99 | + | ||
100 | # X EVent Interception Extension: allows accessibility helpers & composite | ||
101 | # managers to intercept events from input devices and transform as needed | ||
102 | # before the clients see them. | ||
103 | @@ -169,6 +174,7 @@ EXTRA_DIST = \ | ||
104 | $(XCSECURITY_SRCS) \ | ||
105 | $(XCALIBRATE_SRCS) \ | ||
106 | $(XINERAMA_SRCS) \ | ||
107 | + $(XCALIBRATE_SRCS) \ | ||
108 | $(XEVIE_SRCS) \ | ||
109 | $(XPRINT_SRCS) \ | ||
110 | $(APPGROUP_SRCS) \ | ||
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/fbdev_use_current.patch b/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/fbdev_use_current.patch new file mode 100644 index 0000000000..dc957cc825 --- /dev/null +++ b/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/fbdev_use_current.patch | |||
@@ -0,0 +1,41 @@ | |||
1 | --- | ||
2 | hw/kdrive/fbdev/fbdev.c | 24 ++++++++++++++++-------- | ||
3 | 1 file changed, 16 insertions(+), 8 deletions(-) | ||
4 | |||
5 | Index: xorg-server-1.3.0.0/hw/kdrive/fbdev/fbdev.c | ||
6 | =================================================================== | ||
7 | --- xorg-server-1.3.0.0.orig/hw/kdrive/fbdev/fbdev.c 2008-01-11 14:40:16.000000000 +0000 | ||
8 | +++ xorg-server-1.3.0.0/hw/kdrive/fbdev/fbdev.c 2008-01-11 14:40:59.000000000 +0000 | ||
9 | @@ -182,16 +182,24 @@ fbdevScreenInitialize (KdScreenInfo *scr | ||
10 | screen->rate = 103; /* FIXME: should get proper value from fb driver */ | ||
11 | } | ||
12 | if (!screen->fb[0].depth) | ||
13 | - screen->fb[0].depth = 16; | ||
14 | + { | ||
15 | + if (k >= 0) | ||
16 | + screen->fb[0].depth = var.bits_per_pixel; | ||
17 | + else | ||
18 | + screen->fb[0].depth = 16; | ||
19 | + } | ||
20 | |||
21 | - t = KdFindMode (screen, fbdevModeSupported); | ||
22 | - screen->rate = t->rate; | ||
23 | - screen->width = t->horizontal; | ||
24 | - screen->height = t->vertical; | ||
25 | + if ((screen->width != var.xres) || (screen->height != var.yres)) | ||
26 | + { | ||
27 | + t = KdFindMode (screen, fbdevModeSupported); | ||
28 | + screen->rate = t->rate; | ||
29 | + screen->width = t->horizontal; | ||
30 | + screen->height = t->vertical; | ||
31 | |||
32 | - /* Now try setting the mode */ | ||
33 | - if (k < 0 || (t->horizontal != var.xres || t->vertical != var.yres)) | ||
34 | - fbdevConvertMonitorTiming (t, &var); | ||
35 | + /* Now try setting the mode */ | ||
36 | + if (k < 0 || (t->horizontal != var.xres || t->vertical != var.yres)) | ||
37 | + fbdevConvertMonitorTiming (t, &var); | ||
38 | + } | ||
39 | |||
40 | var.activate = FB_ACTIVATE_NOW; | ||
41 | var.bits_per_pixel = screen->fb[0].depth; | ||
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/fix-newer-xorg-headers.patch b/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/fix-newer-xorg-headers.patch new file mode 100644 index 0000000000..eb98fb82c7 --- /dev/null +++ b/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/fix-newer-xorg-headers.patch | |||
@@ -0,0 +1,18 @@ | |||
1 | --- | ||
2 | render/glyphstr.h | 1 + | ||
3 | 1 file changed, 1 insertion(+) | ||
4 | |||
5 | --- xorg-server-1.3.0.0.orig/render/glyphstr.h | ||
6 | +++ xorg-server-1.3.0.0/render/glyphstr.h | ||
7 | @@ -23,10 +23,11 @@ | ||
8 | */ | ||
9 | |||
10 | #ifndef _GLYPHSTR_H_ | ||
11 | #define _GLYPHSTR_H_ | ||
12 | |||
13 | +#include <X11/X.h> | ||
14 | #include <X11/extensions/renderproto.h> | ||
15 | #include "picture.h" | ||
16 | #include "screenint.h" | ||
17 | #include "regionstr.h" | ||
18 | #include "miscstruct.h" | ||
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/hide-cursor-and-ppm-root.patch b/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/hide-cursor-and-ppm-root.patch new file mode 100644 index 0000000000..c160cd41dc --- /dev/null +++ b/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/hide-cursor-and-ppm-root.patch | |||
@@ -0,0 +1,307 @@ | |||
1 | diff -u -r xorg-server-X11R7.1-1.1.0.orig/dix/window.c xorg-server-X11R7.1-1.1.0/dix/window.c | ||
2 | --- xorg-server-X11R7.1-1.1.0.orig/dix/window.c 2007-01-08 14:30:38.000000000 +0000 | ||
3 | +++ xorg-server-X11R7.1-1.1.0/dix/window.c 2007-01-16 17:16:19.000000000 +0000 | ||
4 | @@ -185,6 +185,8 @@ | ||
5 | _X_EXPORT int numSaveUndersViewable = 0; | ||
6 | _X_EXPORT int deltaSaveUndersViewable = 0; | ||
7 | |||
8 | +char* RootPPM = NULL; | ||
9 | + | ||
10 | #ifdef DEBUG | ||
11 | /****** | ||
12 | * PrintWindowTree | ||
13 | @@ -311,6 +313,115 @@ | ||
14 | #endif | ||
15 | } | ||
16 | |||
17 | +static int | ||
18 | +get_int(FILE *fp) | ||
19 | +{ | ||
20 | + int c = 0; | ||
21 | + | ||
22 | + while ((c = getc(fp)) != EOF) | ||
23 | + { | ||
24 | + if (isspace(c)) | ||
25 | + continue; | ||
26 | + | ||
27 | + if (c == '#') | ||
28 | + while (c = getc(fp)) | ||
29 | + if (c == EOF) | ||
30 | + return 0; | ||
31 | + else if (c == '\n') | ||
32 | + break; | ||
33 | + | ||
34 | + if (isdigit(c)) | ||
35 | + { | ||
36 | + int val = c - '0'; | ||
37 | + while ((c = getc(fp)) && isdigit(c)) | ||
38 | + val = (val * 10) + (c - '0'); | ||
39 | + return val; | ||
40 | + } | ||
41 | + } | ||
42 | + | ||
43 | + return 0; | ||
44 | +} | ||
45 | + | ||
46 | +static unsigned char* | ||
47 | +ppm_load (const char* path, int depth, int *width, int *height) | ||
48 | +{ | ||
49 | + FILE *fp; | ||
50 | + int max, n = 0, w, h, i, j, bytes_per_line; | ||
51 | + unsigned char *data, *res, h1, h2; | ||
52 | + | ||
53 | + if (depth < 16 || depth > 32) | ||
54 | + return NULL; | ||
55 | + | ||
56 | + if (depth > 16) | ||
57 | + depth = 32; | ||
58 | + | ||
59 | + fp = fopen (path, "r"); | ||
60 | + if (fp == NULL) | ||
61 | + return FALSE; | ||
62 | + | ||
63 | + h1 = getc(fp); | ||
64 | + h2 = getc(fp); | ||
65 | + | ||
66 | + /* magic is 'P6' for raw ppm */ | ||
67 | + if (h1 != 'P' && h2 != '6') | ||
68 | + goto fail; | ||
69 | + | ||
70 | + w = get_int(fp); | ||
71 | + h = get_int(fp); | ||
72 | + | ||
73 | + if (w == 0 || h == 0) | ||
74 | + goto fail; | ||
75 | + | ||
76 | + max = get_int(fp); | ||
77 | + | ||
78 | + if (max != 255) | ||
79 | + goto fail; | ||
80 | + | ||
81 | + bytes_per_line = ((w * depth + 31) >> 5) << 2; | ||
82 | + | ||
83 | + res = data = malloc(bytes_per_line * h); | ||
84 | + | ||
85 | + for (i=0; i<h; i++) | ||
86 | + { | ||
87 | + for (j=0; j<w; j++) | ||
88 | + { | ||
89 | + unsigned char buf[3]; | ||
90 | + fread(buf, 1, 3, fp); | ||
91 | + | ||
92 | + switch (depth) | ||
93 | + { | ||
94 | + case 24: | ||
95 | + case 32: | ||
96 | + *data = buf[2]; | ||
97 | + *(data+1) = buf[1]; | ||
98 | + *(data+2) = buf[0]; | ||
99 | + data += 4; | ||
100 | + break; | ||
101 | + case 16: | ||
102 | + default: | ||
103 | + *(unsigned short*)data | ||
104 | + = ((buf[0] >> 3) << 11) | ((buf[1] >> 2) << 5) | (buf[2] >> 3); | ||
105 | + data += 2; | ||
106 | + break; | ||
107 | + } | ||
108 | + } | ||
109 | + data += (bytes_per_line - (w*(depth>>3))); | ||
110 | + } | ||
111 | + | ||
112 | + data = res; | ||
113 | + | ||
114 | + *width = w; | ||
115 | + *height = h; | ||
116 | + | ||
117 | + fclose(fp); | ||
118 | + | ||
119 | + return res; | ||
120 | + | ||
121 | + fail: | ||
122 | + fclose(fp); | ||
123 | + return NULL; | ||
124 | +} | ||
125 | + | ||
126 | static void | ||
127 | MakeRootTile(WindowPtr pWin) | ||
128 | { | ||
129 | @@ -321,6 +432,36 @@ | ||
130 | register unsigned char *from, *to; | ||
131 | register int i, j; | ||
132 | |||
133 | + if (RootPPM != NULL) | ||
134 | + { | ||
135 | + int w, h; | ||
136 | + unsigned char *data; | ||
137 | + | ||
138 | + if ((data = ppm_load (RootPPM, pScreen->rootDepth, &w, &h)) != NULL) | ||
139 | + { | ||
140 | + pWin->background.pixmap | ||
141 | + = (*pScreen->CreatePixmap)(pScreen, w, h, pScreen->rootDepth); | ||
142 | + | ||
143 | + pWin->backgroundState = BackgroundPixmap; | ||
144 | + pGC = GetScratchGC(pScreen->rootDepth, pScreen); | ||
145 | + if (!pWin->background.pixmap || !pGC) | ||
146 | + FatalError("could not create root tile"); | ||
147 | + | ||
148 | + ValidateGC((DrawablePtr)pWin->background.pixmap, pGC); | ||
149 | + | ||
150 | + (*pGC->ops->PutImage)((DrawablePtr)pWin->background.pixmap, | ||
151 | + pGC, | ||
152 | + pScreen->rootDepth, | ||
153 | + 0, 0, w, h, 0, ZPixmap, (char *)data); | ||
154 | + FreeScratchGC(pGC); | ||
155 | + | ||
156 | + free(data); | ||
157 | + return; | ||
158 | + } | ||
159 | + else | ||
160 | + ErrorF("Unable to load root window image."); | ||
161 | + } | ||
162 | + | ||
163 | pWin->background.pixmap = (*pScreen->CreatePixmap)(pScreen, 4, 4, | ||
164 | pScreen->rootDepth); | ||
165 | |||
166 | @@ -357,6 +498,7 @@ | ||
167 | |||
168 | } | ||
169 | |||
170 | + | ||
171 | WindowPtr | ||
172 | AllocateWindow(ScreenPtr pScreen) | ||
173 | { | ||
174 | diff -u -r xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/src/kdrive.c xorg-server-X11R7.1-1.1.0/hw/kdrive/src/kdrive.c | ||
175 | --- xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/src/kdrive.c 2007-01-08 14:30:38.000000000 +0000 | ||
176 | +++ xorg-server-X11R7.1-1.1.0/hw/kdrive/src/kdrive.c 2007-01-15 17:53:06.000000000 +0000 | ||
177 | @@ -58,6 +58,9 @@ | ||
178 | { 32, 32 } | ||
179 | }; | ||
180 | |||
181 | +int | ||
182 | +ProcXFixesHideCursor (ClientPtr client) ; | ||
183 | + | ||
184 | #define NUM_KD_DEPTHS (sizeof (kdDepths) / sizeof (kdDepths[0])) | ||
185 | |||
186 | int kdScreenPrivateIndex; | ||
187 | @@ -84,6 +87,9 @@ | ||
188 | KdOsFuncs *kdOsFuncs; | ||
189 | extern WindowPtr *WindowTable; | ||
190 | |||
191 | +extern Bool CursorInitiallyHidden; /* See Xfixes cursor.c */ | ||
192 | +extern char* RootPPM; /* dix/window.c */ | ||
193 | + | ||
194 | void | ||
195 | KdSetRootClip (ScreenPtr pScreen, BOOL enable) | ||
196 | { | ||
197 | @@ -312,6 +318,7 @@ | ||
198 | KdSetRootClip (pScreen, TRUE); | ||
199 | if (pScreenPriv->card->cfuncs->dpms) | ||
200 | (*pScreenPriv->card->cfuncs->dpms) (pScreen, pScreenPriv->dpmsState); | ||
201 | + | ||
202 | return TRUE; | ||
203 | } | ||
204 | |||
205 | @@ -686,10 +693,14 @@ | ||
206 | ErrorF("-mouse path[,n] Filename of mouse device, n is number of buttons\n"); | ||
207 | ErrorF("-switchCmd Command to execute on vt switch\n"); | ||
208 | ErrorF("-nozap Don't terminate server on Ctrl+Alt+Backspace\n"); | ||
209 | + ErrorF("-hide-cursor Start with cursor hidden\n"); | ||
210 | + ErrorF("-root-ppm [path] Specify ppm file to use as root window background.\n"); | ||
211 | ErrorF("vtxx Use virtual terminal xx instead of the next available\n"); | ||
212 | #ifdef PSEUDO8 | ||
213 | p8UseMsg (); | ||
214 | #endif | ||
215 | + | ||
216 | + | ||
217 | } | ||
218 | |||
219 | int | ||
220 | @@ -761,6 +772,19 @@ | ||
221 | kdSoftCursor = TRUE; | ||
222 | return 1; | ||
223 | } | ||
224 | + if (!strcmp (argv[i], "-hide-cursor")) | ||
225 | + { | ||
226 | + CursorInitiallyHidden = TRUE; | ||
227 | + return 1; | ||
228 | + } | ||
229 | + if (!strcmp (argv[i], "-root-ppm")) | ||
230 | + { | ||
231 | + if ((i+1) < argc) | ||
232 | + RootPPM = argv[i+1]; | ||
233 | + else | ||
234 | + UseMsg (); | ||
235 | + return 2; | ||
236 | + } | ||
237 | if (!strcmp (argv[i], "-videoTest")) | ||
238 | { | ||
239 | kdVideoTest = TRUE; | ||
240 | diff -u -r xorg-server-X11R7.1-1.1.0.orig/xfixes/cursor.c xorg-server-X11R7.1-1.1.0/xfixes/cursor.c | ||
241 | --- xorg-server-X11R7.1-1.1.0.orig/xfixes/cursor.c 2007-01-08 14:30:38.000000000 +0000 | ||
242 | +++ xorg-server-X11R7.1-1.1.0/xfixes/cursor.c 2007-01-11 16:33:00.000000000 +0000 | ||
243 | @@ -59,9 +59,12 @@ | ||
244 | static RESTYPE CursorWindowType; | ||
245 | static int CursorScreenPrivateIndex = -1; | ||
246 | static int CursorGeneration; | ||
247 | +static Bool CursorGloballyHidden; | ||
248 | static CursorPtr CursorCurrent; | ||
249 | static CursorPtr pInvisibleCursor = NULL; | ||
250 | |||
251 | +Bool CursorInitiallyHidden = FALSE; | ||
252 | + | ||
253 | static void deleteCursorHideCountsForScreen (ScreenPtr pScreen); | ||
254 | |||
255 | #define VERIFY_CURSOR(pCursor, cursor, client, access) { \ | ||
256 | @@ -130,7 +133,7 @@ | ||
257 | |||
258 | Unwrap (cs, pScreen, DisplayCursor); | ||
259 | |||
260 | - if (cs->pCursorHideCounts != NULL) { | ||
261 | + if (cs->pCursorHideCounts != NULL || CursorGloballyHidden) { | ||
262 | ret = (*pScreen->DisplayCursor) (pScreen, pInvisibleCursor); | ||
263 | } else { | ||
264 | ret = (*pScreen->DisplayCursor) (pScreen, pCursor); | ||
265 | @@ -848,6 +851,12 @@ | ||
266 | return BadWindow; | ||
267 | } | ||
268 | |||
269 | + /* Is cursor set to be initially hidden ?, if so reset this | ||
270 | + * flag as now visibility assumed under control of client. | ||
271 | + */ | ||
272 | + if (CursorGloballyHidden) | ||
273 | + CursorGloballyHidden = FALSE; | ||
274 | + | ||
275 | /* | ||
276 | * Has client hidden the cursor before on this screen? | ||
277 | * If so, just increment the count. | ||
278 | @@ -899,9 +908,19 @@ | ||
279 | return BadWindow; | ||
280 | } | ||
281 | |||
282 | + /* X was started with cursor hidden, therefore just reset our flag | ||
283 | + * (returning to normal client control) and cause cursor to now be | ||
284 | + * shown. | ||
285 | + */ | ||
286 | + if (CursorGloballyHidden == TRUE) | ||
287 | + { | ||
288 | + CursorGloballyHidden = FALSE; | ||
289 | + return (client->noClientException); | ||
290 | + } | ||
291 | + | ||
292 | /* | ||
293 | * Has client hidden the cursor on this screen? | ||
294 | - * If not, generate an error. | ||
295 | + * If so, generate an error. | ||
296 | */ | ||
297 | pChc = findCursorHideCount(client, pWin->drawable.pScreen); | ||
298 | if (pChc == NULL) { | ||
299 | @@ -1009,6 +1028,8 @@ | ||
300 | XFixesCursorInit (void) | ||
301 | { | ||
302 | int i; | ||
303 | + | ||
304 | + CursorGloballyHidden = CursorInitiallyHidden; | ||
305 | |||
306 | if (CursorGeneration != serverGeneration) | ||
307 | { | ||
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/kdrive-evdev.patch b/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/kdrive-evdev.patch new file mode 100644 index 0000000000..2dc22bf50e --- /dev/null +++ b/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/kdrive-evdev.patch | |||
@@ -0,0 +1,515 @@ | |||
1 | # Kdrive evdev support patch, posted by Ander Conselvan de Oliveira at | ||
2 | # http://lists.freedesktop.org/archives/xorg/2005-December/011635.html | ||
3 | diff -u -r --exclude=CVS --exclude=Makefile --exclude='*.o' --exclude=ephyr --exclude='*.Po' xserver.original/hw/kdrive/linux/evdev.c xserver/hw/kdrive/linux/evdev.c | ||
4 | --- xserver.original/hw/kdrive/linux/evdev.c 2005-12-16 10:36:05.000000000 -0200 | ||
5 | +++ xserver/hw/kdrive/linux/evdev.c 2005-12-16 10:40:51.077410192 -0200 | ||
6 | @@ -31,9 +31,11 @@ | ||
7 | #include <X11/X.h> | ||
8 | #include <X11/Xproto.h> | ||
9 | #include <X11/Xpoll.h> | ||
10 | +#include <X11/keysym.h> | ||
11 | #include "inputstr.h" | ||
12 | #include "scrnintstr.h" | ||
13 | #include "kdrive.h" | ||
14 | +#include "kkeymap.h" | ||
15 | |||
16 | #define NUM_EVENTS 128 | ||
17 | #define ABS_UNSET -65535 | ||
18 | @@ -105,9 +107,10 @@ | ||
19 | { | ||
20 | KdMouseInfo *mi = closure; | ||
21 | Kevdev *ke = mi->driver; | ||
22 | - int i; | ||
23 | + int i, j; | ||
24 | struct input_event events[NUM_EVENTS]; | ||
25 | int n; | ||
26 | + int flags; | ||
27 | |||
28 | n = read (evdevPort, &events, NUM_EVENTS * sizeof (struct input_event)); | ||
29 | if (n <= 0) | ||
30 | @@ -115,22 +118,64 @@ | ||
31 | n /= sizeof (struct input_event); | ||
32 | for (i = 0; i < n; i++) | ||
33 | { | ||
34 | + flags = KD_MOUSE_DELTA | kdMouseInfo->buttonState; | ||
35 | switch (events[i].type) { | ||
36 | case EV_SYN: | ||
37 | break; | ||
38 | case EV_KEY: | ||
39 | - EvdevMotion (mi); | ||
40 | - ASSIGNBIT(ke->key,events[i].code, events[i].value); | ||
41 | - if (events[i].code < 0x100) | ||
42 | - ErrorF ("key %d %d\n", events[i].code, events[i].value); | ||
43 | - else | ||
44 | - ErrorF ("key 0x%x %d\n", events[i].code, events[i].value); | ||
45 | + if (events[i].code >= BTN_MOUSE && events[i].code < BTN_JOYSTICK) { | ||
46 | + switch (events[i].code) { | ||
47 | + case BTN_LEFT: | ||
48 | + if (events[i].value == 1) | ||
49 | + flags |= KD_BUTTON_1; | ||
50 | + else | ||
51 | + flags &= ~KD_BUTTON_1; | ||
52 | + break; | ||
53 | + case BTN_MIDDLE: | ||
54 | + if (events[i].value == 1) | ||
55 | + flags |= KD_BUTTON_2; | ||
56 | + else | ||
57 | + flags &= ~KD_BUTTON_2; | ||
58 | + break; | ||
59 | + case BTN_RIGHT: | ||
60 | + if (events[i].value == 1) | ||
61 | + flags |= KD_BUTTON_3; | ||
62 | + else | ||
63 | + flags &= ~KD_BUTTON_3; | ||
64 | + break; | ||
65 | + default: | ||
66 | + /* Unknow button */ | ||
67 | + break; | ||
68 | + } | ||
69 | + KdEnqueueMouseEvent (kdMouseInfo, flags, 0, 0); | ||
70 | + } | ||
71 | break; | ||
72 | case EV_REL: | ||
73 | - ke->rel[events[i].code] += events[i].value; | ||
74 | + if (events[i].code == REL_X) { | ||
75 | + KdEnqueueMouseEvent (kdMouseInfo, flags, events[i].value, 0); | ||
76 | + } | ||
77 | + else if (events[i].code == REL_Y) { | ||
78 | + KdEnqueueMouseEvent (kdMouseInfo, flags, 0, events[i].value); | ||
79 | + } | ||
80 | + else if (events[i].code == REL_WHEEL) { | ||
81 | + for (j = 0; j < abs (events[i].value); j++) { | ||
82 | + if (events[i].value > 0) | ||
83 | + flags |= KD_BUTTON_4; | ||
84 | + else | ||
85 | + flags |= KD_BUTTON_5; | ||
86 | + | ||
87 | + KdEnqueueMouseEvent (kdMouseInfo, flags, 0, 0); | ||
88 | + | ||
89 | + if (events[i].value > 0) | ||
90 | + flags &= ~KD_BUTTON_4; | ||
91 | + else | ||
92 | + flags &= ~KD_BUTTON_5; | ||
93 | + | ||
94 | + KdEnqueueMouseEvent (kdMouseInfo, flags, 0, 0); | ||
95 | + } /* events[i].code == REL_WHEEL */ | ||
96 | + } | ||
97 | break; | ||
98 | case EV_ABS: | ||
99 | - ke->abs[events[i].code] = events[i].value; | ||
100 | break; | ||
101 | } | ||
102 | } | ||
103 | @@ -173,6 +218,12 @@ | ||
104 | fd = open (kdefaultEvdev[i], 2); | ||
105 | if (fd >= 0) | ||
106 | { | ||
107 | + if (ioctl (fd, EVIOCGRAB, 1) < 0) | ||
108 | + { | ||
109 | + close (fd); | ||
110 | + continue; | ||
111 | + } | ||
112 | + | ||
113 | mi->name = KdSaveString (kdefaultEvdev[i]); | ||
114 | break; | ||
115 | } | ||
116 | @@ -287,7 +338,319 @@ | ||
117 | EvdevFini, | ||
118 | }; | ||
119 | |||
120 | -#if 0 | ||
121 | +/* Keyboard */ | ||
122 | + | ||
123 | +int kbd_fd = -1; | ||
124 | +int EvdevInputType = 0; | ||
125 | + | ||
126 | +KeySym evdevKeymap[(194 - 1 + 1) * 2] = { | ||
127 | +/* These are directly mapped from DOS scanset 0 */ | ||
128 | +/* 1 8 */ XK_Escape, NoSymbol, | ||
129 | +/* 2 9 */ XK_1, XK_exclam, | ||
130 | +/* 3 10 */ XK_2, XK_at, | ||
131 | +/* 4 11 */ XK_3, XK_numbersign, | ||
132 | +/* 5 12 */ XK_4, XK_dollar, | ||
133 | +/* 6 13 */ XK_5, XK_percent, | ||
134 | +/* 7 14 */ XK_6, XK_asciicircum, | ||
135 | +/* 8 15 */ XK_7, XK_ampersand, | ||
136 | +/* 9 16 */ XK_8, XK_asterisk, | ||
137 | +/* 10 17 */ XK_9, XK_parenleft, | ||
138 | +/* 11 18 */ XK_0, XK_parenright, | ||
139 | +/* 12 19 */ XK_minus, XK_underscore, | ||
140 | +/* 13 20 */ XK_equal, XK_plus, | ||
141 | +/* 14 21 */ XK_BackSpace, NoSymbol, | ||
142 | +/* 15 22 */ XK_Tab, NoSymbol, | ||
143 | +/* 16 23 */ XK_Q, NoSymbol, | ||
144 | +/* 17 24 */ XK_W, NoSymbol, | ||
145 | +/* 18 25 */ XK_E, NoSymbol, | ||
146 | +/* 19 26 */ XK_R, NoSymbol, | ||
147 | +/* 20 27 */ XK_T, NoSymbol, | ||
148 | +/* 21 28 */ XK_Y, NoSymbol, | ||
149 | +/* 22 29 */ XK_U, NoSymbol, | ||
150 | +/* 23 30 */ XK_I, NoSymbol, | ||
151 | +/* 24 31 */ XK_O, NoSymbol, | ||
152 | +/* 25 32 */ XK_P, NoSymbol, | ||
153 | +/* 26 33 */ XK_bracketleft, XK_braceleft, | ||
154 | +/* 27 34 */ XK_bracketright, XK_braceright, | ||
155 | +/* 28 35 */ XK_Return, NoSymbol, | ||
156 | +/* 29 36 */ XK_Control_L, NoSymbol, | ||
157 | +/* 30 37 */ XK_A, NoSymbol, | ||
158 | +/* 31 38 */ XK_S, NoSymbol, | ||
159 | +/* 32 39 */ XK_D, NoSymbol, | ||
160 | +/* 33 40 */ XK_F, NoSymbol, | ||
161 | +/* 34 41 */ XK_G, NoSymbol, | ||
162 | +/* 35 42 */ XK_H, NoSymbol, | ||
163 | +/* 36 43 */ XK_J, NoSymbol, | ||
164 | +/* 37 44 */ XK_K, NoSymbol, | ||
165 | +/* 38 45 */ XK_L, NoSymbol, | ||
166 | +/* 39 46 */ XK_semicolon, XK_colon, | ||
167 | +/* 40 47 */ XK_apostrophe, XK_quotedbl, | ||
168 | +/* 41 48 */ XK_grave, XK_asciitilde, | ||
169 | +/* 42 49 */ XK_Shift_L, NoSymbol, | ||
170 | +/* 43 50 */ XK_backslash, XK_bar, | ||
171 | +/* 44 51 */ XK_Z, NoSymbol, | ||
172 | +/* 45 52 */ XK_X, NoSymbol, | ||
173 | +/* 46 53 */ XK_C, NoSymbol, | ||
174 | +/* 47 54 */ XK_V, NoSymbol, | ||
175 | +/* 48 55 */ XK_B, NoSymbol, | ||
176 | +/* 49 56 */ XK_N, NoSymbol, | ||
177 | +/* 50 57 */ XK_M, NoSymbol, | ||
178 | +/* 51 58 */ XK_comma, XK_less, | ||
179 | +/* 52 59 */ XK_period, XK_greater, | ||
180 | +/* 53 60 */ XK_slash, XK_question, | ||
181 | +/* 54 61 */ XK_Shift_R, NoSymbol, | ||
182 | +/* 55 62 */ XK_KP_Multiply, NoSymbol, | ||
183 | +/* 56 63 */ XK_Alt_L, XK_Meta_L, | ||
184 | +/* 57 64 */ XK_space, NoSymbol, | ||
185 | +/* 58 65 */ XK_Caps_Lock, NoSymbol, | ||
186 | +/* 59 66 */ XK_F1, NoSymbol, | ||
187 | +/* 60 67 */ XK_F2, NoSymbol, | ||
188 | +/* 61 68 */ XK_F3, NoSymbol, | ||
189 | +/* 62 69 */ XK_F4, NoSymbol, | ||
190 | +/* 63 70 */ XK_F5, NoSymbol, | ||
191 | +/* 64 71 */ XK_F6, NoSymbol, | ||
192 | +/* 65 72 */ XK_F7, NoSymbol, | ||
193 | +/* 66 73 */ XK_F8, NoSymbol, | ||
194 | +/* 67 74 */ XK_F9, NoSymbol, | ||
195 | +/* 68 75 */ XK_F10, NoSymbol, | ||
196 | +/* 69 76 */ XK_Break, XK_Pause, | ||
197 | +/* 70 77 */ XK_Scroll_Lock, NoSymbol, | ||
198 | +/* 71 78 */ XK_KP_Home, XK_KP_7, | ||
199 | +/* 72 79 */ XK_KP_Up, XK_KP_8, | ||
200 | +/* 73 80 */ XK_KP_Page_Up, XK_KP_9, | ||
201 | +/* 74 81 */ XK_KP_Subtract, NoSymbol, | ||
202 | +/* 75 82 */ XK_KP_Left, XK_KP_4, | ||
203 | +/* 76 83 */ XK_KP_5, NoSymbol, | ||
204 | +/* 77 84 */ XK_KP_Right, XK_KP_6, | ||
205 | +/* 78 85 */ XK_KP_Add, NoSymbol, | ||
206 | +/* 79 86 */ XK_KP_End, XK_KP_1, | ||
207 | +/* 80 87 */ XK_KP_Down, XK_KP_2, | ||
208 | +/* 81 88 */ XK_KP_Page_Down, XK_KP_3, | ||
209 | +/* 82 89 */ XK_KP_Insert, XK_KP_0, | ||
210 | +/* 83 90 */ XK_KP_Delete, XK_KP_Decimal, | ||
211 | +/* 84 91 */ NoSymbol, NoSymbol, | ||
212 | +/* 85 92 */ NoSymbol, NoSymbol, | ||
213 | +/* 86 93 */ NoSymbol, NoSymbol, | ||
214 | +/* 87 94 */ XK_F11, NoSymbol, | ||
215 | +/* 88 95 */ XK_F12, NoSymbol, | ||
216 | + | ||
217 | +/* These are remapped from the extended set (using ExtendMap) */ | ||
218 | + | ||
219 | +/* 89 96 */ XK_Control_R, NoSymbol, | ||
220 | +/* 90 97 */ XK_KP_Enter, NoSymbol, | ||
221 | +/* 91 98 */ XK_KP_Divide, NoSymbol, | ||
222 | +/* 92 99 */ XK_Sys_Req, XK_Print, | ||
223 | +/* 93 100 */ XK_Alt_R, XK_Meta_R, | ||
224 | +/* 94 101 */ XK_Num_Lock, NoSymbol, | ||
225 | +/* 95 102 */ XK_Home, NoSymbol, | ||
226 | +/* 96 103 */ XK_Up, NoSymbol, | ||
227 | +/* 97 104 */ XK_Page_Up, NoSymbol, | ||
228 | +/* 98 105 */ XK_Left, NoSymbol, | ||
229 | +/* 99 106 */ XK_Right, NoSymbol, | ||
230 | +/* 100 107 */ XK_End, NoSymbol, | ||
231 | +/* 101 108 */ XK_Down, NoSymbol, | ||
232 | +/* 102 109 */ XK_Page_Down, NoSymbol, | ||
233 | +/* 103 110 */ XK_Insert, NoSymbol, | ||
234 | +/* 104 111 */ XK_Delete, NoSymbol, | ||
235 | +/* 105 112 */ XK_Super_L, NoSymbol, | ||
236 | +/* 106 113 */ XK_Super_R, NoSymbol, | ||
237 | +/* 107 114 */ XK_Menu, NoSymbol, | ||
238 | +/* 108 115 */ NoSymbol, NoSymbol, | ||
239 | +/* 109 116 */ NoSymbol, NoSymbol, | ||
240 | +/* 110 117 */ NoSymbol, NoSymbol, | ||
241 | +/* 111 118 */ NoSymbol, NoSymbol, | ||
242 | +/* 112 119 */ NoSymbol, NoSymbol, | ||
243 | + | ||
244 | +/* 113 120 */ NoSymbol, NoSymbol, | ||
245 | +/* 114 121 */ NoSymbol, NoSymbol, | ||
246 | +/* 115 122 */ NoSymbol, NoSymbol, | ||
247 | +/* 116 123 */ NoSymbol, NoSymbol, | ||
248 | +/* 117 124 */ NoSymbol, NoSymbol, | ||
249 | +/* 118 125 */ NoSymbol, NoSymbol, | ||
250 | +/* 119 126 */ NoSymbol, NoSymbol, | ||
251 | +/* 120 127 */ NoSymbol, NoSymbol, | ||
252 | +/* 121 128 */ NoSymbol, NoSymbol, | ||
253 | +/* 122 129 */ NoSymbol, NoSymbol, | ||
254 | +/* 123 130 */ NoSymbol, NoSymbol, | ||
255 | +/* 124 131 */ NoSymbol, NoSymbol, | ||
256 | +/* 125 132 */ NoSymbol, NoSymbol, | ||
257 | +/* 126 133 */ NoSymbol, NoSymbol, | ||
258 | +/* 127 134 */ NoSymbol, NoSymbol, | ||
259 | +/* 128 135 */ NoSymbol, NoSymbol, | ||
260 | +/* 129 136 */ NoSymbol, NoSymbol, | ||
261 | +/* 130 137 */ NoSymbol, NoSymbol, | ||
262 | +/* 131 138 */ NoSymbol, NoSymbol, | ||
263 | +/* 132 139 */ NoSymbol, NoSymbol, | ||
264 | +/* 133 140 */ NoSymbol, NoSymbol, | ||
265 | +/* 134 141 */ NoSymbol, NoSymbol, | ||
266 | +/* 135 142 */ NoSymbol, NoSymbol, | ||
267 | +/* 136 143 */ NoSymbol, NoSymbol, | ||
268 | +/* 137 144 */ NoSymbol, NoSymbol, | ||
269 | +/* 138 145 */ NoSymbol, NoSymbol, | ||
270 | +/* 139 146 */ NoSymbol, NoSymbol, | ||
271 | +/* 140 147 */ NoSymbol, NoSymbol, | ||
272 | +/* 141 148 */ NoSymbol, NoSymbol, | ||
273 | +/* 142 149 */ NoSymbol, NoSymbol, | ||
274 | +/* 143 150 */ NoSymbol, NoSymbol, | ||
275 | +/* 144 151 */ NoSymbol, NoSymbol, | ||
276 | +/* 145 152 */ NoSymbol, NoSymbol, | ||
277 | +/* 146 153 */ NoSymbol, NoSymbol, | ||
278 | +/* 147 154 */ NoSymbol, NoSymbol, | ||
279 | +/* 148 155 */ NoSymbol, NoSymbol, | ||
280 | +/* 149 156 */ NoSymbol, NoSymbol, | ||
281 | +/* 150 157 */ NoSymbol, NoSymbol, | ||
282 | +/* 151 158 */ NoSymbol, NoSymbol, | ||
283 | +/* 152 159 */ NoSymbol, NoSymbol, | ||
284 | +/* 153 160 */ NoSymbol, NoSymbol, | ||
285 | +/* 154 161 */ NoSymbol, NoSymbol, | ||
286 | +/* 155 162 */ NoSymbol, NoSymbol, | ||
287 | +/* 156 163 */ NoSymbol, NoSymbol, | ||
288 | +/* 157 164 */ NoSymbol, NoSymbol, | ||
289 | +/* 158 165 */ NoSymbol, NoSymbol, | ||
290 | +/* 159 166 */ NoSymbol, NoSymbol, | ||
291 | +/* 160 167 */ NoSymbol, NoSymbol, | ||
292 | +/* 161 168 */ NoSymbol, NoSymbol, | ||
293 | +/* 162 169 */ NoSymbol, NoSymbol, | ||
294 | +/* 163 170 */ NoSymbol, NoSymbol, | ||
295 | +/* 164 171 */ NoSymbol, NoSymbol, | ||
296 | +/* 165 172 */ NoSymbol, NoSymbol, | ||
297 | +/* 166 173 */ NoSymbol, NoSymbol, | ||
298 | +/* 167 174 */ NoSymbol, NoSymbol, | ||
299 | +/* 168 175 */ NoSymbol, NoSymbol, | ||
300 | +/* 169 176 */ NoSymbol, NoSymbol, | ||
301 | +/* 170 177 */ NoSymbol, NoSymbol, | ||
302 | +/* 171 178 */ NoSymbol, NoSymbol, | ||
303 | +/* 172 179 */ NoSymbol, NoSymbol, | ||
304 | +/* 173 180 */ NoSymbol, NoSymbol, | ||
305 | +/* 174 181 */ NoSymbol, NoSymbol, | ||
306 | +/* 175 182 */ NoSymbol, NoSymbol, | ||
307 | +/* 176 183 */ NoSymbol, NoSymbol, | ||
308 | +/* 177 184 */ NoSymbol, NoSymbol, | ||
309 | +/* 178 185 */ NoSymbol, NoSymbol, | ||
310 | +/* 179 186 */ NoSymbol, NoSymbol, | ||
311 | +/* 180 187 */ NoSymbol, NoSymbol, | ||
312 | +/* 181 188 */ NoSymbol, NoSymbol, | ||
313 | +/* 182 189 */ NoSymbol, NoSymbol, | ||
314 | +/* 183 190 */ NoSymbol, NoSymbol, | ||
315 | +/* 184 191 */ NoSymbol, NoSymbol, | ||
316 | +/* 185 192 */ NoSymbol, NoSymbol, | ||
317 | +/* 186 193 */ NoSymbol, NoSymbol, | ||
318 | +/* 187 194 */ NoSymbol, NoSymbol, | ||
319 | +/* 188 195 */ NoSymbol, NoSymbol, | ||
320 | +/* 189 196 */ NoSymbol, NoSymbol, | ||
321 | +/* 190 197 */ NoSymbol, NoSymbol, | ||
322 | +/* 191 198 */ NoSymbol, NoSymbol, | ||
323 | +/* 192 199 */ NoSymbol, NoSymbol, | ||
324 | +/* 193 200 */ NoSymbol, NoSymbol, | ||
325 | +/* 194 201 */ NoSymbol, NoSymbol, | ||
326 | +}; | ||
327 | + | ||
328 | +static void | ||
329 | +EvdevKbdRead (int fd, void *closure) | ||
330 | +{ | ||
331 | + int i, n; | ||
332 | + struct input_event events[NUM_EVENTS]; | ||
333 | + | ||
334 | + n = read (fd, &events, NUM_EVENTS * sizeof (struct input_event)); | ||
335 | + if (n <= 0) | ||
336 | + return; | ||
337 | + | ||
338 | + n /= sizeof (struct input_event); | ||
339 | + | ||
340 | + for (i = 0; i < n; i++) | ||
341 | + { | ||
342 | + if (events[i].type == EV_KEY) | ||
343 | + KdEnqueueKeyboardEvent (events[i].code, !events[i].value); | ||
344 | + } | ||
345 | +} | ||
346 | + | ||
347 | +static void | ||
348 | +EvdevKbdLoad (void) | ||
349 | +{ | ||
350 | + kdMinScanCode = 0; | ||
351 | + kdMaxScanCode = 193; | ||
352 | + kdKeymapWidth = 2; | ||
353 | + memcpy (kdKeymap, evdevKeymap, sizeof (evdevKeymap)); | ||
354 | +} | ||
355 | + | ||
356 | +static int | ||
357 | +EvdevKbdInit (void) | ||
358 | +{ | ||
359 | + int fd, i; | ||
360 | + | ||
361 | + if (!EvdevInputType) | ||
362 | + EvdevInputType = KdAllocInputType (); | ||
363 | + | ||
364 | + if (!kdKeyboard) | ||
365 | + { | ||
366 | + for (i = 0; i < NUM_DEFAULT_EVDEV; i++) | ||
367 | + { | ||
368 | + fd = open (kdefaultEvdev[i], 2); | ||
369 | + if (fd >= 0) | ||
370 | + { | ||
371 | + kdKeyboard = KdSaveString (kdefaultEvdev[i]); | ||
372 | + break; | ||
373 | + } | ||
374 | + } | ||
375 | + } | ||
376 | + else | ||
377 | + { | ||
378 | + fd = open (kdKeyboard, O_RDWR); | ||
379 | + if (fd < 0) | ||
380 | + return FALSE; | ||
381 | + } | ||
382 | + | ||
383 | + if (ioctl (fd, EVIOCGRAB, 1) < 0) | ||
384 | + { | ||
385 | + close (fd); | ||
386 | + return FALSE; | ||
387 | + } | ||
388 | + | ||
389 | + if (!KdRegisterFd (EvdevInputType, fd, EvdevKbdRead, NULL)) | ||
390 | + return FALSE; | ||
391 | + | ||
392 | + kbd_fd = fd; | ||
393 | + return TRUE; | ||
394 | +} | ||
395 | + | ||
396 | +static void | ||
397 | +EvdevKbdFini (void) | ||
398 | +{ | ||
399 | +} | ||
400 | + | ||
401 | +static void | ||
402 | +EvdevKbdLeds (int leds) | ||
403 | +{ | ||
404 | + struct input_event event; | ||
405 | + | ||
406 | + memset(&event, 0, sizeof(event)); | ||
407 | + | ||
408 | + event.type = EV_LED; | ||
409 | + event.code = LED_CAPSL; | ||
410 | + event.value = leds & (1 << 0) ? 1 : 0; | ||
411 | + write(kbd_fd, (char *) &event, sizeof(event)); | ||
412 | + | ||
413 | + event.type = EV_LED; | ||
414 | + event.code = LED_NUML; | ||
415 | + event.value = leds & (1 << 1) ? 1 : 0; | ||
416 | + write(kbd_fd, (char *) &event, sizeof(event)); | ||
417 | + | ||
418 | + event.type = EV_LED; | ||
419 | + event.code = LED_SCROLLL; | ||
420 | + event.value = leds & (1 << 2) ? 1 : 0; | ||
421 | + write(kbd_fd, (char *) &event, sizeof(event)); | ||
422 | + | ||
423 | + event.type = EV_LED; | ||
424 | + event.code = LED_COMPOSE; | ||
425 | + event.value = leds & (1 << 3) ? 1 : 0; | ||
426 | + write(kbd_fd, (char *) &event, sizeof(event)); | ||
427 | +} | ||
428 | + | ||
429 | +static void | ||
430 | +EvdevKbdBell (int volume, int frequency, int duration) | ||
431 | +{ | ||
432 | +} | ||
433 | + | ||
434 | KdKeyboardFuncs LinuxEvdevKeyboardFuncs = { | ||
435 | EvdevKbdLoad, | ||
436 | EvdevKbdInit, | ||
437 | @@ -296,4 +659,4 @@ | ||
438 | EvdevKbdFini, | ||
439 | 0, | ||
440 | }; | ||
441 | -#endif | ||
442 | + | ||
443 | diff -u -r --exclude=CVS --exclude=Makefile --exclude='*.o' --exclude=ephyr --exclude='*.Po' xserver.original/hw/kdrive/src/kdrive.c xserver/hw/kdrive/src/kdrive.c | ||
444 | --- xserver.original/hw/kdrive/src/kdrive.c 2005-12-16 10:36:07.000000000 -0200 | ||
445 | +++ xserver/hw/kdrive/src/kdrive.c 2005-12-16 10:37:09.000000000 -0200 | ||
446 | @@ -73,6 +73,7 @@ | ||
447 | Bool kdEnabled; | ||
448 | int kdSubpixelOrder; | ||
449 | int kdVirtualTerminal = -1; | ||
450 | +char *kdKeyboard = 0; | ||
451 | Bool kdSwitchPending; | ||
452 | char *kdSwitchCmd; | ||
453 | DDXPointRec kdOrigin; | ||
454 | @@ -795,6 +796,14 @@ | ||
455 | UseMsg (); | ||
456 | return 2; | ||
457 | } | ||
458 | + if (!strcmp (argv[i], "-keyboard")) | ||
459 | + { | ||
460 | + if ((i+1) < argc) | ||
461 | + kdKeyboard = argv[i+1]; | ||
462 | + else | ||
463 | + UseMsg (); | ||
464 | + return 2; | ||
465 | + } | ||
466 | if (!strcmp (argv[i], "-rgba")) | ||
467 | { | ||
468 | if ((i+1) < argc) | ||
469 | diff -u -r --exclude=CVS --exclude=Makefile --exclude='*.o' --exclude=ephyr --exclude='*.Po' xserver.original/hw/kdrive/src/kdrive.h xserver/hw/kdrive/src/kdrive.h | ||
470 | --- xserver.original/hw/kdrive/src/kdrive.h 2005-12-16 10:36:07.000000000 -0200 | ||
471 | +++ xserver/hw/kdrive/src/kdrive.h 2005-12-16 10:37:09.000000000 -0200 | ||
472 | @@ -416,6 +416,7 @@ | ||
473 | extern Bool kdDisableZaphod; | ||
474 | extern Bool kdDontZap; | ||
475 | extern int kdVirtualTerminal; | ||
476 | +extern char *kdKeyboard; | ||
477 | extern char *kdSwitchCmd; | ||
478 | extern KdOsFuncs *kdOsFuncs; | ||
479 | |||
480 | @@ -769,7 +770,7 @@ | ||
481 | ProcessInputEvents (void); | ||
482 | |||
483 | extern KdMouseFuncs LinuxMouseFuncs; | ||
484 | -extern KdMouseFuncs LinuxEvdevFuncs; | ||
485 | +extern KdMouseFuncs LinuxEvdevMouseFuncs; | ||
486 | extern KdMouseFuncs Ps2MouseFuncs; | ||
487 | extern KdMouseFuncs BusMouseFuncs; | ||
488 | extern KdMouseFuncs MsMouseFuncs; | ||
489 | @@ -777,6 +778,7 @@ | ||
490 | extern KdMouseFuncs TsFuncs; | ||
491 | #endif | ||
492 | extern KdKeyboardFuncs LinuxKeyboardFuncs; | ||
493 | +extern KdKeyboardFuncs LinuxEvdevKeyboardFuncs; | ||
494 | extern KdOsFuncs LinuxFuncs; | ||
495 | |||
496 | extern KdMouseFuncs VxWorksMouseFuncs; | ||
497 | diff -u -r --exclude=CVS --exclude=Makefile --exclude='*.o' --exclude=ephyr --exclude='*.Po' xserver.original/hw/kdrive/src/kinput.c xserver/hw/kdrive/src/kinput.c | ||
498 | --- xserver.original/hw/kdrive/src/kinput.c 2005-12-16 10:36:07.000000000 -0200 | ||
499 | +++ xserver/hw/kdrive/src/kinput.c 2005-12-16 10:37:09.000000000 -0200 | ||
500 | @@ -1300,6 +1300,7 @@ | ||
501 | xE.u.u.type = KeyPress; | ||
502 | xE.u.u.detail = key_code; | ||
503 | |||
504 | +#ifndef XKB | ||
505 | switch (KEYCOL1(key_code)) | ||
506 | { | ||
507 | case XK_Num_Lock: | ||
508 | @@ -1313,6 +1314,7 @@ | ||
509 | else | ||
510 | xE.u.u.type = KeyPress; | ||
511 | } | ||
512 | +#endif | ||
513 | |||
514 | /* | ||
515 | * Check pressed keys which are already down | ||
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/kdrive-use-evdev.patch b/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/kdrive-use-evdev.patch new file mode 100644 index 0000000000..28d7325601 --- /dev/null +++ b/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/kdrive-use-evdev.patch | |||
@@ -0,0 +1,54 @@ | |||
1 | --- xserver/hw/kdrive/fbdev/fbinit.c~ 2006-01-31 17:09:33.000000000 +0100 | ||
2 | +++ xserver/hw/kdrive/fbdev/fbinit.c 2006-01-31 17:11:55.000000000 +0100 | ||
3 | @@ -28,6 +28,8 @@ | ||
4 | #endif | ||
5 | #include <fbdev.h> | ||
6 | |||
7 | +extern int use_evdev; | ||
8 | + | ||
9 | void | ||
10 | InitCard (char *name) | ||
11 | { | ||
12 | @@ -45,7 +47,10 @@ | ||
13 | void | ||
14 | InitInput (int argc, char **argv) | ||
15 | { | ||
16 | - KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs); | ||
17 | + if (use_evdev) | ||
18 | + KdInitInput (&LinuxEvdevMouseFuncs, &LinuxEvdevKeyboardFuncs); | ||
19 | + else | ||
20 | + KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs); | ||
21 | #ifdef TOUCHSCREEN | ||
22 | KdAddMouseDriver (&TsFuncs); | ||
23 | #endif | ||
24 | --- xserver/hw/kdrive/src/kdrive.c.orig 2006-01-31 17:13:28.000000000 +0100 | ||
25 | +++ xserver/hw/kdrive/src/kdrive.c 2006-01-31 17:15:28.000000000 +0100 | ||
26 | @@ -44,6 +44,8 @@ | ||
27 | #include "dpmsproc.h" | ||
28 | #endif | ||
29 | |||
30 | +int use_evdev = 0; | ||
31 | + | ||
32 | typedef struct _kdDepths { | ||
33 | CARD8 depth; | ||
34 | CARD8 bpp; | ||
35 | @@ -687,6 +689,7 @@ | ||
36 | ErrorF("-videoTest Start the server, pause momentarily and exit\n"); | ||
37 | ErrorF("-origin X,Y Locates the next screen in the the virtual screen (Xinerama)\n"); | ||
38 | ErrorF("-mouse path[,n] Filename of mouse device, n is number of buttons\n"); | ||
39 | + ErrorF("-use-evdev Use Linux evdev input\n"); | ||
40 | ErrorF("-switchCmd Command to execute on vt switch\n"); | ||
41 | ErrorF("-nozap Don't terminate server on Ctrl+Alt+Backspace\n"); | ||
42 | ErrorF("vtxx Use virtual terminal xx instead of the next available\n"); | ||
43 | @@ -796,6 +799,11 @@ | ||
44 | UseMsg (); | ||
45 | return 2; | ||
46 | } | ||
47 | + if (!strcmp (argv[i], "-use-evdev")) | ||
48 | + { | ||
49 | + use_evdev = 1; | ||
50 | + return 1; | ||
51 | + } | ||
52 | if (!strcmp (argv[i], "-keyboard")) | ||
53 | { | ||
54 | if ((i+1) < argc) | ||
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/optional-xkb.patch b/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/optional-xkb.patch new file mode 100644 index 0000000000..a580b500b7 --- /dev/null +++ b/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/optional-xkb.patch | |||
@@ -0,0 +1,58 @@ | |||
1 | Index: xorg-server-1.2.0/Makefile.am | ||
2 | =================================================================== | ||
3 | --- xorg-server-1.2.0.orig/Makefile.am 2007-01-23 06:39:15.000000000 +0100 | ||
4 | +++ xorg-server-1.2.0/Makefile.am 2007-03-28 20:26:19.000000000 +0200 | ||
5 | @@ -30,6 +30,10 @@ | ||
6 | XINPUT_DIR=Xi | ||
7 | endif | ||
8 | |||
9 | +if XKB | ||
10 | +XKB_DIR=xkb | ||
11 | +endif | ||
12 | + | ||
13 | if DBE | ||
14 | DBE_DIR=dbe | ||
15 | endif | ||
16 | @@ -46,7 +50,7 @@ | ||
17 | randr \ | ||
18 | render \ | ||
19 | $(XINPUT_DIR) \ | ||
20 | - xkb \ | ||
21 | + $(XKB_DIR) \ | ||
22 | $(DBE_DIR) \ | ||
23 | $(MFB_DIR) \ | ||
24 | $(AFB_DIR) \ | ||
25 | Index: xorg-server-1.2.0/configure.ac | ||
26 | =================================================================== | ||
27 | --- xorg-server-1.2.0.orig/configure.ac 2007-01-23 06:39:15.000000000 +0100 | ||
28 | +++ xorg-server-1.2.0/configure.ac 2007-03-28 20:27:13.000000000 +0200 | ||
29 | @@ -428,6 +428,7 @@ | ||
30 | AC_ARG_ENABLE(dpms, AS_HELP_STRING([--disable-dpms], [Build DPMS extension (default: enabled)]), [DPMSExtension=$enableval], [DPMSExtension=yes]) | ||
31 | AC_ARG_ENABLE(xinput, AS_HELP_STRING([--disable-xinput], [Build XInput Extension (default: enabled)]), [XINPUT=$enableval], [XINPUT=yes]) | ||
32 | AC_ARG_ENABLE(xfree86-utils, AS_HELP_STRING([--enable-xfree86-utils], [Build xfree86 DDX utilities (default: enabled)]), [XF86UTILS=$enableval], [XF86UTILS=yes]) | ||
33 | +AC_ARG_ENABLE(xkb, AS_HELP_STRING([--disable-xkb], [Build XKB (default: enabled)]), [XKB=$enableval], [XKB=yes]) | ||
34 | |||
35 | dnl DDXes. | ||
36 | AC_ARG_ENABLE(xorg, AS_HELP_STRING([--enable-xorg], [Build Xorg server (default: auto)]), [XORG=$enableval], [XORG=auto]) | ||
37 | @@ -754,12 +755,15 @@ | ||
38 | |||
39 | AC_DEFINE(SHAPE, 1, [Support SHAPE extension]) | ||
40 | |||
41 | -AC_DEFINE(XKB, 1, [Build XKB]) | ||
42 | -AC_DEFINE(XKB_IN_SERVER, 1, [Build XKB server]) | ||
43 | -AC_DEFINE(XKB_DFLT_DISABLED, 0, [Disable XKB per default]) | ||
44 | -REQUIRED_MODULES="$REQUIRED_MODULES xkbfile" | ||
45 | -XKB_LIB='$(top_builddir)/xkb/libxkb.la' | ||
46 | -XKB_STUB_LIB='$(top_builddir)/xkb/libxkbstubs.la' | ||
47 | +AM_CONDITIONAL(XKB, [test "x$XKB" = xyes]) | ||
48 | +if test "x$XKB" = xyes; then | ||
49 | + AC_DEFINE(XKB, 1, [Build XKB]) | ||
50 | + AC_DEFINE(XKB_IN_SERVER, 1, [Build XKB server]) | ||
51 | + AC_DEFINE(XKB_DFLT_DISABLED, 0, [Disable XKB per default]) | ||
52 | + REQUIRED_MODULES="$REQUIRED_MODULES xkbfile" | ||
53 | + XKB_LIB='$(top_builddir)/xkb/libxkb.la' | ||
54 | + XKB_STUB_LIB='$(top_builddir)/xkb/libxkbstubs.la' | ||
55 | +fi | ||
56 | |||
57 | AC_CHECK_FUNC(strcasecmp, [], AC_DEFINE([NEED_STRCASECMP], 1, | ||
58 | [Do not have `strcasecmp'.])) | ||
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/report-correct-randr12.patch b/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/report-correct-randr12.patch new file mode 100644 index 0000000000..72c8a18add --- /dev/null +++ b/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/report-correct-randr12.patch | |||
@@ -0,0 +1,29 @@ | |||
1 | Server reports XRandR version provided by libxrandr instead of XRandR | ||
2 | version implemented. It confuses applications that execute XRandR | ||
3 | version dependent code (e. g. gtk+ >= 2.18.0). | ||
4 | |||
5 | Index: xorg-server-1.3.0.0/randr/rrdispatch.c | ||
6 | =================================================================== | ||
7 | --- xorg-server-1.3.0.0.orig/randr/rrdispatch.c | ||
8 | +++ xorg-server-1.3.0.0/randr/rrdispatch.c | ||
9 | @@ -22,6 +22,9 @@ | ||
10 | |||
11 | #include "randrstr.h" | ||
12 | |||
13 | +#define SERVER_RANDR_MAJOR 1 | ||
14 | +#define SERVER_RANDR_MINOR 2 | ||
15 | + | ||
16 | Bool | ||
17 | RRClientKnowsRates (ClientPtr pClient) | ||
18 | { | ||
19 | @@ -49,8 +52,8 @@ ProcRRQueryVersion (ClientPtr client) | ||
20 | * Report the current version; the current | ||
21 | * spec says they're all compatible after 1.0 | ||
22 | */ | ||
23 | - rep.majorVersion = RANDR_MAJOR; | ||
24 | - rep.minorVersion = RANDR_MINOR; | ||
25 | + rep.majorVersion = SERVER_RANDR_MAJOR; | ||
26 | + rep.minorVersion = SERVER_RANDR_MINOR; | ||
27 | if (client->swapped) { | ||
28 | swaps(&rep.sequenceNumber, n); | ||
29 | swapl(&rep.length, n); | ||
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/scheduler.patch b/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/scheduler.patch new file mode 100644 index 0000000000..395bc7d511 --- /dev/null +++ b/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/scheduler.patch | |||
@@ -0,0 +1,151 @@ | |||
1 | >From 48e4d08e99de41047c6b6fde5ba9d12787881c23 Mon Sep 17 00:00:00 2001 | ||
2 | From: root <root@benny.jf.intel.com> | ||
3 | Date: Sun, 28 Oct 2007 09:37:52 +0100 | ||
4 | Subject: [PATCH] The smart scheduler itimer currently always fires after each request | ||
5 | (which in turn causes the CPU to wake out of idle, burning precious power). | ||
6 | Rather than doing this, just stop the timer before going into the select() | ||
7 | portion of the WaitFor loop. It's a cheap system call, and it will only get | ||
8 | called if there's no more commands batched up from the active fd. | ||
9 | |||
10 | This change also allows some of the functions to be simplified; setitimer() | ||
11 | will only fail if it's passed invalid data, and we don't do that... so make | ||
12 | it void and remove all the conditional code that deals with failure. | ||
13 | |||
14 | The change also allows us to remove a few variables that were used for | ||
15 | housekeeping between the signal handler and the main loop. | ||
16 | --- | ||
17 | include/dixstruct.h | 6 ++---- | ||
18 | os/WaitFor.c | 11 +++-------- | ||
19 | os/utils.c | 28 +++------------------------- | ||
20 | 3 files changed, 8 insertions(+), 37 deletions(-) | ||
21 | |||
22 | diff --git a/include/dixstruct.h b/include/dixstruct.h | ||
23 | index dd6347f..bed31dc 100644 | ||
24 | --- a/include/dixstruct.h | ||
25 | +++ b/include/dixstruct.h | ||
26 | @@ -150,11 +150,9 @@ extern long SmartScheduleTime; | ||
27 | extern long SmartScheduleInterval; | ||
28 | extern long SmartScheduleSlice; | ||
29 | extern long SmartScheduleMaxSlice; | ||
30 | -extern unsigned long SmartScheduleIdleCount; | ||
31 | extern Bool SmartScheduleDisable; | ||
32 | -extern Bool SmartScheduleIdle; | ||
33 | -extern Bool SmartScheduleTimerStopped; | ||
34 | -extern Bool SmartScheduleStartTimer(void); | ||
35 | +extern void SmartScheduleStartTimer(void); | ||
36 | +extern void SmartScheduleStopTimer(void); | ||
37 | #define SMART_MAX_PRIORITY (20) | ||
38 | #define SMART_MIN_PRIORITY (-20) | ||
39 | |||
40 | diff --git a/os/WaitFor.c b/os/WaitFor.c | ||
41 | index ec1592c..7683477 100644 | ||
42 | --- a/os/WaitFor.c | ||
43 | +++ b/os/WaitFor.c | ||
44 | @@ -217,7 +217,8 @@ WaitForSomething(int *pClientsReady) | ||
45 | XFD_COPYSET(&AllSockets, &LastSelectMask); | ||
46 | #ifdef SMART_SCHEDULE | ||
47 | } | ||
48 | - SmartScheduleIdle = TRUE; | ||
49 | + SmartScheduleStopTimer (); | ||
50 | + | ||
51 | #endif | ||
52 | BlockHandler((pointer)&wt, (pointer)&LastSelectMask); | ||
53 | if (NewOutputPending) | ||
54 | @@ -237,13 +238,7 @@ WaitForSomething(int *pClientsReady) | ||
55 | selecterr = GetErrno(); | ||
56 | WakeupHandler(i, (pointer)&LastSelectMask); | ||
57 | #ifdef SMART_SCHEDULE | ||
58 | - if (i >= 0) | ||
59 | - { | ||
60 | - SmartScheduleIdle = FALSE; | ||
61 | - SmartScheduleIdleCount = 0; | ||
62 | - if (SmartScheduleTimerStopped) | ||
63 | - (void) SmartScheduleStartTimer (); | ||
64 | - } | ||
65 | + SmartScheduleStartTimer (); | ||
66 | #endif | ||
67 | if (i <= 0) /* An error or timeout occurred */ | ||
68 | { | ||
69 | diff --git a/os/utils.c b/os/utils.c | ||
70 | index 31cb0af..6fc1f7d 100644 | ||
71 | --- a/os/utils.c | ||
72 | +++ b/os/utils.c | ||
73 | @@ -1513,10 +1513,6 @@ XNFstrdup(const char *s) | ||
74 | |||
75 | #ifdef SMART_SCHEDULE | ||
76 | |||
77 | -unsigned long SmartScheduleIdleCount; | ||
78 | -Bool SmartScheduleIdle; | ||
79 | -Bool SmartScheduleTimerStopped; | ||
80 | - | ||
81 | #ifdef SIGVTALRM | ||
82 | #define SMART_SCHEDULE_POSSIBLE | ||
83 | #endif | ||
84 | @@ -1526,7 +1522,7 @@ Bool SmartScheduleTimerStopped; | ||
85 | #define SMART_SCHEDULE_TIMER ITIMER_REAL | ||
86 | #endif | ||
87 | |||
88 | -static void | ||
89 | +void | ||
90 | SmartScheduleStopTimer (void) | ||
91 | { | ||
92 | #ifdef SMART_SCHEDULE_POSSIBLE | ||
93 | @@ -1537,38 +1533,28 @@ SmartScheduleStopTimer (void) | ||
94 | timer.it_value.tv_sec = 0; | ||
95 | timer.it_value.tv_usec = 0; | ||
96 | (void) setitimer (ITIMER_REAL, &timer, 0); | ||
97 | - SmartScheduleTimerStopped = TRUE; | ||
98 | #endif | ||
99 | } | ||
100 | |||
101 | -Bool | ||
102 | +void | ||
103 | SmartScheduleStartTimer (void) | ||
104 | { | ||
105 | #ifdef SMART_SCHEDULE_POSSIBLE | ||
106 | struct itimerval timer; | ||
107 | |||
108 | - SmartScheduleTimerStopped = FALSE; | ||
109 | timer.it_interval.tv_sec = 0; | ||
110 | timer.it_interval.tv_usec = SmartScheduleInterval * 1000; | ||
111 | timer.it_value.tv_sec = 0; | ||
112 | timer.it_value.tv_usec = SmartScheduleInterval * 1000; | ||
113 | - return setitimer (ITIMER_REAL, &timer, 0) >= 0; | ||
114 | + setitimer (ITIMER_REAL, &timer, 0); | ||
115 | #endif | ||
116 | - return FALSE; | ||
117 | } | ||
118 | |||
119 | #ifdef SMART_SCHEDULE_POSSIBLE | ||
120 | static void | ||
121 | SmartScheduleTimer (int sig) | ||
122 | { | ||
123 | - int olderrno = errno; | ||
124 | - | ||
125 | SmartScheduleTime += SmartScheduleInterval; | ||
126 | - if (SmartScheduleIdle) | ||
127 | - { | ||
128 | - SmartScheduleStopTimer (); | ||
129 | - } | ||
130 | - errno = olderrno; | ||
131 | } | ||
132 | #endif | ||
133 | |||
134 | @@ -1592,14 +1578,6 @@ SmartScheduleInit (void) | ||
135 | perror ("sigaction for smart scheduler"); | ||
136 | return FALSE; | ||
137 | } | ||
138 | - /* Set up the virtual timer */ | ||
139 | - if (!SmartScheduleStartTimer ()) | ||
140 | - { | ||
141 | - perror ("scheduling timer"); | ||
142 | - return FALSE; | ||
143 | - } | ||
144 | - /* stop the timer and wait for WaitForSomething to start it */ | ||
145 | - SmartScheduleStopTimer (); | ||
146 | return TRUE; | ||
147 | #else | ||
148 | return FALSE; | ||
149 | -- | ||
150 | 1.5.3.4 | ||
151 | |||
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/xcalibrate_coords.patch b/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/xcalibrate_coords.patch new file mode 100644 index 0000000000..e0cca5428b --- /dev/null +++ b/meta/recipes-graphics/xorg-xserver/xserver-kdrive-1.3.0.0/xcalibrate_coords.patch | |||
@@ -0,0 +1,122 @@ | |||
1 | --- | ||
2 | Xext/xcalibrate.c | 47 ++++++++++++++++++++++++++++++++++++++++++++++- | ||
3 | hw/kdrive/src/kdrive.h | 3 +++ | ||
4 | hw/kdrive/src/kinput.c | 12 ++++++++++++ | ||
5 | 3 files changed, 61 insertions(+), 1 deletion(-) | ||
6 | |||
7 | Index: xorg-server-1.3.0.0/Xext/xcalibrate.c | ||
8 | =================================================================== | ||
9 | --- xorg-server-1.3.0.0.orig/Xext/xcalibrate.c 2007-06-29 17:30:03.000000000 +0100 | ||
10 | +++ xorg-server-1.3.0.0/Xext/xcalibrate.c 2007-06-30 14:04:40.000000000 +0100 | ||
11 | @@ -166,7 +166,6 @@ ProcXCalibrateSetRawMode (ClientPtr clie | ||
12 | return (client->noClientException); | ||
13 | } | ||
14 | |||
15 | - | ||
16 | static int | ||
17 | SProcXCalibrateSetRawMode (ClientPtr client) | ||
18 | { | ||
19 | @@ -180,6 +179,47 @@ SProcXCalibrateSetRawMode (ClientPtr cli | ||
20 | return ProcXCalibrateSetRawMode(client); | ||
21 | } | ||
22 | |||
23 | +static int | ||
24 | +ProcXCalibrateScreenToCoord (ClientPtr client) | ||
25 | +{ | ||
26 | + REQUEST(xXCalibrateScreenToCoordReq); | ||
27 | + xXCalibrateScreenToCoordReply rep; | ||
28 | + | ||
29 | + REQUEST_SIZE_MATCH (xXCalibrateScreenToCoordReq); | ||
30 | + | ||
31 | + memset (&rep, 0, sizeof (rep)); | ||
32 | + rep.type = X_Reply; | ||
33 | + rep.sequenceNumber = client->sequence; | ||
34 | + rep.x = stuff->x; | ||
35 | + rep.y = stuff->y; | ||
36 | + | ||
37 | + KdScreenToMouseCoords(&rep.x, &rep.y); | ||
38 | + | ||
39 | + if (client->swapped) | ||
40 | + { | ||
41 | + int n; | ||
42 | + | ||
43 | + swaps (&rep.x, n); | ||
44 | + swaps (&rep.y, n); | ||
45 | + } | ||
46 | + WriteToClient(client, sizeof (rep), (char *) &rep); | ||
47 | + return (client->noClientException); | ||
48 | +} | ||
49 | + | ||
50 | +static int | ||
51 | +SProcXCalibrateScreenToCoord (ClientPtr client) | ||
52 | +{ | ||
53 | + REQUEST(xXCalibrateScreenToCoordReq); | ||
54 | + int n; | ||
55 | + | ||
56 | + REQUEST_SIZE_MATCH (xXCalibrateScreenToCoordReq); | ||
57 | + | ||
58 | + swaps(&stuff->x, n); | ||
59 | + swaps(&stuff->y, n); | ||
60 | + | ||
61 | + return ProcXCalibrateScreenToCoord(client); | ||
62 | +} | ||
63 | + | ||
64 | static void | ||
65 | XCalibrateResetProc (ExtensionEntry *extEntry) | ||
66 | { | ||
67 | @@ -194,6 +234,9 @@ ProcXCalibrateDispatch (ClientPtr client | ||
68 | return ProcXCalibrateQueryVersion(client); | ||
69 | case X_XCalibrateRawMode: | ||
70 | return ProcXCalibrateSetRawMode(client); | ||
71 | + case X_XCalibrateScreenToCoord: | ||
72 | + return ProcXCalibrateScreenToCoord(client); | ||
73 | + | ||
74 | default: break; | ||
75 | } | ||
76 | |||
77 | @@ -213,6 +256,8 @@ SProcXCalibrateDispatch (ClientPtr clien | ||
78 | return SProcXCalibrateQueryVersion(client); | ||
79 | case X_XCalibrateRawMode: | ||
80 | return SProcXCalibrateSetRawMode(client); | ||
81 | + case X_XCalibrateScreenToCoord: | ||
82 | + return SProcXCalibrateScreenToCoord(client); | ||
83 | |||
84 | default: break; | ||
85 | } | ||
86 | Index: xorg-server-1.3.0.0/hw/kdrive/src/kdrive.h | ||
87 | =================================================================== | ||
88 | --- xorg-server-1.3.0.0.orig/hw/kdrive/src/kdrive.h 2007-06-30 13:43:45.000000000 +0100 | ||
89 | +++ xorg-server-1.3.0.0/hw/kdrive/src/kdrive.h 2007-06-30 13:45:03.000000000 +0100 | ||
90 | @@ -746,6 +746,9 @@ void | ||
91 | KdSetMouseMatrix (KdMouseMatrix *matrix); | ||
92 | |||
93 | void | ||
94 | +KdScreenToMouseCoords (int *x, int *y); | ||
95 | + | ||
96 | +void | ||
97 | KdComputeMouseMatrix (KdMouseMatrix *matrix, Rotation randr, int width, int height); | ||
98 | |||
99 | void | ||
100 | Index: xorg-server-1.3.0.0/hw/kdrive/src/kinput.c | ||
101 | =================================================================== | ||
102 | --- xorg-server-1.3.0.0.orig/hw/kdrive/src/kinput.c 2007-06-29 17:30:16.000000000 +0100 | ||
103 | +++ xorg-server-1.3.0.0/hw/kdrive/src/kinput.c 2007-06-30 15:52:16.000000000 +0100 | ||
104 | @@ -381,6 +381,18 @@ KdSetMouseMatrix (KdMouseMatrix *matrix) | ||
105 | } | ||
106 | |||
107 | void | ||
108 | +KdScreenToMouseCoords (int *x, int *y) | ||
109 | +{ | ||
110 | + int (*m)[3] = kdMouseMatrix.matrix; | ||
111 | + int div = m[0][1] * m[1][0] - m[1][1] * m[0][0]; | ||
112 | + int sx = *x; | ||
113 | + int sy = *y; | ||
114 | + | ||
115 | + *x = (m[0][1] * sy - m[0][1] * m[1][2] + m[1][1] * m[0][2] - m[1][1] * sx) / div; | ||
116 | + *y = (m[1][0] * sx + m[0][0] * m[1][2] - m[1][0] * m[0][2] - m[0][0] * sy) / div; | ||
117 | +} | ||
118 | + | ||
119 | +void | ||
120 | KdComputeMouseMatrix (KdMouseMatrix *m, Rotation randr, int width, int height) | ||
121 | { | ||
122 | int x_dir = 1, y_dir = 1; | ||