1
0

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

OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/xorg-x11-server?expand=0&rev=281
This commit is contained in:
Stefan Dirsch 2010-08-23 16:11:18 +00:00 committed by Git OBS Bridge
parent df2573a895
commit c5550f7b6b
26 changed files with 284 additions and 3555 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

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

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

@ -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
@ -93,7 +93,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 +108,12 @@ 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
%if %moblin
Patch300: moblin-use_preferred_mode_for_all_outputs.diff
%endif
@ -223,7 +217,6 @@ popd
pushd hw/xfree86/os-support/bus
%patch129 -p0
popd
%patch132 -p1
%patch143 -p0
%patch145 -p0
%patch147 -p1
@ -239,17 +232,12 @@ 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
%if %moblin
%patch300 -p1
%endif

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