forked from pool/xorg-x11-server
Accepting request 46214 from X11:XOrg
Copy from X11:XOrg/xorg-x11-server based on submit request 46214 from user sndirsch OBS-URL: https://build.opensuse.org/request/show/46214 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xorg-x11-server?expand=0&rev=176
This commit is contained in:
commit
44be5e0519
@ -1,18 +1,10 @@
|
||||
From 5ed1510176b870fd6208e2f8561880c4abe6637d Mon Sep 17 00:00:00 2001
|
||||
From: Egbert Eich <eich@linux-p1mv.site>
|
||||
Date: Thu, 8 Oct 2009 12:40:55 +0200
|
||||
Subject: [PATCH] Fix segfault when killing X with ctrl-alt-backspace.
|
||||
|
||||
The damage structure for the cursor is not deregistered before deallocation,
|
||||
causing a subsequent DamageUnregister () to segfault.
|
||||
================================================================================
|
||||
--- xorg-server-1.7.99/mi/misprite.c
|
||||
+++ xorg-server-1.7.99/mi/misprite.c
|
||||
@@ -384,6 +384,7 @@
|
||||
--- xorg-server-1.9.0/mi/misprite.c.orig 2010-07-23 21:40:56.000000000 +0200
|
||||
+++ xorg-server-1.9.0/mi/misprite.c 2010-08-23 15:44:51.000000000 +0200
|
||||
@@ -384,6 +384,7 @@ miSpriteCloseScreen (int i, ScreenPtr pS
|
||||
pScreen->InstallColormap = pScreenPriv->InstallColormap;
|
||||
pScreen->StoreColors = pScreenPriv->StoreColors;
|
||||
|
||||
+ miSpriteDisableDamage(pScreen, pScreenPriv);
|
||||
DamageDestroy (pScreenPriv->pDamage);
|
||||
|
||||
xfree (pScreenPriv);
|
||||
free(pScreenPriv);
|
||||
|
@ -21,10 +21,10 @@ even if idev is null. This takes down the xserver hard in some cases
|
||||
- if (!(*it)) /* end of list, not in the layout */
|
||||
+ if (idev)
|
||||
{
|
||||
- xfree(idev->driver);
|
||||
- xfree(idev->identifier);
|
||||
- free(idev->driver);
|
||||
- free(idev->identifier);
|
||||
- xf86optionListFree(idev->commonOptions);
|
||||
- xfree(idev);
|
||||
- free(idev);
|
||||
+ /* devices added through HAL aren't in the config layout */
|
||||
+ it = xf86ConfigLayout.inputs;
|
||||
+ while(*it && *it != idev)
|
||||
@ -32,10 +32,10 @@ even if idev is null. This takes down the xserver hard in some cases
|
||||
+
|
||||
+ if (!(*it)) /* end of list, not in the layout */
|
||||
+ {
|
||||
+ xfree(idev->driver);
|
||||
+ xfree(idev->identifier);
|
||||
+ free(idev->driver);
|
||||
+ free(idev->identifier);
|
||||
+ xf86optionListFree(idev->commonOptions);
|
||||
+ xfree(idev);
|
||||
+ free(idev);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
--- xorg-server-1.8.0/dix/window.c.orig 2010-08-07 17:45:14.000000000 +0200
|
||||
+++ xorg-server-1.8.0/dix/window.c 2010-08-07 17:52:58.000000000 +0200
|
||||
@@ -546,6 +546,48 @@ RealChildHead(WindowPtr pWin)
|
||||
return (NullWindow);
|
||||
--- xorg-server-1.9.0/dix/window.c.orig 2010-08-23 16:07:24.000000000 +0200
|
||||
+++ xorg-server-1.9.0/dix/window.c 2010-08-23 16:14:09.000000000 +0200
|
||||
@@ -535,6 +535,48 @@ RealChildHead(WindowPtr pWin)
|
||||
return NullWindow;
|
||||
}
|
||||
|
||||
+static int
|
||||
@ -12,23 +12,23 @@
|
||||
+ WindowPtr pChild;
|
||||
+
|
||||
+ if (!(pChild = pWin))
|
||||
+ return 0;
|
||||
+ return 0;
|
||||
+ while (1)
|
||||
+ {
|
||||
+ if (pChild->firstChild)
|
||||
+ {
|
||||
+ ++depth;
|
||||
+ pChild = pChild->firstChild;
|
||||
+ continue;
|
||||
+ } else if (depth > max_depth)
|
||||
+ max_depth = depth;
|
||||
+ while (!pChild->nextSib && (pChild != pWin)) {
|
||||
+ --depth;
|
||||
+ pChild = pChild->parent;
|
||||
+ }
|
||||
+ if (pChild == pWin)
|
||||
+ break;
|
||||
+ pChild = pChild->nextSib;
|
||||
+ if (pChild->firstChild)
|
||||
+ {
|
||||
+ ++depth;
|
||||
+ pChild = pChild->firstChild;
|
||||
+ continue;
|
||||
+ } else if (depth > max_depth)
|
||||
+ max_depth = depth;
|
||||
+ while (!pChild->nextSib && (pChild != pWin)) {
|
||||
+ --depth;
|
||||
+ pChild = pChild->parent;
|
||||
+ }
|
||||
+ if (pChild == pWin)
|
||||
+ break;
|
||||
+ pChild = pChild->nextSib;
|
||||
+ }
|
||||
+ return max_depth;
|
||||
+}
|
||||
@ -38,8 +38,8 @@
|
||||
+{
|
||||
+ int depth = 0;
|
||||
+ while (pWin) {
|
||||
+ ++depth;
|
||||
+ pWin = pWin->parent;
|
||||
+ ++depth;
|
||||
+ pWin = pWin->parent;
|
||||
+ }
|
||||
+ return depth;
|
||||
+}
|
||||
@ -49,7 +49,7 @@
|
||||
/*****
|
||||
* CreateWindow
|
||||
* Makes a window in response to client request
|
||||
@@ -566,6 +608,11 @@ CreateWindow(Window wid, WindowPtr pPare
|
||||
@@ -555,6 +597,11 @@ CreateWindow(Window wid, WindowPtr pPare
|
||||
PixmapFormatRec *format;
|
||||
WindowOptPtr ancwopt;
|
||||
|
||||
@ -61,13 +61,13 @@
|
||||
if (class == CopyFromParent)
|
||||
class = pParent->drawable.class;
|
||||
|
||||
@@ -2457,6 +2504,9 @@ ReparentWindow(WindowPtr pWin, WindowPtr
|
||||
@@ -2434,6 +2481,9 @@ ReparentWindow(WindowPtr pWin, WindowPtr
|
||||
int bw = wBorderWidth (pWin);
|
||||
ScreenPtr pScreen;
|
||||
|
||||
+ if (WindowDepth(pParent) + TreeDepth(pWin) >= MAX_TREE_DEPTH)
|
||||
+ return BadAlloc;
|
||||
+ return BadAlloc;
|
||||
+
|
||||
pScreen = pWin->drawable.pScreen;
|
||||
if (TraverseTree(pWin, CompareWIDs, (pointer)&pParent->drawable.id) == WT_STOPWALKING)
|
||||
return(BadMatch);
|
||||
return BadMatch;
|
||||
|
123
Use-external-tool-for-creating-backtraces-on-crashes.patch
Normal file
123
Use-external-tool-for-creating-backtraces-on-crashes.patch
Normal file
@ -0,0 +1,123 @@
|
||||
From bb4e768eaf8025d3ccf369cbad9a9b8be721e7ac Mon Sep 17 00:00:00 2001
|
||||
From: Matthias Hopf <mhopf@suse.de>
|
||||
Date: Wed, 25 Aug 2010 14:12:48 +0200
|
||||
Subject: [PATCH] Use external tool for creating backtraces on crashes if available.
|
||||
|
||||
This calls /usr/bin/xorg-backtrace to create reasonable commented backtraces
|
||||
with gdb. On errors it falls back to the generic method.
|
||||
|
||||
Signed-off-by: Matthias Hopf <mhopf@suse.de>
|
||||
---
|
||||
os/backtrace.c | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
1 files changed, 82 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/os/backtrace.c b/os/backtrace.c
|
||||
index 7ca6dab..1e3201a 100644
|
||||
--- a/os/backtrace.c
|
||||
+++ b/os/backtrace.c
|
||||
@@ -28,6 +28,81 @@
|
||||
#include "os.h"
|
||||
#include "misc.h"
|
||||
|
||||
+#include <sys/types.h>
|
||||
+#include <sys/wait.h>
|
||||
+#include <stdio.h>
|
||||
+#include <stdlib.h>
|
||||
+#include <unistd.h>
|
||||
+#include <errno.h>
|
||||
+
|
||||
+#define XORG_BACKTRACE "/usr/bin/xorg-backtrace"
|
||||
+
|
||||
+/* Call gdb to create reasonable(!) backtrace. Returns 0 if successfull. */
|
||||
+static int xorg_backtrace_gdb(void)
|
||||
+{
|
||||
+ static const char *xorg_backtrace = XORG_BACKTRACE;
|
||||
+ char pidstr[12];
|
||||
+ char fdname[] = "/tmp/xorg.XXXXXX";
|
||||
+ char buf[256];
|
||||
+ pid_t pid;
|
||||
+ int fd, status = -1, ret;
|
||||
+ FILE *f;
|
||||
+
|
||||
+ if (access (xorg_backtrace, R_OK | X_OK) != 0) {
|
||||
+ ErrorF ("%s not found, using internal backtrace system\n", xorg_backtrace);
|
||||
+ return 1;
|
||||
+ }
|
||||
+ if ( (fd = mkstemp (fdname)) == -1) {
|
||||
+ ErrorF ("xorg_backtrace_gdb internal error 1\n");
|
||||
+ return 1;
|
||||
+ }
|
||||
+ unlink (fdname);
|
||||
+ snprintf (pidstr, 12, "%d", getpid());
|
||||
+
|
||||
+ switch ( (pid = fork()) ) {
|
||||
+ case 0:
|
||||
+ close (0);
|
||||
+ close (1);
|
||||
+ close (2);
|
||||
+ dup2 (fd, 1);
|
||||
+ dup2 (fd, 2);
|
||||
+ close (fd);
|
||||
+ execl (xorg_backtrace, xorg_backtrace, pidstr, NULL);
|
||||
+ exit (-1);
|
||||
+ case -1:
|
||||
+ close (fd);
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ while (waitpid (pid, &status, 0) == -1 && errno == EINTR)
|
||||
+ ;
|
||||
+ if (WIFEXITED (status) && WEXITSTATUS (status) == 0)
|
||||
+ ret = 0;
|
||||
+ else {
|
||||
+ ErrorF ("%s failed with returncode %d\n", xorg_backtrace, WEXITSTATUS (status));
|
||||
+ ret = 1;
|
||||
+ }
|
||||
+
|
||||
+ lseek (fd, 0, SEEK_SET);
|
||||
+ if (! (f = fdopen (fd, "r"))) {
|
||||
+ ErrorF ("xorg_backtrace_gdb internal error 2\n");
|
||||
+ close (fd);
|
||||
+ return 1;
|
||||
+ }
|
||||
+ status = 0;
|
||||
+ while (fgets (buf, 256, f)) {
|
||||
+ status++;
|
||||
+ ErrorF("%s", buf);
|
||||
+ }
|
||||
+ fclose (f);
|
||||
+ if (status < 10 && ret == 0) {
|
||||
+ ErrorF ("%s only produced %d lines of output\n", xorg_backtrace, status);
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
#ifdef HAVE_BACKTRACE
|
||||
#ifndef _GNU_SOURCE
|
||||
#define _GNU_SOURCE
|
||||
@@ -41,6 +116,10 @@ void xorg_backtrace(void)
|
||||
const char *mod;
|
||||
int size, i;
|
||||
Dl_info info;
|
||||
+
|
||||
+ if (xorg_backtrace_gdb () == 0)
|
||||
+ return;
|
||||
+
|
||||
ErrorF("\nBacktrace:\n");
|
||||
size = backtrace(array, 64);
|
||||
for (i = 0; i < size; i++) {
|
||||
@@ -182,6 +261,9 @@ static int xorg_backtrace_pstack(void) {
|
||||
|
||||
void xorg_backtrace(void) {
|
||||
|
||||
+ if (xorg_backtrace_gdb () == 0)
|
||||
+ return;
|
||||
+
|
||||
ErrorF("\nBacktrace:\n");
|
||||
|
||||
# ifdef HAVE_PSTACK
|
||||
--
|
||||
1.6.0.2
|
||||
|
@ -49,9 +49,9 @@ Signed-off-by: Yan Li <yan.i.li@intel.com>
|
||||
|
||||
Unless the X server is modified, sharing this directory between servers on
|
||||
different hosts could cause problems.
|
||||
--- xorg-server-1.7.99/xkb/ddxLoad.c
|
||||
+++ xorg-server-1.7.99/xkb/ddxLoad.c
|
||||
@@ -30,6 +30,12 @@
|
||||
--- xorg-server-1.9.0/xkb/ddxLoad.c.orig 2010-07-14 22:23:17.000000000 +0200
|
||||
+++ xorg-server-1.9.0/xkb/ddxLoad.c 2010-08-23 15:23:47.000000000 +0200
|
||||
@@ -30,6 +30,12 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
#include <xkb-config.h>
|
||||
|
||||
@ -64,7 +64,7 @@ Signed-off-by: Yan Li <yan.i.li@intel.com>
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include <X11/X.h>
|
||||
@@ -43,24 +49,13 @@
|
||||
@@ -43,24 +49,13 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
#define XKBSRV_NEED_FILE_FUNCS
|
||||
#include <xkbsrv.h>
|
||||
#include <X11/extensions/XI.h>
|
||||
@ -90,7 +90,7 @@ Signed-off-by: Yan Li <yan.i.li@intel.com>
|
||||
#define PRE_ERROR_MSG "\"The XKEYBOARD keymap compiler (xkbcomp) reports:\""
|
||||
#define ERROR_PREFIX "\"> \""
|
||||
#define POST_ERROR_MSG1 "\"Errors from xkbcomp are not fatal to the X server\""
|
||||
@@ -175,6 +170,45 @@
|
||||
@@ -175,6 +170,45 @@ OutputDirectory(
|
||||
}
|
||||
|
||||
static Bool
|
||||
@ -136,7 +136,7 @@ Signed-off-by: Yan Li <yan.i.li@intel.com>
|
||||
XkbDDXCompileKeymapByNames( XkbDescPtr xkb,
|
||||
XkbComponentNamesPtr names,
|
||||
unsigned want,
|
||||
@@ -183,7 +217,11 @@
|
||||
@@ -183,7 +217,11 @@ XkbDDXCompileKeymapByNames( XkbDescPtr
|
||||
int nameRtrnLen)
|
||||
{
|
||||
FILE * out;
|
||||
@ -145,11 +145,11 @@ Signed-off-by: Yan Li <yan.i.li@intel.com>
|
||||
+ char * tmpXkmFile = NULL;
|
||||
+ char * canonicalXkmFileName = NULL;
|
||||
+ char sha1Asc[SHA_DIGEST_LENGTH*2+1], xkbKeyMapBuf[100*1024];
|
||||
+ int ret, result;
|
||||
+ int ret, result;
|
||||
|
||||
const char *emptystring = "";
|
||||
const char *xkbbasedirflag = emptystring;
|
||||
@@ -194,15 +232,70 @@
|
||||
char *xkbbasedirflag = NULL;
|
||||
@@ -194,15 +232,70 @@ XkbDDXCompileKeymapByNames( XkbDescPtr
|
||||
/* WIN32 has no popen. The input must be stored in a file which is
|
||||
used as input for xkbcomp. xkbcomp does not read from stdin. */
|
||||
char tmpname[PATH_MAX];
|
||||
@ -223,15 +223,15 @@ Signed-off-by: Yan Li <yan.i.li@intel.com>
|
||||
#ifdef WIN32
|
||||
strcpy(tmpname, Win32TempDir());
|
||||
strcat(tmpname, "\\xkb_XXXXXX");
|
||||
@@ -225,19 +318,30 @@
|
||||
@@ -225,14 +318,20 @@ XkbDDXCompileKeymapByNames( XkbDescPtr
|
||||
}
|
||||
}
|
||||
|
||||
+ if ( (tmpXkmFile = tempnam(xkm_output_dir, NULL)) == NULL ) {
|
||||
+ ErrorF("[xkb] Can't generate temp xkm file name");
|
||||
+ result = FALSE;
|
||||
+ goto _ret;
|
||||
+ }
|
||||
+ ErrorF("[xkb] Can't generate temp xkm file name");
|
||||
+ result = FALSE;
|
||||
+ goto _ret;
|
||||
+ }
|
||||
+
|
||||
buf = Xprintf("\"%s%sxkbcomp\" -w %d %s -xkm \"%s\" "
|
||||
- "-em1 %s -emp %s -eml %s \"%s%s.xkm\"",
|
||||
@ -239,25 +239,29 @@ Signed-off-by: Yan Li <yan.i.li@intel.com>
|
||||
xkbbindir, xkbbindirsep,
|
||||
( (xkbDebugFlags < 2) ? 1 :
|
||||
((xkbDebugFlags > 10) ? 10 : (int)xkbDebugFlags) ),
|
||||
- xkbbasedirflag, xkmfile,
|
||||
+ xkbbasedirflag, xkbfile,
|
||||
- xkbbasedirflag ? xkbbasedirflag : "", xkmfile,
|
||||
+ xkbbasedirflag ? xkbbasedirflag : "", xkbfile,
|
||||
PRE_ERROR_MSG, ERROR_PREFIX, POST_ERROR_MSG1,
|
||||
- xkm_output_dir, keymap);
|
||||
+ tmpXkmFile);
|
||||
|
||||
if (xkbbasedirflag != emptystring) {
|
||||
xfree(xkbbasedirflag);
|
||||
free(xkbbasedirflag);
|
||||
|
||||
@@ -240,7 +339,12 @@ XkbDDXCompileKeymapByNames( XkbDescPtr
|
||||
LogMessage(X_ERROR, "XKB: Could not invoke xkbcomp: not enough memory\n");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
-
|
||||
+
|
||||
+ /* there's a potential race condition between calling tempnam()
|
||||
+ and invoking xkbcomp to write the result file (potential temp
|
||||
+ file name conflicts), but since xkbcomp is a standalone
|
||||
+ program, we have to live with this */
|
||||
+
|
||||
+
|
||||
#ifndef WIN32
|
||||
out= Popen(buf,"w");
|
||||
#else
|
||||
@@ -245,31 +349,42 @@
|
||||
@@ -248,31 +352,42 @@ XkbDDXCompileKeymapByNames( XkbDescPtr
|
||||
#endif
|
||||
|
||||
if (out!=NULL) {
|
||||
@ -287,27 +291,26 @@ Signed-off-by: Yan Li <yan.i.li@intel.com>
|
||||
- if (nameRtrn) {
|
||||
- strncpy(nameRtrn,keymap,nameRtrnLen);
|
||||
- nameRtrn[nameRtrnLen-1]= '\0';
|
||||
- }
|
||||
- if (buf != NULL)
|
||||
- xfree (buf);
|
||||
- return TRUE;
|
||||
+ /* if canonicalXkmFileName already exists now, we simply
|
||||
+ overwrite it, this is OK */
|
||||
+ ret = rename(tmpXkmFile, canonicalXkmFileName);
|
||||
+ if (0 != ret) {
|
||||
+ ErrorF("[xkb] Can't rename %s to %s, error: %s\n",
|
||||
+ /* if canonicalXkmFileName already exists now, we simply
|
||||
+ overwrite it, this is OK */
|
||||
+ ret = rename(tmpXkmFile, canonicalXkmFileName);
|
||||
+ if (0 != ret) {
|
||||
+ ErrorF("[xkb] Can't rename %s to %s, error: %s\n",
|
||||
+ tmpXkmFile, canonicalXkmFileName,
|
||||
+ strerror(errno));
|
||||
+
|
||||
+ /* in case of error, don't unlink tmpXkmFile, leave it
|
||||
+ for debugging */
|
||||
+ /* in case of error, don't unlink tmpXkmFile, leave it
|
||||
+ for debugging */
|
||||
+
|
||||
+ result = FALSE;
|
||||
+ goto _ret;
|
||||
+ }
|
||||
+
|
||||
+ result = TRUE;
|
||||
+ result = FALSE;
|
||||
+ goto _ret;
|
||||
}
|
||||
- if (buf != NULL)
|
||||
- free(buf);
|
||||
- return TRUE;
|
||||
+
|
||||
+ result = TRUE;
|
||||
+ goto _ret;
|
||||
}
|
||||
else
|
||||
- LogMessage(X_ERROR, "Error compiling keymap (%s)\n", keymap);
|
||||
@ -315,12 +318,12 @@ Signed-off-by: Yan Li <yan.i.li@intel.com>
|
||||
#ifdef WIN32
|
||||
/* remove the temporary file */
|
||||
unlink(tmpname);
|
||||
@@ -286,7 +401,17 @@
|
||||
@@ -289,7 +404,17 @@ XkbDDXCompileKeymapByNames( XkbDescPtr
|
||||
nameRtrn[0]= '\0';
|
||||
if (buf != NULL)
|
||||
xfree (buf);
|
||||
free(buf);
|
||||
- return FALSE;
|
||||
+ result = FALSE;
|
||||
+ result = FALSE;
|
||||
+
|
||||
+_ret:
|
||||
+ if (tmpXkmFile)
|
||||
@ -334,7 +337,7 @@ Signed-off-by: Yan Li <yan.i.li@intel.com>
|
||||
}
|
||||
|
||||
static FILE *
|
||||
@@ -370,7 +495,6 @@
|
||||
@@ -373,7 +498,6 @@ unsigned missing;
|
||||
DebugF("Loaded XKB keymap %s, defined=0x%x\n",fileName,(*xkbRtrn)->defined);
|
||||
}
|
||||
fclose(file);
|
||||
|
@ -13,9 +13,9 @@ Index: dix/events.c
|
||||
+ int d, min = (~0U >> 1), dx2, dy2, x_r, y_r;
|
||||
|
||||
pSprite = pDev->spriteInfo->sprite;
|
||||
if (POINT_IN_REGION(pSprite->hot.pScreen, shape, x, y, &box))
|
||||
if (RegionContainsPoint(shape, x, y, &box))
|
||||
return;
|
||||
- box = *REGION_EXTENTS(pSprite->hot.pScreen, shape);
|
||||
- box = *RegionExtents(shape);
|
||||
- /* this is rather crude */
|
||||
- do {
|
||||
- x += incx;
|
||||
@ -99,7 +99,7 @@ Index: dix/events.c
|
||||
- else if (y < box.y1)
|
||||
- return; /* should never get here! */
|
||||
}
|
||||
- } while (!POINT_IN_REGION(pSprite->hot.pScreen, shape, x, y, &box));
|
||||
- } while (!RegionContainsPoint(shape, x, y, &box));
|
||||
- *px = x;
|
||||
- *py = y;
|
||||
+ }
|
||||
|
@ -1,12 +0,0 @@
|
||||
diff -Nru xorg-server-1.8.0.orig/hw/dmx/dmxextension.c xorg-server-1.8.0/hw/dmx/dmxextension.c
|
||||
--- xorg-server-1.8.0.orig/hw/dmx/dmxextension.c 2009-11-04 17:25:50.000000000 +0100
|
||||
+++ xorg-server-1.8.0/hw/dmx/dmxextension.c 2010-04-23 14:31:56.000000000 +0200
|
||||
@@ -1160,7 +1160,7 @@
|
||||
len_images);
|
||||
|
||||
/* Clean up */
|
||||
- free(len_images);
|
||||
+ free(images);
|
||||
free(gids);
|
||||
free(glyphs);
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
--- hw/xfree86/common/xf86AutoConfig.c
|
||||
+++ hw/xfree86/common/xf86AutoConfig.c
|
||||
--- hw/xfree86/common/xf86pciBus.c
|
||||
+++ hw/xfree86/common/xf86pciBus.c
|
||||
@@ -176,7 +176,11 @@
|
||||
case 0x1142: driverList[0] = "apm"; break;
|
||||
case 0xedd8: driverList[0] = "ark"; break;
|
||||
|
@ -1,296 +0,0 @@
|
||||
From 6dbae4f4841ddfb70d6f2a973431f34d2b3cc4c0 Mon Sep 17 00:00:00 2001
|
||||
From: Egbert Eich <eich@freedesktop.org>
|
||||
Date: Mon, 23 Mar 2009 12:58:28 +0100
|
||||
Subject: [PATCH] Fixed SYNC extension trigger BlockHandler test.
|
||||
|
||||
* Reworked ComputeBracketValues():
|
||||
+ Removed 'startOver' flag: we always seem to want to start
|
||||
over, there doesn't seem to be a reason why we should keep the old
|
||||
bracket values, moreover when this flag was set the semantics of
|
||||
setting the bracket values for the selected sync counter were flawed
|
||||
anyhow:
|
||||
the bracket whose value hadn't changed (if the other one did) was simply
|
||||
deleted.
|
||||
+ Rewrote the bracket value calculation for Postitive/NegativeTransition:
|
||||
the calulation didn't cover all possible cases and was flawed anyhow.
|
||||
* Reworked previous patch to IdleTimeBlockHandler()
|
||||
(commit: 1f4fb022)
|
||||
+ Simplified code.
|
||||
+ Modified heuristics:
|
||||
pIdleTimeValueLess does not exclude pIdleTimeValueGreater: if no wakeup
|
||||
is scheduled for the former one check if there is one for the latter.
|
||||
+ If no immediate wakeup is scheduled at all find schedule a wakeup for
|
||||
the next time an idle counter might trigger, do not wait for the latest
|
||||
idle counter to trigger.
|
||||
This fixes a problem introduced with commit 1f4fb022 where an idle counter
|
||||
expires unnoticed.
|
||||
Index: xorg-server-1.6.3.901/Xext/sync.c
|
||||
================================================================================
|
||||
--- xorg-server-1.7.99/Xext/sync.c
|
||||
+++ xorg-server-1.7.99/Xext/sync.c
|
||||
@@ -94,7 +94,7 @@
|
||||
#define XSyncCAAllTrigger \
|
||||
(XSyncCACounter | XSyncCAValueType | XSyncCAValue | XSyncCATestType)
|
||||
|
||||
-static void SyncComputeBracketValues(SyncCounter *, Bool);
|
||||
+static void SyncComputeBracketValues(SyncCounter *);
|
||||
|
||||
static void SyncInitServerTime(void);
|
||||
|
||||
@@ -167,7 +167,7 @@
|
||||
}
|
||||
|
||||
if (IsSystemCounter(pTrigger->pCounter))
|
||||
- SyncComputeBracketValues(pTrigger->pCounter, /*startOver*/ TRUE);
|
||||
+ SyncComputeBracketValues(pTrigger->pCounter);
|
||||
}
|
||||
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
pTrigger->pCounter->pTriglist = pCur;
|
||||
|
||||
if (IsSystemCounter(pTrigger->pCounter))
|
||||
- SyncComputeBracketValues(pTrigger->pCounter, /*startOver*/ TRUE);
|
||||
+ SyncComputeBracketValues(pTrigger->pCounter);
|
||||
|
||||
return Success;
|
||||
}
|
||||
@@ -351,7 +351,7 @@
|
||||
}
|
||||
else if (IsSystemCounter(pCounter))
|
||||
{
|
||||
- SyncComputeBracketValues(pCounter, /*startOver*/ TRUE);
|
||||
+ SyncComputeBracketValues(pCounter);
|
||||
}
|
||||
|
||||
return Success;
|
||||
@@ -640,13 +640,14 @@
|
||||
for (ptl = pCounter->pTriglist; ptl; ptl = pnext)
|
||||
{
|
||||
pnext = ptl->next;
|
||||
- if ((*ptl->pTrigger->CheckTrigger)(ptl->pTrigger, oldval))
|
||||
+ if ((*ptl->pTrigger->CheckTrigger)(ptl->pTrigger, oldval)) {
|
||||
(*ptl->pTrigger->TriggerFired)(ptl->pTrigger);
|
||||
+ }
|
||||
}
|
||||
|
||||
if (IsSystemCounter(pCounter))
|
||||
{
|
||||
- SyncComputeBracketValues(pCounter, /* startOver */ FALSE);
|
||||
+ SyncComputeBracketValues(pCounter);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -913,7 +914,7 @@
|
||||
}
|
||||
|
||||
static void
|
||||
-SyncComputeBracketValues(SyncCounter *pCounter, Bool startOver)
|
||||
+SyncComputeBracketValues(SyncCounter *pCounter)
|
||||
{
|
||||
SyncTriggerList *pCur;
|
||||
SyncTrigger *pTrigger;
|
||||
@@ -930,58 +931,53 @@
|
||||
if (ct == XSyncCounterNeverChanges)
|
||||
return;
|
||||
|
||||
- if (startOver)
|
||||
- {
|
||||
- XSyncMaxValue(&psci->bracket_greater);
|
||||
- XSyncMinValue(&psci->bracket_less);
|
||||
- }
|
||||
+ XSyncMaxValue(&psci->bracket_greater);
|
||||
+ XSyncMinValue(&psci->bracket_less);
|
||||
+
|
||||
|
||||
for (pCur = pCounter->pTriglist; pCur; pCur = pCur->next)
|
||||
{
|
||||
pTrigger = pCur->pTrigger;
|
||||
-
|
||||
- if (pTrigger->test_type == XSyncPositiveComparison &&
|
||||
- ct != XSyncCounterNeverIncreases)
|
||||
- {
|
||||
- if (XSyncValueLessThan(pCounter->value, pTrigger->test_value) &&
|
||||
- XSyncValueLessThan(pTrigger->test_value,
|
||||
- psci->bracket_greater))
|
||||
- {
|
||||
- psci->bracket_greater = pTrigger->test_value;
|
||||
- pnewgtval = &psci->bracket_greater;
|
||||
- }
|
||||
- }
|
||||
- else if (pTrigger->test_type == XSyncNegativeComparison &&
|
||||
- ct != XSyncCounterNeverDecreases)
|
||||
- {
|
||||
- if (XSyncValueGreaterThan(pCounter->value, pTrigger->test_value) &&
|
||||
- XSyncValueGreaterThan(pTrigger->test_value,
|
||||
- psci->bracket_less))
|
||||
- {
|
||||
- psci->bracket_less = pTrigger->test_value;
|
||||
- pnewltval = &psci->bracket_less;
|
||||
- }
|
||||
- }
|
||||
- else if (pTrigger->test_type == XSyncNegativeTransition &&
|
||||
- ct != XSyncCounterNeverIncreases)
|
||||
- {
|
||||
- if (XSyncValueGreaterThan(pCounter->value, pTrigger->test_value) &&
|
||||
- XSyncValueGreaterThan(pTrigger->test_value, psci->bracket_less))
|
||||
- {
|
||||
+
|
||||
+ if ( ( (pTrigger->test_type == XSyncPositiveComparison)
|
||||
+ && ( XSyncValueGreaterOrEqual(pCounter->value, pTrigger->test_value)
|
||||
+ || (ct != XSyncCounterNeverIncreases
|
||||
+ && XSyncValueLessThan(pCounter->value, pTrigger->test_value))
|
||||
+ )
|
||||
+ )
|
||||
+ || ((pTrigger->test_type == XSyncPositiveTransition)
|
||||
+ && ( ( ct != XSyncCounterNeverDecreases
|
||||
+ && XSyncValueGreaterOrEqual(pCounter->value, pTrigger->test_value))
|
||||
+ || ( ct != XSyncCounterNeverIncreases
|
||||
+ && XSyncValueLessThan(pCounter->value, pTrigger->test_value))
|
||||
+ )
|
||||
+ )
|
||||
+ ) {
|
||||
+ if (XSyncValueLessThan(pTrigger->test_value,
|
||||
+ psci->bracket_greater)) {
|
||||
+ psci->bracket_greater = pTrigger->test_value;
|
||||
+ pnewgtval = &psci->bracket_greater;
|
||||
+ }
|
||||
+ } else if ( ( (pTrigger->test_type == XSyncNegativeComparison)
|
||||
+ && ( XSyncValueLessOrEqual(pCounter->value, pTrigger->test_value)
|
||||
+ || (ct != XSyncCounterNeverDecreases
|
||||
+ && XSyncValueGreaterThan(pCounter->value, pTrigger->test_value))
|
||||
+ )
|
||||
+ )
|
||||
+ || ((pTrigger->test_type == XSyncNegativeTransition)
|
||||
+ && ( ( ct != XSyncCounterNeverDecreases
|
||||
+ && XSyncValueGreaterOrEqual(pCounter->value, pTrigger->test_value))
|
||||
+ || ( ct != XSyncCounterNeverIncreases
|
||||
+ && XSyncValueLessThan(pCounter->value, pTrigger->test_value))
|
||||
+ )
|
||||
+ )
|
||||
+ ) {
|
||||
+ if (XSyncValueGreaterThan(pTrigger->test_value,
|
||||
+ psci->bracket_less)) {
|
||||
psci->bracket_less = pTrigger->test_value;
|
||||
pnewltval = &psci->bracket_less;
|
||||
}
|
||||
}
|
||||
- else if (pTrigger->test_type == XSyncPositiveTransition &&
|
||||
- ct != XSyncCounterNeverDecreases)
|
||||
- {
|
||||
- if (XSyncValueLessThan(pCounter->value, pTrigger->test_value) &&
|
||||
- XSyncValueLessThan(pTrigger->test_value, psci->bracket_greater))
|
||||
- {
|
||||
- psci->bracket_greater = pTrigger->test_value;
|
||||
- pnewgtval = &psci->bracket_greater;
|
||||
- }
|
||||
- }
|
||||
} /* end for each trigger */
|
||||
|
||||
if (pnewgtval || pnewltval)
|
||||
@@ -2277,11 +2273,17 @@
|
||||
}
|
||||
|
||||
static void
|
||||
-IdleTimeBlockHandler(pointer env, struct timeval **wt, pointer LastSelectMask)
|
||||
-{
|
||||
- XSyncValue idle, old_idle;
|
||||
- SyncTriggerList *list = IdleTimeCounter->pTriglist;
|
||||
- SyncTrigger *trig;
|
||||
+IdleTimeBlockHandler (pointer env,
|
||||
+ struct timeval **wt,
|
||||
+ pointer LastSelectMask)
|
||||
+{
|
||||
+ XSyncValue idle, old_idle;
|
||||
+ SyncTriggerList *list = IdleTimeCounter->pTriglist;
|
||||
+ SyncTrigger *trig;
|
||||
+ unsigned long timeout = -1;
|
||||
+ XSyncValue value;
|
||||
+ Bool overflow;
|
||||
+
|
||||
|
||||
if (!pIdleTimeValueLess && !pIdleTimeValueGreater)
|
||||
return;
|
||||
@@ -2299,46 +2301,57 @@
|
||||
* want level or edge trigger. Check the trigger list against the
|
||||
* current idle time, and if any succeed, bomb out of select()
|
||||
* immediately so we can reschedule.
|
||||
+ * NOTE: we need to check trigger because the idle timer can go
|
||||
+ * both ways (XSyncCounterUnrestricted) so that we need to set
|
||||
+ * pIdleTimeValueLess in ComputeBracketValues() in the edge
|
||||
+ * triggered case even if the idle timer is already less.
|
||||
*/
|
||||
-
|
||||
- for (list = IdleTimeCounter->pTriglist; list; list = list->next) {
|
||||
+ for (list = IdleTimeCounter->pTriglist; list; list = list->next) {
|
||||
trig = list->pTrigger;
|
||||
if (trig->CheckTrigger(trig, old_idle)) {
|
||||
- AdjustWaitForDelay(wt, 0);
|
||||
- break;
|
||||
+ AdjustWaitForDelay(wt, 0);
|
||||
+ IdleTimeCounter->value = old_idle; /* pop */
|
||||
+ return;
|
||||
}
|
||||
}
|
||||
}
|
||||
- else if (pIdleTimeValueGreater)
|
||||
+ if (pIdleTimeValueGreater)
|
||||
{
|
||||
- /*
|
||||
- * There's a threshold in the positive direction. If we've been
|
||||
- * idle less than it, schedule a wakeup for sometime in the future.
|
||||
- * If we've been idle more than it, and someone wants to know about
|
||||
- * that level-triggered, schedule an immediate wakeup.
|
||||
- */
|
||||
- unsigned long timeout = -1;
|
||||
-
|
||||
- if (XSyncValueLessThan (idle, *pIdleTimeValueGreater)) {
|
||||
- XSyncValue value;
|
||||
- Bool overflow;
|
||||
+ /*
|
||||
+ * There's a threshold in the positive direction.
|
||||
+ * If we've been idle more than it, and someone wants to know about
|
||||
+ * that level-triggered, schedule an immediate wakeup.
|
||||
+ * NOTE: we need to check trigger because the idle timer can go
|
||||
+ * both ways (XSyncCounterUnrestricted) so that we need to set
|
||||
+ * pIdleTimeValueGreater in ComputeBracketValues() in the edge
|
||||
+ * triggered case even if the idle timer is already greater.
|
||||
+ */
|
||||
|
||||
- XSyncValueSubtract (&value, *pIdleTimeValueGreater,
|
||||
- idle, &overflow);
|
||||
- timeout = min(timeout, XSyncValueLow32 (value));
|
||||
- } else {
|
||||
+ if (XSyncValueGreaterOrEqual (idle, *pIdleTimeValueGreater)) {
|
||||
for (list = IdleTimeCounter->pTriglist; list; list = list->next) {
|
||||
- trig = list->pTrigger;
|
||||
+ trig = list->pTrigger;
|
||||
if (trig->CheckTrigger(trig, old_idle)) {
|
||||
- timeout = min(timeout, 0);
|
||||
- break;
|
||||
+ AdjustWaitForDelay (wt, 0);
|
||||
+ IdleTimeCounter->value = old_idle; /* pop */
|
||||
+ return;
|
||||
}
|
||||
}
|
||||
}
|
||||
-
|
||||
- AdjustWaitForDelay (wt, timeout);
|
||||
}
|
||||
|
||||
+ /*
|
||||
+ * If we don't have to wake up immediately we schedule a wakeup for the
|
||||
+ * next time a trigger expires.
|
||||
+ */
|
||||
+ for (list = IdleTimeCounter->pTriglist; list; list = list->next) {
|
||||
+ trig = list->pTrigger;
|
||||
+ if (XSyncValueLessThan (idle, trig->test_value)) {
|
||||
+ XSyncValueSubtract (&value, trig->test_value,
|
||||
+ idle, &overflow);
|
||||
+ timeout = min(timeout,XSyncValueLow32 (value));
|
||||
+ }
|
||||
+ }
|
||||
+ AdjustWaitForDelay (wt, timeout);
|
||||
IdleTimeCounter->value = old_idle; /* pop */
|
||||
}
|
||||
|
14
fpic.diff
14
fpic.diff
@ -1,13 +1,11 @@
|
||||
Index: hw/xfree86/parser/Makefile.am
|
||||
================================================================================
|
||||
--- hw/xfree86/parser/Makefile.am
|
||||
+++ hw/xfree86/parser/Makefile.am
|
||||
--- hw/xfree86/parser/Makefile.am.orig 2010-06-06 03:16:52.000000000 +0200
|
||||
+++ hw/xfree86/parser/Makefile.am 2010-08-23 14:05:50.000000000 +0200
|
||||
@@ -34,7 +34,7 @@
|
||||
$(INTERNAL_SOURCES)
|
||||
libxf86config_a_CFLAGS = $(AM_CFLAGS)
|
||||
|
||||
-AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
|
||||
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS) -fPIC
|
||||
-AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS) \
|
||||
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS) -fPIC \
|
||||
-DSYSCONFDIR=\"$(sysconfdir)\" \
|
||||
-DDATADIR=\"$(datadir)\"
|
||||
|
||||
EXTRA_DIST = \
|
||||
Configint.h \
|
||||
|
@ -1,13 +0,0 @@
|
||||
Index: xorg-server-1.8.0/hw/xfree86/modes/xf86Cursors.c
|
||||
===================================================================
|
||||
--- xorg-server-1.8.0.orig/hw/xfree86/modes/xf86Cursors.c
|
||||
+++ xorg-server-1.8.0/hw/xfree86/modes/xf86Cursors.c
|
||||
@@ -611,7 +611,7 @@ xf86_reload_cursors (ScreenPtr screen)
|
||||
cursor_screen_priv = dixLookupPrivate(&screen->devPrivates,
|
||||
xf86CursorScreenKey);
|
||||
/* return if HW cursor is inactive, to avoid displaying two cursors */
|
||||
- if (!cursor_screen_priv->isUp)
|
||||
+ if (!cursor_screen_priv || !cursor_screen_priv->isUp)
|
||||
return;
|
||||
|
||||
scrn = xf86Screens[screen->myNum];
|
15
vbe-bufferoverflow.diff
Normal file
15
vbe-bufferoverflow.diff
Normal file
@ -0,0 +1,15 @@
|
||||
--- xorg-server-1.9.0/hw/xfree86/vbe/vbe.c.orig 2010-08-23 15:55:52.000000000 +0000
|
||||
+++ xorg-server-1.9.0/hw/xfree86/vbe/vbe.c 2010-08-23 15:56:40.000000000 +0000
|
||||
@@ -586,10 +586,10 @@ VBEGetModeInfo(vbeInfoPtr pVbe, int mode
|
||||
memcpy(&block->Reserved2, ((char*)pVbe->memory) + 66, 188);
|
||||
}
|
||||
else
|
||||
- memcpy(&block->LinBytesPerScanLine, ((char*)pVbe->memory) + 50, 206);
|
||||
+ memcpy(&block->LinBytesPerScanLine, ((char*)pVbe->memory) + 50, 205);
|
||||
}
|
||||
else
|
||||
- memcpy(&block->PhysBasePtr, ((char*)pVbe->memory) + 40, 216);
|
||||
+ memcpy(&block->PhysBasePtr, ((char*)pVbe->memory) + 40, 215);
|
||||
|
||||
return block;
|
||||
}
|
127
xorg-backtrace
Normal file
127
xorg-backtrace
Normal file
@ -0,0 +1,127 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
$version = "1.0";
|
||||
$timeout = 5;
|
||||
@pkgs = ( "xorg-x11-server", "xorg-x11-driver-video", "xorg-x11-driver-input",
|
||||
"libpixman-1-0", "libpciaccess0" );
|
||||
$xtracmds= "/etc/X11/xorg-backtrace-cmds";
|
||||
|
||||
|
||||
$pid=$ARGV[0];
|
||||
if ($pid == 0) {
|
||||
print "Usage: $0 <pid>\n";
|
||||
exit 1;
|
||||
}
|
||||
|
||||
|
||||
if (! -e "/usr/bin/gdb") {
|
||||
print "Install gdb to get reasonable backtraces\n";
|
||||
exit 2;
|
||||
}
|
||||
|
||||
$SIG{ALRM} = sub { die "timeout starting gdb" };
|
||||
alarm $timeout;
|
||||
|
||||
open STDERR, ">&STDOUT";
|
||||
|
||||
use FileHandle;
|
||||
use IPC::Open2;
|
||||
$gdb = open2 (*R, *W, "/usr/bin/gdb -n -p $pid");
|
||||
|
||||
$SIG{ALRM} = sub { kill QUIT, $gdb; sleep 1; kill KILL, $gdb; die "timeout using gdb" };
|
||||
alarm $timeout;
|
||||
|
||||
|
||||
print "\n==================== GDB Backtrace ============\n\n";
|
||||
print "Done by $0 V$version\n\n";
|
||||
|
||||
$needpkgs=0;
|
||||
for $p (@pkgs) {
|
||||
next if system ("rpm", "-q", "--quiet", "$p-debuginfo") == 0 &&
|
||||
system ("rpm", "-q", "--quiet", "$p-debugsource") == 0;
|
||||
print "Install following debug packages to improve backtrace:\n" unless $needpkgs;
|
||||
$needpkgs++;
|
||||
print "\t$p-debug*\n";
|
||||
}
|
||||
print "\n" if $needpkgs;
|
||||
|
||||
print W "set prompt\necho \\n===info\\n\n";
|
||||
#print W "info files\necho ===files\\n\n";
|
||||
print W "thread apply all bt full\necho ===btend\\n\n";
|
||||
|
||||
$_=<R>; # GNU gdb version
|
||||
print;
|
||||
|
||||
while (<R>) {
|
||||
last if /^===info/;
|
||||
print if /^This GDB was configured as/;
|
||||
}
|
||||
|
||||
#print "\n==================== Files ====================\n\n";
|
||||
#while (<R>) {
|
||||
# last if /^===files/;
|
||||
# print;
|
||||
#}
|
||||
|
||||
|
||||
print "\n==================== Backtrace ================\n";
|
||||
$fno = "";
|
||||
$fls = 0;
|
||||
$o = "";
|
||||
$use = 0;
|
||||
while (<R>) {
|
||||
last if /^===btend/;
|
||||
if (/^#(\d+)\s/) {
|
||||
$fno = $1;
|
||||
$o .= "\n";
|
||||
$o .= "===l".($fno-1)."\n" if $use;
|
||||
$o .= "\n";
|
||||
$fls = $fno+1 if /\bxorg_backtrace \(/ || /\bOsSigHandler \(/;
|
||||
$use = 1;
|
||||
}
|
||||
$line{$fno} = $1 if $line{$fno} == 0 && /:(\d+)\s*$/;
|
||||
$o .= $_;
|
||||
$use = 0 if /^No symbol table info available/;
|
||||
}
|
||||
$o .="\n===l$fno";
|
||||
|
||||
for $i ($fls..$fno) {
|
||||
print W "frame $i\necho ===fs$i\\n\nlist\necho ===fe$i\\n\n";
|
||||
while (<R>) {
|
||||
last if /^===fs$i\b/;
|
||||
}
|
||||
$r = "";
|
||||
while (<R>) {
|
||||
last if /^===fe$i\b/;
|
||||
$r .= $_;
|
||||
}
|
||||
if ($line{$i} > 0) {
|
||||
$r =~ s/^$line{$i}\b/$line{$i} */m;
|
||||
}
|
||||
$o =~ s/^===l$i$/$r/m;
|
||||
}
|
||||
|
||||
if ($fls > 0) {
|
||||
for $i (0..$fls-1) {
|
||||
$o =~ s/^(#$i\s.*?)\n.*?\n#/$1\n\n#/ms;
|
||||
}
|
||||
}
|
||||
$o =~ s/^===l.*$//mg;
|
||||
|
||||
print "$o";
|
||||
|
||||
if (-e $xtracmds) {
|
||||
print W "source -v $xtracmds\necho ===cmds\\n\n";
|
||||
print "\n==================== Extra Commands ===========\n\n";
|
||||
while (<R>) {
|
||||
last if /^===cmds/;
|
||||
print unless /^\+echo ===cmds/;
|
||||
}
|
||||
}
|
||||
|
||||
print "\n==================== Backtrace End ============\n\n";
|
||||
close R;
|
||||
close W;
|
||||
|
||||
exit 0;
|
||||
|
@ -1,7 +1,7 @@
|
||||
Index: xorg-server-1.6.3.901/hw/xfree86/common/xf86AutoConfig.c
|
||||
================================================================================
|
||||
--- xorg-server-1.7.99/hw/xfree86/common/xf86AutoConfig.c
|
||||
+++ xorg-server-1.7.99/hw/xfree86/common/xf86AutoConfig.c
|
||||
Index: xorg-server-1.6.3.901/hw/xfree86/common/xf86pciBus.c
|
||||
===============================================================================
|
||||
--- xorg-server-1.7.99/hw/xfree86/common/xf86pciBus.c
|
||||
+++ xorg-server-1.7.99/hw/xfree86/common/xf86pciBus.c
|
||||
@@ -186,12 +186,14 @@
|
||||
case 0x3d3d: driverList[0] = "glint"; break;
|
||||
case 0x105d: driverList[0] = "i128"; break;
|
||||
|
@ -1,45 +0,0 @@
|
||||
--- config/10-evdev.conf 2010/04/08 09:38:26 1.1
|
||||
+++ config/10-evdev.conf 2010/04/08 09:38:31
|
||||
@@ -1,8 +1,40 @@
|
||||
#
|
||||
# Catch-all evdev loader for udev-based systems
|
||||
-#
|
||||
+# We don't simply match on any device since that also adds accelerometers
|
||||
+# and other devices that we don't really want to use. The list below
|
||||
+# matches everything but joysticks.
|
||||
+
|
||||
Section "InputClass"
|
||||
- Identifier "evdev-catchall"
|
||||
+ Identifier "evdev pointer catchall"
|
||||
+ MatchIsPointer "on"
|
||||
+ MatchDevicePath "/dev/input/event*"
|
||||
Driver "evdev"
|
||||
+EndSection
|
||||
+
|
||||
+Section "InputClass"
|
||||
+ Identifier "evdev keyboard catchall"
|
||||
+ MatchIsKeyboard "on"
|
||||
MatchDevicePath "/dev/input/event*"
|
||||
+ Driver "evdev"
|
||||
+EndSection
|
||||
+
|
||||
+Section "InputClass"
|
||||
+ Identifier "evdev touchpad catchall"
|
||||
+ MatchIsTouchpad "on"
|
||||
+ MatchDevicePath "/dev/input/event*"
|
||||
+ Driver "evdev"
|
||||
+EndSection
|
||||
+
|
||||
+Section "InputClass"
|
||||
+ Identifier "evdev tablet catchall"
|
||||
+ MatchIsTablet "on"
|
||||
+ MatchDevicePath "/dev/input/event*"
|
||||
+ Driver "evdev"
|
||||
+EndSection
|
||||
+
|
||||
+Section "InputClass"
|
||||
+ Identifier "evdev touchscreen catchall"
|
||||
+ MatchIsTouchscreen "on"
|
||||
+ MatchDevicePath "/dev/input/event*"
|
||||
+ Driver "evdev"
|
||||
EndSection
|
@ -1,10 +1,10 @@
|
||||
--- config/Makefile.am.orig 2010-04-02 11:56:16.000000000 +0200
|
||||
+++ config/Makefile.am 2010-04-02 11:56:49.000000000 +0200
|
||||
--- config/Makefile.am.orig 2010-06-11 04:14:57.000000000 +0200
|
||||
+++ config/Makefile.am 2010-08-23 15:47:19.000000000 +0200
|
||||
@@ -9,7 +9,7 @@
|
||||
libconfig_la_SOURCES += udev.c
|
||||
libconfig_la_LIBADD = $(UDEV_LIBS)
|
||||
|
||||
-xorgconfddir = $(prefix)/etc/X11/$(XF86CONFIGDIR)
|
||||
-xorgconfddir = $(datadir)/X11/$(XF86CONFIGDIR)
|
||||
+xorgconfddir = $(sysconfdir)/X11/$(XF86CONFIGDIR)
|
||||
xorgconfd_DATA = 10-evdev.conf
|
||||
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:423a8092e28affb83aa736695408e01fd4641040727f34ed6bcfae9c06018b77
|
||||
size 5097035
|
3
xorg-server-1.9.0.tar.bz2
Normal file
3
xorg-server-1.9.0.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1064f04c648285af9960e9c8e9cd5b8efabd58113c229e3af2408da39e829ad3
|
||||
size 5345092
|
@ -1,32 +0,0 @@
|
||||
commit 21ed660f30a3f96c787ab00a16499e0fb034b2ad
|
||||
Author: Chris Humbert <freedesktop@mahadri.com>
|
||||
Date: Fri May 7 17:02:43 2010 +1000
|
||||
|
||||
dix: make DeviceEvent coordinates signed for Xinerama. #24986
|
||||
|
||||
With Xinerama enabled, event coordinates are relative to Screen 0, so
|
||||
they can be negative. The new DeviceEvent's coordinates are of type
|
||||
uint16_t, making screens above and to the left of Screen 0 unusable.
|
||||
|
||||
X.Org Bug 24986 <https://bugs.freedesktop.org/show_bug.cgi?id=24986>
|
||||
|
||||
Signed-off-by: Chris Humbert <freedesktop@mahadri.com>
|
||||
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
Signed-off-by: Keith Packard <keithp@keithp.com>
|
||||
|
||||
diff --git a/include/eventstr.h b/include/eventstr.h
|
||||
index 79685c1..433227e 100644
|
||||
--- a/include/eventstr.h
|
||||
+++ b/include/eventstr.h
|
||||
@@ -91,9 +91,9 @@ struct _DeviceEvent
|
||||
uint32_t button; /**< Button number */
|
||||
uint32_t key; /**< Key code */
|
||||
} detail;
|
||||
- uint16_t root_x; /**< Pos relative to root window in integral data */
|
||||
+ int16_t root_x; /**< Pos relative to root window in integral data */
|
||||
float root_x_frac; /**< Pos relative to root window in frac part */
|
||||
- uint16_t root_y; /**< Pos relative to root window in integral part */
|
||||
+ int16_t root_y; /**< Pos relative to root window in integral part */
|
||||
float root_y_frac; /**< Pos relative to root window in frac part */
|
||||
uint8_t buttons[(MAX_BUTTONS + 7)/8]; /**< Button mask */
|
||||
struct {
|
@ -1,33 +1,5 @@
|
||||
Index: xorg-server-1.6.3/hw/xfree86/os-support/linux/lnx_init.c
|
||||
===================================================================
|
||||
--- xorg-server-1.6.3.orig/hw/xfree86/os-support/linux/lnx_init.c
|
||||
+++ xorg-server-1.6.3/hw/xfree86/os-support/linux/lnx_init.c
|
||||
@@ -49,6 +49,7 @@ static Bool KeepTty = FALSE;
|
||||
static int VTnum = -1;
|
||||
static Bool VTSwitch = TRUE;
|
||||
static Bool ShareVTs = FALSE;
|
||||
+Bool NoHwAccess = FALSE;
|
||||
static int activeVT = -1;
|
||||
|
||||
static int vtPermSave[4];
|
||||
@@ -434,6 +439,11 @@ xf86ProcessArgument(int argc, char *argv
|
||||
ShareVTs = TRUE;
|
||||
return(1);
|
||||
}
|
||||
+ if (!strcmp(argv[i], "-nohwaccess"))
|
||||
+ {
|
||||
+ NoHwAccess = TRUE;
|
||||
+ return(1);
|
||||
+ }
|
||||
if ((argv[i][0] == 'v') && (argv[i][1] == 't'))
|
||||
{
|
||||
if (sscanf(argv[i], "vt%2d", &VTnum) == 0)
|
||||
@@ -455,4 +465,5 @@ xf86UseMsg()
|
||||
ErrorF("don't detach controlling tty (for debugging only)\n");
|
||||
ErrorF("-novtswitch don't immediately switch to new VT\n");
|
||||
ErrorF("-sharevts share VTs with another X server\n");
|
||||
+ ErrorF("-nohwaccess don't access hardware ports directly\n");
|
||||
}
|
||||
Index: xorg-server-1.6.3/hw/xfree86/os-support/linux/lnx_video.c
|
||||
===================================================================
|
||||
--- xorg-server-1.6.3.orig/hw/xfree86/os-support/linux/lnx_video.c
|
||||
@ -50,3 +22,31 @@ Index: xorg-server-1.6.3/hw/xfree86/os-support/linux/lnx_video.c
|
||||
|
||||
if (ExtendedEnabled)
|
||||
return TRUE;
|
||||
--- xorg-server-1.9.0/hw/xfree86/os-support/linux/lnx_init.c.orig 2010-06-10 16:07:55.000000000 +0200
|
||||
+++ xorg-server-1.9.0/hw/xfree86/os-support/linux/lnx_init.c 2010-08-23 15:38:45.000000000 +0200
|
||||
@@ -42,6 +42,7 @@ static Bool KeepTty = FALSE;
|
||||
static int VTnum = -1;
|
||||
static Bool VTSwitch = TRUE;
|
||||
static Bool ShareVTs = FALSE;
|
||||
+Bool NoHwAccess = FALSE;
|
||||
static int activeVT = -1;
|
||||
|
||||
static int vtPermSave[4];
|
||||
@@ -377,6 +378,11 @@ xf86ProcessArgument(int argc, char *argv
|
||||
ShareVTs = TRUE;
|
||||
return 1;
|
||||
}
|
||||
+ if (!strcmp(argv[i], "-nohwaccess"))
|
||||
+ {
|
||||
+ NoHwAccess = TRUE;
|
||||
+ return(1);
|
||||
+ }
|
||||
if ((argv[i][0] == 'v') && (argv[i][1] == 't'))
|
||||
{
|
||||
if (sscanf(argv[i], "vt%2d", &VTnum) == 0)
|
||||
@@ -398,4 +404,5 @@ xf86UseMsg(void)
|
||||
ErrorF("don't detach controlling tty (for debugging only)\n");
|
||||
ErrorF("-novtswitch don't immediately switch to new VT\n");
|
||||
ErrorF("-sharevts share VTs with another X server\n");
|
||||
+ ErrorF("-nohwaccess don't access hardware ports directly\n");
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- hw/xfree86/parser/InputClass.c
|
||||
+++ hw/xfree86/parser/InputClass.c
|
||||
@@ -61,6 +61,47 @@
|
||||
--- hw/xfree86/parser/InputClass.c.orig 2010-08-13 07:53:48.000000000 +0200
|
||||
+++ hw/xfree86/parser/InputClass.c 2010-08-23 15:55:16.000000000 +0200
|
||||
@@ -65,6 +65,47 @@ xf86ConfigSymTabRec InputClassTab[] =
|
||||
|
||||
#define TOKEN_SEP "|"
|
||||
|
||||
@ -45,33 +45,64 @@
|
||||
+}
|
||||
+
|
||||
+
|
||||
XF86ConfInputClassPtr
|
||||
xf86parseInputClassSection(void)
|
||||
static void
|
||||
add_group_entry(struct list *head, char **values)
|
||||
{
|
||||
@@ -96,22 +137,22 @@
|
||||
case MATCH_PRODUCT:
|
||||
@@ -125,49 +166,49 @@ xf86parseInputClassSection(void)
|
||||
if (xf86getSubToken(&(ptr->comment)) != STRING)
|
||||
Error(QUOTE_MSG, "MatchProduct");
|
||||
- ptr->match_product = xstrtokenize(val.str, TOKEN_SEP);
|
||||
+ ptr->match_product = m_xstrtokenize(val.str, TOKEN_SEP);
|
||||
add_group_entry(&ptr->match_product,
|
||||
- xstrtokenize(val.str, TOKEN_SEP));
|
||||
+ m_xstrtokenize(val.str, TOKEN_SEP));
|
||||
break;
|
||||
case MATCH_VENDOR:
|
||||
if (xf86getSubToken(&(ptr->comment)) != STRING)
|
||||
Error(QUOTE_MSG, "MatchVendor");
|
||||
- ptr->match_vendor = xstrtokenize(val.str, TOKEN_SEP);
|
||||
+ ptr->match_vendor = m_xstrtokenize(val.str, TOKEN_SEP);
|
||||
add_group_entry(&ptr->match_vendor,
|
||||
- xstrtokenize(val.str, TOKEN_SEP));
|
||||
+ m_xstrtokenize(val.str, TOKEN_SEP));
|
||||
break;
|
||||
case MATCH_DEVICE_PATH:
|
||||
if (xf86getSubToken(&(ptr->comment)) != STRING)
|
||||
Error(QUOTE_MSG, "MatchDevicePath");
|
||||
- ptr->match_device = xstrtokenize(val.str, TOKEN_SEP);
|
||||
+ ptr->match_device = m_xstrtokenize(val.str, TOKEN_SEP);
|
||||
add_group_entry(&ptr->match_device,
|
||||
- xstrtokenize(val.str, TOKEN_SEP));
|
||||
+ m_xstrtokenize(val.str, TOKEN_SEP));
|
||||
break;
|
||||
case MATCH_OS:
|
||||
if (xf86getSubToken(&(ptr->comment)) != STRING)
|
||||
Error(QUOTE_MSG, "MatchOS");
|
||||
add_group_entry(&ptr->match_os,
|
||||
- xstrtokenize(val.str, TOKEN_SEP));
|
||||
+ m_xstrtokenize(val.str, TOKEN_SEP));
|
||||
break;
|
||||
case MATCH_PNPID:
|
||||
if (xf86getSubToken(&(ptr->comment)) != STRING)
|
||||
Error(QUOTE_MSG, "MatchPnPID");
|
||||
add_group_entry(&ptr->match_pnpid,
|
||||
- xstrtokenize(val.str, TOKEN_SEP));
|
||||
+ m_xstrtokenize(val.str, TOKEN_SEP));
|
||||
break;
|
||||
case MATCH_USBID:
|
||||
if (xf86getSubToken(&(ptr->comment)) != STRING)
|
||||
Error(QUOTE_MSG, "MatchUSBID");
|
||||
add_group_entry(&ptr->match_usbid,
|
||||
- xstrtokenize(val.str, TOKEN_SEP));
|
||||
+ m_xstrtokenize(val.str, TOKEN_SEP));
|
||||
break;
|
||||
case MATCH_DRIVER:
|
||||
if (xf86getSubToken(&(ptr->comment)) != STRING)
|
||||
Error(QUOTE_MSG, "MatchDriver");
|
||||
add_group_entry(&ptr->match_driver,
|
||||
- xstrtokenize(val.str, TOKEN_SEP));
|
||||
+ m_xstrtokenize(val.str, TOKEN_SEP));
|
||||
break;
|
||||
case MATCH_TAG:
|
||||
if (xf86getSubToken(&(ptr->comment)) != STRING)
|
||||
Error(QUOTE_MSG, "MatchTag");
|
||||
- ptr->match_tag = xstrtokenize(val.str, TOKEN_SEP);
|
||||
+ ptr->match_tag = m_xstrtokenize(val.str, TOKEN_SEP);
|
||||
add_group_entry(&ptr->match_tag,
|
||||
- xstrtokenize(val.str, TOKEN_SEP));
|
||||
+ m_xstrtokenize(val.str, TOKEN_SEP));
|
||||
break;
|
||||
case MATCH_IS_KEYBOARD:
|
||||
if (xf86getSubToken(&(ptr->comment)) != STRING)
|
||||
|
@ -1,90 +0,0 @@
|
||||
diff --git a/dix/events.c b/dix/events.c
|
||||
index ae9847c..e1c3d0a 100644
|
||||
--- a/dix/events.c
|
||||
+++ b/dix/events.c
|
||||
@@ -3420,7 +3420,6 @@ CheckPassiveGrabsOnWindow(
|
||||
{
|
||||
DeviceIntPtr gdev;
|
||||
XkbSrvInfoPtr xkbi = NULL;
|
||||
- Mask mask = 0;
|
||||
|
||||
gdev= grab->modifierDevice;
|
||||
if (grab->grabtype == GRABTYPE_CORE)
|
||||
@@ -3535,9 +3534,6 @@ CheckPassiveGrabsOnWindow(
|
||||
}
|
||||
xE = &core;
|
||||
count = 1;
|
||||
- mask = grab->eventMask;
|
||||
- if (grab->ownerEvents)
|
||||
- mask |= pWin->eventMask;
|
||||
} else if (match & XI2_MATCH)
|
||||
{
|
||||
rc = EventToXI2((InternalEvent*)event, &xE);
|
||||
@@ -3549,34 +3545,6 @@ CheckPassiveGrabsOnWindow(
|
||||
continue;
|
||||
}
|
||||
count = 1;
|
||||
-
|
||||
- /* FIXME: EventToXI2 returns NULL for enter events, so
|
||||
- * dereferencing the event is bad. Internal event types are
|
||||
- * aligned with core events, so the else clause is valid.
|
||||
- * long-term we should use internal events for enter/focus
|
||||
- * as well */
|
||||
- if (xE)
|
||||
- mask = grab->xi2mask[device->id][((xGenericEvent*)xE)->evtype/8];
|
||||
- else if (event->type == XI_Enter || event->type == XI_FocusIn)
|
||||
- mask = grab->xi2mask[device->id][event->type/8];
|
||||
-
|
||||
- if (grab->ownerEvents && wOtherInputMasks(grab->window))
|
||||
- {
|
||||
- InputClientsPtr icp =
|
||||
- wOtherInputMasks(grab->window)->inputClients;
|
||||
-
|
||||
- while(icp)
|
||||
- {
|
||||
- if (rClient(icp) == rClient(grab))
|
||||
- {
|
||||
- int evtype = (xE) ? ((xGenericEvent*)xE)->evtype : event->type;
|
||||
- mask |= icp->xi2mask[device->id][evtype/8];
|
||||
- break;
|
||||
- }
|
||||
-
|
||||
- icp = icp->next;
|
||||
- }
|
||||
- }
|
||||
} else
|
||||
{
|
||||
rc = EventToXI((InternalEvent*)event, &xE, &count);
|
||||
@@ -3587,23 +3555,6 @@ CheckPassiveGrabsOnWindow(
|
||||
"(%d, %d).\n", device->name, event->type, rc);
|
||||
continue;
|
||||
}
|
||||
- mask = grab->eventMask;
|
||||
- if (grab->ownerEvents && wOtherInputMasks(grab->window))
|
||||
- {
|
||||
- InputClientsPtr icp =
|
||||
- wOtherInputMasks(grab->window)->inputClients;
|
||||
-
|
||||
- while(icp)
|
||||
- {
|
||||
- if (rClient(icp) == rClient(grab))
|
||||
- {
|
||||
- mask |= icp->mask[device->id];
|
||||
- break;
|
||||
- }
|
||||
-
|
||||
- icp = icp->next;
|
||||
- }
|
||||
- }
|
||||
}
|
||||
|
||||
(*grabinfo->ActivateGrab)(device, grab, currentTime, TRUE);
|
||||
@@ -3612,7 +3563,8 @@ CheckPassiveGrabsOnWindow(
|
||||
{
|
||||
FixUpEventFromWindow(device, xE, grab->window, None, TRUE);
|
||||
|
||||
- TryClientEvents(rClient(grab), device, xE, count, mask,
|
||||
+ TryClientEvents(rClient(grab), device, xE, count,
|
||||
+ GetEventFilter(device, xE),
|
||||
GetEventFilter(device, xE), grab);
|
||||
}
|
@ -1,5 +1,3 @@
|
||||
Index: xorg-server-1.6.3.901/Makefile.am
|
||||
================================================================================
|
||||
--- xorg-server-1.7.99/Makefile.am
|
||||
+++ xorg-server-1.7.99/Makefile.am
|
||||
@@ -17,6 +17,10 @@
|
||||
@ -21,9 +19,9 @@ Index: xorg-server-1.6.3.901/Makefile.am
|
||||
exa \
|
||||
config \
|
||||
hw \
|
||||
--- xorg-server-1.7.99/configure.ac
|
||||
+++ xorg-server-1.7.99/configure.ac
|
||||
@@ -634,6 +634,8 @@
|
||||
--- xorg-server-1.9.0/configure.ac.orig 2010-08-21 02:30:34.000000000 +0200
|
||||
+++ xorg-server-1.9.0/configure.ac 2010-08-23 14:11:04.000000000 +0200
|
||||
@@ -649,6 +649,8 @@
|
||||
|
||||
dnl DDXes.
|
||||
AC_ARG_ENABLE(xorg, AS_HELP_STRING([--enable-xorg], [Build Xorg server (default: auto)]), [XORG=$enableval], [XORG=auto])
|
||||
@ -32,7 +30,7 @@ Index: xorg-server-1.6.3.901/Makefile.am
|
||||
AC_ARG_ENABLE(dmx, AS_HELP_STRING([--enable-dmx], [Build DMX server (default: auto)]), [DMX=$enableval], [DMX=auto])
|
||||
AC_ARG_ENABLE(xvfb, AS_HELP_STRING([--enable-xvfb], [Build Xvfb server (default: yes)]), [XVFB=$enableval], [XVFB=yes])
|
||||
AC_ARG_ENABLE(xnest, AS_HELP_STRING([--enable-xnest], [Build Xnest server (default: auto)]), [XNEST=$enableval], [XNEST=auto])
|
||||
@@ -1131,6 +1133,20 @@
|
||||
@@ -1163,6 +1165,20 @@
|
||||
AM_CONDITIONAL(VBE, test "x$VBE" = xyes)
|
||||
AM_CONDITIONAL(INT10MODULE, test "x$INT10MODULE" = xyes)
|
||||
|
||||
@ -53,7 +51,7 @@ Index: xorg-server-1.6.3.901/Makefile.am
|
||||
AC_DEFINE(SHAPE, 1, [Support SHAPE extension])
|
||||
|
||||
AC_DEFINE_DIR(XKB_BASE_DIRECTORY, XKBPATH, [Path to XKB data])
|
||||
@@ -1470,6 +1486,40 @@
|
||||
@@ -1500,6 +1516,40 @@
|
||||
dnl DDX section.
|
||||
dnl ---------------------------------------------------------------------------
|
||||
|
||||
@ -94,7 +92,7 @@ Index: xorg-server-1.6.3.901/Makefile.am
|
||||
dnl Xvfb DDX
|
||||
|
||||
AC_MSG_CHECKING([whether to build Xvfb DDX])
|
||||
@@ -2160,6 +2210,7 @@
|
||||
@@ -2202,6 +2252,7 @@
|
||||
Xi/Makefile
|
||||
xfixes/Makefile
|
||||
exa/Makefile
|
||||
@ -102,7 +100,7 @@ Index: xorg-server-1.6.3.901/Makefile.am
|
||||
hw/Makefile
|
||||
hw/xfree86/Makefile
|
||||
hw/xfree86/common/Makefile
|
||||
@@ -2193,6 +2244,7 @@
|
||||
@@ -2235,6 +2286,7 @@
|
||||
hw/xfree86/shadowfb/Makefile
|
||||
hw/xfree86/vbe/Makefile
|
||||
hw/xfree86/vgahw/Makefile
|
||||
@ -110,7 +108,7 @@ Index: xorg-server-1.6.3.901/Makefile.am
|
||||
hw/xfree86/x86emu/Makefile
|
||||
hw/xfree86/xaa/Makefile
|
||||
hw/xfree86/xf8_16bpp/Makefile
|
||||
@@ -2204,8 +2256,10 @@
|
||||
@@ -2246,8 +2298,10 @@
|
||||
hw/dmx/examples/Makefile
|
||||
hw/dmx/input/Makefile
|
||||
hw/dmx/glxProxy/Makefile
|
||||
@ -120,7 +118,9 @@ Index: xorg-server-1.6.3.901/Makefile.am
|
||||
+hw/vnc/Makefile
|
||||
hw/xnest/Makefile
|
||||
hw/xwin/Makefile
|
||||
hw/xquartz/Makefile
|
||||
hw/xwin/glx/Makefile
|
||||
Index: xorg-server-1.6.3.901/Makefile.am
|
||||
================================================================================
|
||||
--- xorg-server-1.7.99/hw/Makefile.am
|
||||
+++ xorg-server-1.7.99/hw/Makefile.am
|
||||
@@ -22,6 +22,10 @@
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,3 +1,47 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed Aug 25 13:32:09 UTC 2010 - mhopf@novell.com
|
||||
|
||||
- Use-external-tool-for-creating-backtraces-on-crashes.patch,
|
||||
xorg-backtrace:
|
||||
Use external script /usr/bin/xorg-backtrace for creating reasonable
|
||||
backtraces upon crashes.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Aug 23 19:28:20 CEST 2010 - sndirsch@suse.de
|
||||
|
||||
- set VIDEO_ABI_VERSION = 8 and INPUT_ABI_VERSION = 11 in specfile
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Aug 23 17:26:21 CEST 2010 - sndirsch@suse.de
|
||||
|
||||
- xorg-server 1.9.0
|
||||
* obsolete patches:
|
||||
- dmx-silly.patch
|
||||
- fixed-SYNC-extension-trigger-BlockHandler-test.diff
|
||||
- sw_cursor_on_randr.patch
|
||||
- xorg-evdev-conf.diff
|
||||
- xorg-server-commit-21ed660.diff
|
||||
- xorg-server-revert-event-mask.patch
|
||||
- xorg-x11-server-gl-apps-crash.patch
|
||||
* adjusted patches
|
||||
- 0001-Fix-segfault-when-killing-X-with-ctrl-alt-backspace.patch
|
||||
- 0001-Xinput-Catch-missing-configlayout-when-deleting-dev.patch
|
||||
- CVE-2010-2240-tree_depth_limit.patch
|
||||
- cache-xkbcomp-output-for-fast-start-up.patch
|
||||
- confine_to_shape.diff
|
||||
- driver-autoconfig.diff
|
||||
- fpic.diff
|
||||
- xorg-detect-psb.patch
|
||||
- xorg-server-1.8.0.diff
|
||||
- xorg-server-nohwaccess.diff
|
||||
- xorg-server-option_libxf86config.diff
|
||||
- xorg-server-xf4vnc.patch
|
||||
- xserver-1.6.1-nouveau.patch
|
||||
- xserver-bg-none-root.patch
|
||||
* vbe-bufferoverflow.diff
|
||||
- fixes vbe buffer overflow
|
||||
- disabled vnc build for now (standalone server + module)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Aug 19 15:53:11 CEST 2010 - max@suse.de
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# spec file for package xorg-x11-server (Version 7.5_1.8.0)
|
||||
# spec file for package xorg-x11-server (Version 7.5_1.9.0)
|
||||
#
|
||||
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
#
|
||||
@ -20,8 +20,8 @@
|
||||
%define moblin 0
|
||||
|
||||
Name: xorg-x11-server
|
||||
%define dirsuffix 1.8.0
|
||||
%define vnc 1
|
||||
%define dirsuffix 1.9.0
|
||||
%define vnc 0
|
||||
BuildRequires: Mesa-devel bison flex fontconfig-devel freetype2-devel ghostscript-library libdrm-devel libopenssl-devel pkgconfig xorg-x11 xorg-x11-devel xorg-x11-fonts-devel xorg-x11-libICE-devel xorg-x11-libSM-devel xorg-x11-libX11-devel xorg-x11-libXau-devel xorg-x11-libXdmcp-devel xorg-x11-libXext-devel xorg-x11-libXfixes-devel xorg-x11-libXmu-devel xorg-x11-libXp-devel xorg-x11-libXpm-devel xorg-x11-libXprintUtil-devel xorg-x11-libXrender-devel xorg-x11-libXt-devel xorg-x11-libXv-devel xorg-x11-libfontenc-devel xorg-x11-libxkbfile-devel xorg-x11-proto-devel xorg-x11-xtrans-devel
|
||||
### udev support (broken on openSUSE 11.2, see also bnc #589997)
|
||||
%if %suse_version > 1120
|
||||
@ -32,7 +32,7 @@ BuildRequires: libjpeg-devel
|
||||
%endif
|
||||
Url: http://xorg.freedesktop.org/
|
||||
Version: 7.5_%{dirsuffix}
|
||||
Release: 16
|
||||
Release: 1
|
||||
License: GPLv2+ ; MIT License (or similar)
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
Group: System/X11/Servers/XF86_4
|
||||
@ -41,8 +41,8 @@ PreReq: %fillup_prereq
|
||||
%endif
|
||||
Requires: pkgconfig xorg-x11-fonts-core xorg-x11
|
||||
%ifnarch s390 s390x
|
||||
Provides: VIDEO_ABI_VERSION = 7
|
||||
Provides: INPUT_ABI_VERSION = 9
|
||||
Provides: VIDEO_ABI_VERSION = 8
|
||||
Provides: INPUT_ABI_VERSION = 11
|
||||
Requires: libpixman-1-0 >= 0.15.2
|
||||
%endif
|
||||
Provides: xorg-x11-server-glx
|
||||
@ -54,6 +54,7 @@ Source3: README.updates
|
||||
Source4: xorgcfg.tar.bz2
|
||||
Source5: modprobe.nvidia
|
||||
Source7: xorg-docs-1.4.tar.bz2
|
||||
Source8: xorg-backtrace
|
||||
Patch1: fpic.diff
|
||||
Patch2: p_default-module-path.diff
|
||||
Patch6: pu_fixes.diff
|
||||
@ -93,7 +94,6 @@ Patch125: 0001-Xinput-Catch-missing-configlayout-when-deleting-dev.patch
|
||||
Patch127: dpms_screensaver.diff
|
||||
Patch128: pci-legacy-mem-fallback.diff
|
||||
Patch129: bug474071-fix1.diff
|
||||
Patch132: fixed-SYNC-extension-trigger-BlockHandler-test.diff
|
||||
Patch143: autoconfig_fallback_fbdev_first.diff
|
||||
Patch145: driver-autoconfig.diff
|
||||
Patch147: xserver-1.6.1-nouveau.patch
|
||||
@ -109,17 +109,13 @@ Patch204: missing_font_paths.diff
|
||||
Patch205: xorg-server-1.8.0.diff
|
||||
Patch206: fix_fglrx_screendepth_issue.patch
|
||||
Patch207: xorg-server-option_libxf86config.diff
|
||||
Patch208: xorg-evdev-conf.diff
|
||||
Patch209: sw_cursor_on_randr.patch
|
||||
Patch210: pio_ia64.diff
|
||||
Patch211: 0001-Prevent-XSync-Alarms-from-senslessly-calling-CheckTr.patch
|
||||
Patch212: dmx-silly.patch
|
||||
Patch213: xorg-server-xdmcp.patch
|
||||
Patch214: xorg-x11-server-gl-apps-crash.patch
|
||||
Patch215: xorg-server-revert-event-mask.patch
|
||||
Patch216: xorg-server-commit-21ed660.diff
|
||||
Patch217: CVE-2010-2240-address_space_limit.patch
|
||||
Patch218: CVE-2010-2240-tree_depth_limit.patch
|
||||
Patch219: vbe-bufferoverflow.diff
|
||||
Patch220: Use-external-tool-for-creating-backtraces-on-crashes.patch
|
||||
%if %moblin
|
||||
Patch300: moblin-use_preferred_mode_for_all_outputs.diff
|
||||
%endif
|
||||
@ -223,7 +219,6 @@ popd
|
||||
pushd hw/xfree86/os-support/bus
|
||||
%patch129 -p0
|
||||
popd
|
||||
%patch132 -p1
|
||||
%patch143 -p0
|
||||
%patch145 -p0
|
||||
%patch147 -p1
|
||||
@ -239,17 +234,13 @@ popd
|
||||
%patch205 -p0
|
||||
%patch206 -p0
|
||||
%patch207 -p0
|
||||
%patch208 -p0
|
||||
%patch209 -p1
|
||||
%patch210 -p1
|
||||
%patch211 -p1
|
||||
%patch212 -p1
|
||||
%patch213 -p1
|
||||
%patch214 -p1
|
||||
%patch215 -p1
|
||||
%patch216 -p1
|
||||
%patch217 -p1
|
||||
%patch218 -p1
|
||||
%patch219 -p1
|
||||
%patch220 -p1
|
||||
%if %moblin
|
||||
%patch300 -p1
|
||||
%endif
|
||||
@ -342,6 +333,7 @@ mkdir -p %buildroot/var/adm/fillup-templates
|
||||
install -m 644 %_sourcedir/sysconfig.displaymanager.template \
|
||||
%buildroot/var/adm/fillup-templates/sysconfig.displaymanager-%name
|
||||
%endif
|
||||
install -m 755 $RPM_SOURCE_DIR/xorg-backtrace $RPM_BUILD_ROOT/usr/bin/xorg-backtrace
|
||||
|
||||
%clean
|
||||
rm -rf "$RPM_BUILD_ROOT"
|
||||
@ -410,6 +402,7 @@ exit 0
|
||||
/var/adm/fillup-templates/sysconfig.displaymanager-%name
|
||||
/var/lib/X11/X
|
||||
%endif
|
||||
/usr/bin/xorg-backtrace
|
||||
|
||||
%files extra
|
||||
%defattr(-,root,root)
|
||||
|
@ -26,7 +26,7 @@ index 21e44d1..30b820c 100644
|
||||
}
|
||||
@@ -1184,7 +1187,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
|
||||
|
||||
xfree(screen);
|
||||
free(screen);
|
||||
|
||||
- LogMessage(X_ERROR, "AIGLX: reverting to software rendering\n");
|
||||
+ LogMessage(from, "AIGLX: reverting to software rendering\n");
|
||||
@ -43,7 +43,7 @@ index 0f998de..a244809 100644
|
||||
int i;
|
||||
+ int from = X_ERROR;
|
||||
|
||||
screen = xcalloc(1, sizeof *screen);
|
||||
screen = calloc(1, sizeof *screen);
|
||||
if (screen == NULL)
|
||||
@@ -702,7 +703,9 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
|
||||
|
||||
@ -58,7 +58,7 @@ index 0f998de..a244809 100644
|
||||
}
|
||||
@@ -793,7 +796,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
|
||||
|
||||
xfree(screen);
|
||||
free(screen);
|
||||
|
||||
- LogMessage(X_ERROR, "AIGLX: reverting to software rendering\n");
|
||||
+ LogMessage(from, "AIGLX: reverting to software rendering\n");
|
||||
|
@ -14,16 +14,6 @@ Subject: [PATCH] Add nr for background=none root
|
||||
|
||||
Index: xorg-server-1.8.0/dix/globals.c
|
||||
===================================================================
|
||||
--- xorg-server-1.8.0.orig/dix/globals.c
|
||||
+++ xorg-server-1.8.0/dix/globals.c
|
||||
@@ -124,6 +124,7 @@ FontPtr defaultFont; /* not declared i
|
||||
CursorPtr rootCursor;
|
||||
Bool party_like_its_1989 = FALSE;
|
||||
Bool whiteRoot = FALSE;
|
||||
+Bool bgNoneRoot = FALSE;
|
||||
|
||||
int cursorScreenDevPriv[MAXSCREENS];
|
||||
|
||||
Index: xorg-server-1.8.0/dix/window.c
|
||||
===================================================================
|
||||
--- xorg-server-1.8.0.orig/dix/window.c
|
||||
@ -61,41 +51,6 @@ Index: xorg-server-1.8.0/dix/window.c
|
||||
}
|
||||
Index: xorg-server-1.8.0/hw/xfree86/common/xf86Init.c
|
||||
===================================================================
|
||||
--- xorg-server-1.8.0.orig/hw/xfree86/common/xf86Init.c
|
||||
+++ xorg-server-1.8.0/hw/xfree86/common/xf86Init.c
|
||||
@@ -77,6 +77,7 @@
|
||||
#ifdef RENDER
|
||||
#include "picturestr.h"
|
||||
#endif
|
||||
+#include "xace.h"
|
||||
|
||||
#include "xf86VGAarbiter.h"
|
||||
#include "globals.h"
|
||||
@@ -256,6 +257,7 @@ xf86CreateRootWindow(WindowPtr pWin)
|
||||
int ret = TRUE;
|
||||
int err = Success;
|
||||
ScreenPtr pScreen = pWin->drawable.pScreen;
|
||||
+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
|
||||
RootWinPropPtr pProp;
|
||||
CreateWindowProcPtr CreateWindow = (CreateWindowProcPtr)
|
||||
dixLookupPrivate(&pScreen->devPrivates, xf86CreateRootWindowKey);
|
||||
@@ -306,6 +308,16 @@ xf86CreateRootWindow(WindowPtr pWin)
|
||||
ret = FALSE;
|
||||
}
|
||||
}
|
||||
+ if (bgNoneRoot) {
|
||||
+ if (pScrn->canDoBGNoneRoot) {
|
||||
+ pWin->backgroundState = XaceBackgroundNoneState(pWin);
|
||||
+ pWin->background.pixel = pScreen->whitePixel;
|
||||
+ pScreen->ChangeWindowAttributes(pWin, CWBackPixmap | CWBorderPixel | CWCursor | CWBackingStore);
|
||||
+ } else {
|
||||
+ pWin->background.pixel = pScreen->blackPixel;
|
||||
+ pScreen->ChangeWindowAttributes(pWin, CWBackPixel | CWBorderPixel | CWCursor | CWBackingStore);
|
||||
+ }
|
||||
+ }
|
||||
|
||||
DebugF("xf86CreateRootWindow() returns %d\n", ret);
|
||||
return (ret);
|
||||
Index: xorg-server-1.8.0/hw/xfree86/common/xf86str.h
|
||||
===================================================================
|
||||
--- xorg-server-1.8.0.orig/hw/xfree86/common/xf86str.h
|
||||
@ -152,3 +107,49 @@ Index: xorg-server-1.8.0/os/utils.c
|
||||
else if ( strcmp( argv[i], "-maxbigreqsize") == 0) {
|
||||
if(++i < argc) {
|
||||
long reqSizeArg = atol(argv[i]);
|
||||
--- xorg-server-1.9.0/dix/globals.c.orig 2010-06-06 19:53:51.000000000 +0200
|
||||
+++ xorg-server-1.9.0/dix/globals.c 2010-08-23 15:27:52.000000000 +0200
|
||||
@@ -122,6 +122,7 @@ FontPtr defaultFont; /* not declared i
|
||||
CursorPtr rootCursor;
|
||||
Bool party_like_its_1989 = FALSE;
|
||||
Bool whiteRoot = FALSE;
|
||||
+Bool bgNoneRoot = FALSE;
|
||||
|
||||
TimeStamp currentTime;
|
||||
TimeStamp lastDeviceEventTime;
|
||||
--- xorg-server-1.9.0/hw/xfree86/common/xf86Init.c.orig 2010-06-10 16:07:55.000000000 +0200
|
||||
+++ xorg-server-1.9.0/hw/xfree86/common/xf86Init.c 2010-08-23 15:32:56.000000000 +0200
|
||||
@@ -76,6 +76,7 @@
|
||||
#include "xf86Xinput.h"
|
||||
#include "xf86InPriv.h"
|
||||
#include "picturestr.h"
|
||||
+#include "xace.h"
|
||||
|
||||
#include "xf86Bus.h"
|
||||
#include "xf86VGAarbiter.h"
|
||||
@@ -242,6 +243,7 @@ xf86CreateRootWindow(WindowPtr pWin)
|
||||
int ret = TRUE;
|
||||
int err = Success;
|
||||
ScreenPtr pScreen = pWin->drawable.pScreen;
|
||||
+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
|
||||
RootWinPropPtr pProp;
|
||||
CreateWindowProcPtr CreateWindow = (CreateWindowProcPtr)
|
||||
dixLookupPrivate(&pScreen->devPrivates, xf86CreateRootWindowKey);
|
||||
@@ -293,6 +295,17 @@ xf86CreateRootWindow(WindowPtr pWin)
|
||||
}
|
||||
}
|
||||
|
||||
+ if (bgNoneRoot) {
|
||||
+ if (pScrn->canDoBGNoneRoot) {
|
||||
+ pWin->backgroundState = XaceBackgroundNoneState(pWin);
|
||||
+ pWin->background.pixel = pScreen->whitePixel;
|
||||
+ pScreen->ChangeWindowAttributes(pWin, CWBackPixmap | CWBorderPixel | CWCursor | CWBackingStore);
|
||||
+ } else {
|
||||
+ pWin->background.pixel = pScreen->blackPixel;
|
||||
+ pScreen->ChangeWindowAttributes(pWin, CWBackPixel | CWBorderPixel | CWCursor | CWBackingStore);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
DebugF("xf86CreateRootWindow() returns %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user