1
0

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:
OBS User autobuild 2010-08-26 09:09:27 +00:00 committed by Git OBS Bridge
commit 44be5e0519
28 changed files with 556 additions and 3559 deletions

View File

@ -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);

View File

@ -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);
+ }
}
}

View File

@ -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;

View 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

View File

@ -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);

View 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;
+ }

View File

@ -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);
}

View File

@ -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;

View File

@ -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 */
}

View File

@ -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 \

View File

@ -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
View 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
View 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;

View File

@ -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;

View File

@ -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

View File

@ -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

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:423a8092e28affb83aa736695408e01fd4641040727f34ed6bcfae9c06018b77
size 5097035

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1064f04c648285af9960e9c8e9cd5b8efabd58113c229e3af2408da39e829ad3
size 5345092

View File

@ -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 {

View File

@ -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");
}

View File

@ -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)

View File

@ -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);
}

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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");

View File

@ -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;
}