1
0
OBS User unknown 2009-03-02 00:19:45 +00:00 committed by Git OBS Bridge
parent bd564af56b
commit 8fd5b48947
22 changed files with 475 additions and 2036 deletions

View File

@ -10,41 +10,36 @@ even if idev is null. This takes down the xserver hard in some cases
hw/xfree86/common/xf86Xinput.c | 23 +++++++++++++---------- hw/xfree86/common/xf86Xinput.c | 23 +++++++++++++----------
1 files changed, 13 insertions(+), 10 deletions(-) 1 files changed, 13 insertions(+), 10 deletions(-)
diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c --- xorg-server-1.6.0/hw/xfree86/common/xf86Xinput.c.orig 2009-02-25 20:12:11.000000000 +0100
index 710e787..c0b6124 100644 +++ xorg-server-1.6.0/hw/xfree86/common/xf86Xinput.c 2009-02-27 17:26:35.000000000 +0100
--- a/hw/xfree86/common/xf86Xinput.c @@ -675,17 +675,20 @@ DeleteInputDeviceRequest(DeviceIntPtr pD
+++ b/hw/xfree86/common/xf86Xinput.c else
@@ -466,17 +466,20 @@ DeleteInputDeviceRequest(DeviceIntPtr pDev) xf86DeleteInput(pInfo, 0);
else
xf86DeleteInput(pInfo, 0);
- /* devices added through HAL aren't in the config layout */ - /* devices added through HAL aren't in the config layout */
- it = xf86ConfigLayout.inputs; - it = xf86ConfigLayout.inputs;
- while(*it && *it != idev) - while(*it && *it != idev)
- it++; - it++;
- -
- if (!(*it)) /* end of list, not in the layout */ - if (!(*it)) /* end of list, not in the layout */
+ if (idev) + if (idev)
{ {
- xfree(idev->driver); - xfree(idev->driver);
- xfree(idev->identifier); - xfree(idev->identifier);
- xf86optionListFree(idev->commonOptions); - xf86optionListFree(idev->commonOptions);
- xfree(idev); - xfree(idev);
+ /* devices added through HAL aren't in the config layout */ + /* devices added through HAL aren't in the config layout */
+ it = xf86ConfigLayout.inputs; + it = xf86ConfigLayout.inputs;
+ while(*it && *it != idev) + while(*it && *it != idev)
+ it++; + it++;
+ +
+ if (!(*it)) /* end of list, not in the layout */ + if (!(*it)) /* end of list, not in the layout */
+ { + {
+ xfree(idev->driver); + xfree(idev->driver);
+ xfree(idev->identifier); + xfree(idev->identifier);
+ xf86optionListFree(idev->commonOptions); + xf86optionListFree(idev->commonOptions);
+ xfree(idev); + xfree(idev);
+ } + }
}
} }
} OsReleaseSignals();
--
1.5.2.4

View File

@ -1,16 +0,0 @@
--- composite/compinit.c.orig 2008-06-27 19:54:41.000000000 +0000
+++ composite/compinit.c 2008-06-27 20:10:45.000000000 +0000
@@ -122,11 +122,11 @@
if (ret && (mask & CWBackingStore)) {
if (pWin->backingStore != NotUseful) {
compRedirectWindow(serverClient, pWin, CompositeRedirectAutomatic);
- pWin->backStorage = TRUE;
+ pWin->backStorage = (pointer) TRUE;
} else {
compUnredirectWindow(serverClient, pWin,
CompositeRedirectAutomatic);
- pWin->backStorage = FALSE;
+ pWin->backStorage = (pointer) FALSE;
}
}

View File

@ -1,13 +0,0 @@
--- hw/xfree86/common.orig/xf86Events.c 2006-06-27 10:16:25.000000000 +0000
+++ hw/xfree86/common/xf86Events.c 2006-06-27 10:43:01.000000000 +0000
@@ -1292,8 +1292,8 @@
size_t size, i;
char **strings;
ErrorF("\nBacktrace:\n");
- size = backtrace(array, 32);
- strings = backtrace_symbols(array, size);
+ size = (size_t) backtrace(array, 32);
+ strings = (char **) backtrace_symbols(array, size);
for (i = 0; i < size; i++)
ErrorF("%d: %s\n", i, strings[i]);
free(strings);

View File

@ -53,21 +53,3 @@ index 03c2c3a..843efb7 100644
case $host_os in case $host_os in
darwin*) DEFAULT_FONT_PATH="${DEFAULT_FONT_PATH},/Library/Fonts,/System/Library/Fonts" ;; darwin*) DEFAULT_FONT_PATH="${DEFAULT_FONT_PATH},/Library/Fonts,/System/Library/Fonts" ;;
esac esac
--- xorg-server-1.4.99.902/hw/xfree86/utils/xorgconfig/xorgconfig.c.orig 2008-04-10 20:58:01.000000000 +0200
+++ xorg-server-1.4.99.902/hw/xfree86/utils/xorgconfig/xorgconfig.c 2008-06-16 19:26:46.000000000 +0200
@@ -1908,14 +1908,12 @@
{
/* " FontPath \"" TREEROOTFONT "/75dpi/\"\n"*/
"/local/",
- "/misc/",
+ "/misc/:unscaled",
"/75dpi/:unscaled",
"/100dpi/:unscaled",
"/Type1/",
"/TrueType/",
"/freefont/",
- "/75dpi/",
- "/100dpi/",
0 /* end of fontpaths */
};

View File

@ -1,70 +0,0 @@
commit 59f9fb4b8c031df69b3592a26b77e744ff4a556e
Author: Luc Verhaegen <libv@skynet.be>
Date: Fri Nov 7 19:11:11 2008 +0100
XAA PixmapOps: Sync before accessing unwrapped callbacks.
When using any XAAPixmapOps, we call into unknown but freshly
unwrapped callbacks (like fb ones). Unlike the XAA*Fallback calls,
we did so without syncing first, exposing us to all kinds of
synchronisation issues.
I believe that the rendering errors appeared now because *PaintWindow
vanished (e4d11e58), and we just use miPaintWindow instead. This
takes a less direct route to the hw and ends up at
PolyFillRectPixmap, which very often left drawing artifacts.
We now sync accordingly, and no longer get the rendering artifacts i
was methodically reproducing on radeonhd, radeon, unichrome...
Also, in order to allow driver authors to remove extensive syncing
or flushing to hide this issue, create XAA_VERSION_ defines, put
them in xaa.h and bump the patchlevel.
(novell bug #435791)
diff --git a/hw/xfree86/xaa/xaa.h b/hw/xfree86/xaa/xaa.h
index 1dc7ed2..d6ccc31 100644
--- a/hw/xfree86/xaa/xaa.h
+++ b/hw/xfree86/xaa/xaa.h
@@ -2,6 +2,10 @@
#ifndef _XAA_H
#define _XAA_H
+#define XAA_VERSION_MAJOR 1
+#define XAA_VERSION_MINOR 2
+#define XAA_VERSION_RELEASE 1
+
/*
******** OPERATION SPECIFIC FLAGS *********
diff --git a/hw/xfree86/xaa/xaaInitAccel.c b/hw/xfree86/xaa/xaaInitAccel.c
index 53795f0..0672bcf 100644
--- a/hw/xfree86/xaa/xaaInitAccel.c
+++ b/hw/xfree86/xaa/xaaInitAccel.c
@@ -100,7 +100,9 @@ static XF86ModuleVersionInfo xaaVersRec =
MODINFOSTRING1,
MODINFOSTRING2,
XORG_VERSION_CURRENT,
- 1, 2, 0,
+ XAA_VERSION_MAJOR,
+ XAA_VERSION_MINOR,
+ XAA_VERSION_RELEASE,
ABI_CLASS_VIDEODRV, /* requires the video driver ABI */
ABI_VIDEODRV_VERSION,
MOD_CLASS_NONE,
diff --git a/hw/xfree86/xaa/xaawrap.h b/hw/xfree86/xaa/xaawrap.h
index 38c97d7..857dbc3 100644
--- a/hw/xfree86/xaa/xaawrap.h
+++ b/hw/xfree86/xaa/xaawrap.h
@@ -48,8 +48,8 @@
XAAPixmapPtr pixPriv = XAA_GET_PIXMAP_PRIVATE((PixmapPtr)(pDraw));\
GCFuncs *oldFuncs = pGC->funcs;\
pGC->funcs = pGCPriv->wrapFuncs;\
- pGC->ops = pGCPriv->wrapOps
-
+ pGC->ops = pGCPriv->wrapOps; \
+ SYNC_CHECK(pGC)
#define XAA_PIXMAP_OP_EPILOGUE(pGC)\
pGCPriv->wrapOps = pGC->ops;\

View File

@ -1,49 +0,0 @@
commit a9e20306fbe3262602f21b876a52a1ef38cdf20a
Author: Egbert Eich <eich@ovid.suse.de>
Date: Fri Nov 21 18:50:01 2008 +0100
int10: Do an mprotect(..,PROT_EXEC) on shmat()ed memory ranges.
When the linux kernel sets the NX bit vm86 segfaults when it tries to execute
code in memory that is not marked EXEC. Such code gets called whenever
we return from a VBIOS call to signal the calling program that the call
is actually finished and that we are not trapping for other reasons (like
IO accesses).
Use mprotect(2) to set these memory ranges PROT_EXEC.
diff --git a/hw/xfree86/os-support/linux/int10/linux.c b/hw/xfree86/os-support/linux/int10/linux.c
index 67eb161..b15f7fd 100644
--- a/hw/xfree86/os-support/linux/int10/linux.c
+++ b/hw/xfree86/os-support/linux/int10/linux.c
@@ -1,6 +1,6 @@
/*
* linux specific part of the int10 module
- * Copyright 1999, 2000, 2001, 2002, 2003, 2004 Egbert Eich
+ * Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2008 Egbert Eich
*/
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
@@ -357,7 +357,10 @@ MapCurrentInt10(xf86Int10InfoPtr pInt)
"shmat(low_mem) error: %s\n",strerror(errno));
return FALSE;
}
-
+ if (mprotect((void*)0, V_RAM, PROT_READ|PROT_WRITE|PROT_EXEC) != 0)
+ xf86DrvMsg(pInt->scrnIndex, X_ERROR,
+ "Cannot set EXEC bit on low memory: %s\n", strerror(errno));
+
if (((linuxInt10Priv*)pInt->private)->highMem >= 0) {
addr = shmat(((linuxInt10Priv*)pInt->private)->highMem,
(char*)HIGH_MEM, 0);
@@ -368,6 +371,11 @@ MapCurrentInt10(xf86Int10InfoPtr pInt)
"shmget error: %s\n",strerror(errno));
return FALSE;
}
+ if (mprotect((void*)HIGH_MEM, HIGH_MEM_SIZE,
+ PROT_READ|PROT_WRITE|PROT_EXEC) != 0)
+ xf86DrvMsg(pInt->scrnIndex, X_ERROR,
+ "Cannot set EXEC bit on high memory: %s\n",
+ strerror(errno));
} else {
if ((fd = open(DEV_MEM, O_RDWR, 0)) >= 0) {
if (mmap((void *)(V_BIOS), SYS_BIOS - V_BIOS,

View File

@ -1,23 +1,19 @@
Index: events.c --- dix/events.c.orig 2009-02-25 20:12:10.000000000 +0100
=================================================================== +++ dix/events.c 2009-02-27 16:53:47.000000000 +0100
RCS file: /home/eich/cvs/xc/programs/Xserver/dix/events.c,v @@ -786,37 +786,80 @@ ConfineToShape(DeviceIntPtr pDev, Region
retrieving revision 1.1.1.19
diff -u -r1.1.1.19 events.c
--- dix/events.c.orig 26 Aug 2004 12:09:13 -0000 1.1.1.19
+++ dix/events.c 2 Mar 2005 20:04:13 -0000
@@ -656,35 +656,79 @@
{ {
BoxRec box; BoxRec box;
int x = *px, y = *py; int x = *px, y = *py;
- int incx = 1, incy = 1; - int incx = 1, incy = 1;
- SpritePtr pSprite;
+ int nbox; + int nbox;
+ BoxPtr pbox; + BoxPtr pbox;
+ int d, min = (~0U >> 1), dx2, dy2, x_r, y_r; + int d, min = (~0U >> 1), dx2, dy2, x_r, y_r;
+
if (POINT_IN_REGION(sprite.hot.pScreen, shape, x, y, &box)) pSprite = pDev->spriteInfo->sprite;
if (POINT_IN_REGION(pSprite->hot.pScreen, shape, x, y, &box))
return; return;
- box = *REGION_EXTENTS(sprite.hot.pScreen, shape); - box = *REGION_EXTENTS(pSprite->hot.pScreen, shape);
- /* this is rather crude */ - /* this is rather crude */
- do { - do {
- x += incx; - x += incx;
@ -27,27 +23,27 @@ diff -u -r1.1.1.19 events.c
- x = *px - 1; - x = *px - 1;
+ +
+ for (nbox = REGION_NUM_RECTS (shape), + for (nbox = REGION_NUM_RECTS (shape),
+ pbox = REGION_RECTS(shape); + pbox = REGION_RECTS(shape);
+ nbox--; + nbox--;
+ pbox++) + pbox++)
+ { + {
+ if (pbox->x1 < x && pbox->x2 > x) { + if (pbox->x1 < x && pbox->x2 > x) {
+ d = pbox->y1 - y; + d = pbox->y1 - y;
+ if (d >= 0) { + if (d >= 0) {
+ d *= d; + d *= d;
+ if (d < min) { + if (d < min) {
+ *px = x; + *px = x;
+ *py = pbox->y1 + 1; + *py = pbox->y1 + 1;
+ min = d; + min = d;
+ } + }
+ } else { + } else {
+ d = pbox->y2 - y; d *= d; + d = pbox->y2 - y; d *= d;
+ if (d < min) { + if (d < min) {
+ *px = x; + *px = x;
+ *py = pbox->y2 - 1; + *py = pbox->y2 - 1;
+ min = d; + min = d;
+ } + }
+ } + }
} }
- else if (x < box.x1) - else if (x < box.x1)
- { - {
@ -58,54 +54,53 @@ diff -u -r1.1.1.19 events.c
- { - {
- incy = -1; - incy = -1;
- y = *py - 1; - y = *py - 1;
+ else if (pbox->y1 < y && pbox->y2 > y) { + else if (pbox->y1 < y && pbox->y2 > y) {
+ d = pbox->x1 - x; + d = pbox->x1 - x;
+ if (d >= 0) { + if (d >= 0) {
+ d *= d; + d *= d;
+ if (d < min) { + if (d < min) {
+ *px = pbox->x1 + 1; + *px = pbox->x1 + 1;
+ *py = y; + *py = y;
+ min = d; + min = d;
+ } + }
+ } else { + } else {
+ d = pbox->x2 - x; d *= d; + d = pbox->x2 - x; d *= d;
+ if (d < min) { + if (d < min) {
+ *px = pbox->x2 - 1; + *px = pbox->x2 - 1;
+ *py = y; + *py = y;
+ min = d; + min = d;
+ } + }
+ } + }
+ +
+ } else { + } else {
+ dx2 = pbox->x1 - x; + dx2 = pbox->x1 - x;
+ if (dx2 >= 0) { + if (dx2 >= 0) {
+ dx2 *= dx2; + dx2 *= dx2;
+ x_r = pbox->x1 + 1; + x_r = pbox->x1 + 1;
+ } else { + } else {
+ dx2 = pbox->x2 - x; dx2 *= dx2; + dx2 = pbox->x2 - x; dx2 *= dx2;
+ x_r = pbox->x2 - 1; + x_r = pbox->x2 - 1;
+ } + }
+ dy2 = pbox->y1 - y; + dy2 = pbox->y1 - y;
+ if (dy2 >= 0) { + if (dy2 >= 0) {
+ dy2 *= dy2; + dy2 *= dy2;
+ y_r = pbox->y1 + 1; + y_r = pbox->y1 + 1;
+ } else { + } else {
+ dy2 = pbox->y2 - y; dy2 *= dy2; + dy2 = pbox->y2 - y; dy2 *= dy2;
+ y_r = pbox->y2 - 1; + y_r = pbox->y2 - 1;
+ } + }
+ if ((d = dx2 + dy2) < min) { + if ((d = dx2 + dy2) < min) {
+ *px = x_r; + *px = x_r;
+ *py = y_r; + *py = y_r;
+ min = d; + min = d;
} }
- else if (y < box.y1) - else if (y < box.y1)
- return; /* should never get here! */ - return; /* should never get here! */
} }
- } while (!POINT_IN_REGION(sprite.hot.pScreen, shape, x, y, &box)); - } while (!POINT_IN_REGION(pSprite->hot.pScreen, shape, x, y, &box));
- *px = x; - *px = x;
- *py = y; - *py = y;
+ } + }
+
} }
#endif
static void

View File

@ -1,935 +0,0 @@
commit 322335d5b5b6f155f56fe3c1cbe372f13dc20932
Author: Luc Verhaegen <libv@skynet.be>
Date: Thu Oct 9 22:21:05 2008 +0200
DGA: Mash together xf86dga.c and xf86dga2.c.
This in preparation for an upcoming client state tracking fix.
diff --git a/hw/xfree86/dixmods/extmod/Makefile.am b/hw/xfree86/dixmods/extmod/Makefile.am
index 317971d..dd4ccd6 100644
--- a/hw/xfree86/dixmods/extmod/Makefile.am
+++ b/hw/xfree86/dixmods/extmod/Makefile.am
@@ -4,7 +4,7 @@ extsmoduledir = $(moduledir)/extensions
extsmodule_LTLIBRARIES = libextmod.la
if DGA
-DGA_SRCS = xf86dga.c xf86dga2.c dgaproc.h xf86dgaext.h
+DGA_SRCS = xf86dga2.c dgaproc.h xf86dgaext.h
endif
if XV
diff --git a/hw/xfree86/dixmods/extmod/xf86dga.c b/hw/xfree86/dixmods/extmod/xf86dga.c
deleted file mode 100644
index c66bca2..0000000
--- a/hw/xfree86/dixmods/extmod/xf86dga.c
+++ /dev/null
@@ -1,309 +0,0 @@
-
-/*
-
-Copyright (c) 1995 Jon Tombs
-Copyright (c) 1995, 1996, 1999 XFree86 Inc
-
-*/
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#define NEED_REPLIES
-#define NEED_EVENTS
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "misc.h"
-#include "dixstruct.h"
-#include "extnsionst.h"
-#include "colormapst.h"
-#include "cursorstr.h"
-#include "scrnintstr.h"
-#include "servermd.h"
-#define _XF86DGA_SERVER_
-#include <X11/extensions/xf86dga.h>
-#include <X11/extensions/xf86dgastr.h>
-#include "swaprep.h"
-#include "dgaproc.h"
-
-#include "xf86dgaext.h"
-
-
-static DISPATCH_PROC(ProcXF86DGADirectVideo);
-static DISPATCH_PROC(ProcXF86DGAGetVidPage);
-static DISPATCH_PROC(ProcXF86DGAGetVideoLL);
-static DISPATCH_PROC(ProcXF86DGAGetViewPortSize);
-static DISPATCH_PROC(ProcXF86DGASetVidPage);
-static DISPATCH_PROC(ProcXF86DGASetViewPort);
-static DISPATCH_PROC(ProcXF86DGAInstallColormap);
-static DISPATCH_PROC(ProcXF86DGAQueryDirectVideo);
-static DISPATCH_PROC(ProcXF86DGAViewPortChanged);
-
-
-static int
-ProcXF86DGAGetVideoLL(ClientPtr client)
-{
- REQUEST(xXF86DGAGetVideoLLReq);
- xXF86DGAGetVideoLLReply rep;
- XDGAModeRec mode;
- int num, offset, flags;
- char *name;
-
- if (stuff->screen > screenInfo.numScreens)
- return BadValue;
-
- REQUEST_SIZE_MATCH(xXF86DGAGetVideoLLReq);
- rep.type = X_Reply;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
-
- if(!DGAAvailable(stuff->screen))
- return (DGAErrorBase + XF86DGANoDirectVideoMode);
-
- if(!(num = DGAGetOldDGAMode(stuff->screen)))
- return (DGAErrorBase + XF86DGANoDirectVideoMode);
-
- /* get the parameters for the mode that best matches */
- DGAGetModeInfo(stuff->screen, &mode, num);
-
- if(!DGAOpenFramebuffer(stuff->screen, &name,
- (unsigned char**)(&rep.offset),
- (int*)(&rep.bank_size), &offset, &flags))
- return BadAlloc;
-
- rep.offset += mode.offset;
- rep.width = mode.bytesPerScanline / (mode.bitsPerPixel >> 3);
- rep.ram_size = rep.bank_size >> 10;
-
- WriteToClient(client, SIZEOF(xXF86DGAGetVideoLLReply), (char *)&rep);
- return (client->noClientException);
-}
-
-static int
-ProcXF86DGADirectVideo(ClientPtr client)
-{
- int num;
- PixmapPtr pix;
- XDGAModeRec mode;
- REQUEST(xXF86DGADirectVideoReq);
-
- if (stuff->screen > screenInfo.numScreens)
- return BadValue;
-
- REQUEST_SIZE_MATCH(xXF86DGADirectVideoReq);
-
- if (!DGAAvailable(stuff->screen))
- return DGAErrorBase + XF86DGANoDirectVideoMode;
-
- if (stuff->enable & XF86DGADirectGraphics) {
- if(!(num = DGAGetOldDGAMode(stuff->screen)))
- return (DGAErrorBase + XF86DGANoDirectVideoMode);
- } else
- num = 0;
-
- if(Success != DGASetMode(stuff->screen, num, &mode, &pix))
- return (DGAErrorBase + XF86DGAScreenNotActive);
-
- DGASetInputMode (stuff->screen,
- (stuff->enable & XF86DGADirectKeyb) != 0,
- (stuff->enable & XF86DGADirectMouse) != 0);
-
- return (client->noClientException);
-}
-
-static int
-ProcXF86DGAGetViewPortSize(ClientPtr client)
-{
- int num;
- XDGAModeRec mode;
- REQUEST(xXF86DGAGetViewPortSizeReq);
- xXF86DGAGetViewPortSizeReply rep;
-
- if (stuff->screen > screenInfo.numScreens)
- return BadValue;
-
- REQUEST_SIZE_MATCH(xXF86DGAGetViewPortSizeReq);
- rep.type = X_Reply;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
-
- if (!DGAAvailable(stuff->screen))
- return (DGAErrorBase + XF86DGANoDirectVideoMode);
-
- if(!(num = DGAGetOldDGAMode(stuff->screen)))
- return (DGAErrorBase + XF86DGANoDirectVideoMode);
-
- DGAGetModeInfo(stuff->screen, &mode, num);
-
- rep.width = mode.viewportWidth;
- rep.height = mode.viewportHeight;
-
- WriteToClient(client, SIZEOF(xXF86DGAGetViewPortSizeReply), (char *)&rep);
- return (client->noClientException);
-}
-
-static int
-ProcXF86DGASetViewPort(ClientPtr client)
-{
- REQUEST(xXF86DGASetViewPortReq);
-
- if (stuff->screen > screenInfo.numScreens)
- return BadValue;
-
- REQUEST_SIZE_MATCH(xXF86DGASetViewPortReq);
-
- if (!DGAAvailable(stuff->screen))
- return (DGAErrorBase + XF86DGANoDirectVideoMode);
-
- if (!DGAActive(stuff->screen))
- {
- int num;
- PixmapPtr pix;
- XDGAModeRec mode;
-
- if(!(num = DGAGetOldDGAMode(stuff->screen)))
- return (DGAErrorBase + XF86DGANoDirectVideoMode);
- if(Success != DGASetMode(stuff->screen, num, &mode, &pix))
- return (DGAErrorBase + XF86DGAScreenNotActive);
- }
-
- if (DGASetViewport(stuff->screen, stuff->x, stuff->y, DGA_FLIP_RETRACE)
- != Success)
- return DGAErrorBase + XF86DGADirectNotActivated;
-
- return (client->noClientException);
-}
-
-static int
-ProcXF86DGAGetVidPage(ClientPtr client)
-{
- REQUEST(xXF86DGAGetVidPageReq);
- xXF86DGAGetVidPageReply rep;
-
- if (stuff->screen > screenInfo.numScreens)
- return BadValue;
-
- REQUEST_SIZE_MATCH(xXF86DGAGetVidPageReq);
- rep.type = X_Reply;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
- rep.vpage = 0; /* silently fail */
-
- WriteToClient(client, SIZEOF(xXF86DGAGetVidPageReply), (char *)&rep);
- return (client->noClientException);
-}
-
-
-static int
-ProcXF86DGASetVidPage(ClientPtr client)
-{
- REQUEST(xXF86DGASetVidPageReq);
-
- if (stuff->screen > screenInfo.numScreens)
- return BadValue;
-
- REQUEST_SIZE_MATCH(xXF86DGASetVidPageReq);
-
- /* silently fail */
-
- return (client->noClientException);
-}
-
-
-static int
-ProcXF86DGAInstallColormap(ClientPtr client)
-{
- ColormapPtr pcmp;
- REQUEST(xXF86DGAInstallColormapReq);
-
- REQUEST_SIZE_MATCH(xXF86DGAInstallColormapReq);
-
- if (!DGAActive(stuff->screen))
- return (DGAErrorBase + XF86DGADirectNotActivated);
-
- pcmp = (ColormapPtr )LookupIDByType(stuff->id, RT_COLORMAP);
- if (pcmp) {
- DGAInstallCmap(pcmp);
- return (client->noClientException);
- } else {
- client->errorValue = stuff->id;
- return (BadColor);
- }
-}
-
-static int
-ProcXF86DGAQueryDirectVideo(ClientPtr client)
-{
- REQUEST(xXF86DGAQueryDirectVideoReq);
- xXF86DGAQueryDirectVideoReply rep;
-
- if (stuff->screen > screenInfo.numScreens)
- return BadValue;
-
- REQUEST_SIZE_MATCH(xXF86DGAQueryDirectVideoReq);
- rep.type = X_Reply;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
- rep.flags = 0;
-
- if (DGAAvailable(stuff->screen))
- rep.flags = XF86DGADirectPresent;
-
- WriteToClient(client, SIZEOF(xXF86DGAQueryDirectVideoReply), (char *)&rep);
- return (client->noClientException);
-}
-
-static int
-ProcXF86DGAViewPortChanged(ClientPtr client)
-{
- REQUEST(xXF86DGAViewPortChangedReq);
- xXF86DGAViewPortChangedReply rep;
-
- if (stuff->screen > screenInfo.numScreens)
- return BadValue;
-
- REQUEST_SIZE_MATCH(xXF86DGAViewPortChangedReq);
-
- if (!DGAActive(stuff->screen))
- return (DGAErrorBase + XF86DGADirectNotActivated);
-
- rep.type = X_Reply;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
- rep.result = 1;
-
- WriteToClient(client, SIZEOF(xXF86DGAViewPortChangedReply), (char *)&rep);
- return (client->noClientException);
-}
-
-int
-ProcXF86DGADispatch(register ClientPtr client)
-{
- REQUEST(xReq);
-
- switch (stuff->data)
- {
- case X_XF86DGAGetVideoLL:
- return ProcXF86DGAGetVideoLL(client);
- case X_XF86DGADirectVideo:
- return ProcXF86DGADirectVideo(client);
- case X_XF86DGAGetViewPortSize:
- return ProcXF86DGAGetViewPortSize(client);
- case X_XF86DGASetViewPort:
- return ProcXF86DGASetViewPort(client);
- case X_XF86DGAGetVidPage:
- return ProcXF86DGAGetVidPage(client);
- case X_XF86DGASetVidPage:
- return ProcXF86DGASetVidPage(client);
- case X_XF86DGAInstallColormap:
- return ProcXF86DGAInstallColormap(client);
- case X_XF86DGAQueryDirectVideo:
- return ProcXF86DGAQueryDirectVideo(client);
- case X_XF86DGAViewPortChanged:
- return ProcXF86DGAViewPortChanged(client);
- default:
- return BadRequest;
- }
-}
-
diff --git a/hw/xfree86/dixmods/extmod/xf86dga2.c b/hw/xfree86/dixmods/extmod/xf86dga2.c
index c12178f..100bde9 100644
--- a/hw/xfree86/dixmods/extmod/xf86dga2.c
+++ b/hw/xfree86/dixmods/extmod/xf86dga2.c
@@ -1,8 +1,10 @@
/*
- Copyright (c) 1999 - The XFree86 Project Inc.
-
- Written by Mark Vojkovich
-*/
+ * Copyright (c) 1995 Jon Tombs
+ * Copyright (c) 1995, 1996, 1999 XFree86 Inc
+ * Copyright (c) 1999 - The XFree86 Project Inc.
+ *
+ * Written by Mark Vojkovich
+ */
#ifdef HAVE_XORG_CONFIG_H
@@ -33,6 +35,8 @@
#include "modinit.h"
+#define DGA_PROTOCOL_OLD_SUPPORT 1
+
static DISPATCH_PROC(ProcXDGADispatch);
static DISPATCH_PROC(SProcXDGADispatch);
static DISPATCH_PROC(ProcXDGAQueryVersion);
@@ -141,7 +145,7 @@ ProcXDGAOpenFramebuffer(ClientPtr client)
if (stuff->screen > screenInfo.numScreens)
return BadValue;
- if (!DGAAvailable(stuff->screen))
+ if (!DGAAvailable(stuff->screen))
return DGAErrorBase + XF86DGANoDirectVideoMode;
REQUEST_SIZE_MATCH(xXDGAOpenFramebufferReq);
@@ -149,9 +153,9 @@ ProcXDGAOpenFramebuffer(ClientPtr client)
rep.length = 0;
rep.sequenceNumber = client->sequence;
- if(!DGAOpenFramebuffer(stuff->screen, &deviceName,
+ if(!DGAOpenFramebuffer(stuff->screen, &deviceName,
(unsigned char**)(&rep.mem1),
- (int*)&rep.size, (int*)&rep.offset, (int*)&rep.extra))
+ (int*)&rep.size, (int*)&rep.offset, (int*)&rep.extra))
{
return BadAlloc;
}
@@ -175,7 +179,7 @@ ProcXDGACloseFramebuffer(ClientPtr client)
if (stuff->screen > screenInfo.numScreens)
return BadValue;
- if (!DGAAvailable(stuff->screen))
+ if (!DGAAvailable(stuff->screen))
return DGAErrorBase + XF86DGANoDirectVideoMode;
REQUEST_SIZE_MATCH(xXDGACloseFramebufferReq);
@@ -259,7 +263,7 @@ ProcXDGAQueryModes(ClientPtr client)
info.viewport_flags = mode[i].viewportFlags;
info.reserved1 = mode[i].reserved1;
info.reserved2 = mode[i].reserved2;
-
+
WriteToClient(client, sz_xXDGAModeInfo, (char*)(&info));
WriteToClient(client, size, mode[i].name);
}
@@ -270,7 +274,7 @@ ProcXDGAQueryModes(ClientPtr client)
}
-static void
+static void
DGAClientStateChange (
CallbackListPtr* pcbl,
pointer nulldata,
@@ -287,7 +291,7 @@ DGAClientStateChange (
}
}
- if(client &&
+ if(client &&
((client->clientState == ClientStateGone) ||
(client->clientState == ClientStateRetained))) {
XDGAModeRec mode;
@@ -322,10 +326,10 @@ ProcXDGASetMode(ClientPtr client)
rep.flags = 0;
rep.sequenceNumber = client->sequence;
- if (!DGAAvailable(stuff->screen))
+ if (!DGAAvailable(stuff->screen))
return DGAErrorBase + XF86DGANoDirectVideoMode;
- if(DGAClients[stuff->screen] &&
+ if(DGAClients[stuff->screen] &&
(DGAClients[stuff->screen] != client))
return DGAErrorBase + XF86DGANoDirectVideoMode;
@@ -339,7 +343,7 @@ ProcXDGASetMode(ClientPtr client)
DGASetMode(stuff->screen, 0, &mode, &pPix);
WriteToClient(client, sz_xXDGASetModeReply, (char*)&rep);
return (client->noClientException);
- }
+ }
if(Success != DGASetMode(stuff->screen, stuff->mode, &mode, &pPix))
return BadValue;
@@ -359,7 +363,7 @@ ProcXDGASetMode(ClientPtr client)
}
size = strlen(mode.name) + 1;
-
+
info.byte_order = mode.byteOrder;
info.depth = mode.depth;
info.num = mode.num;
@@ -427,7 +431,7 @@ ProcXDGAInstallColormap(ClientPtr client)
return DGAErrorBase + XF86DGADirectNotActivated;
REQUEST_SIZE_MATCH(xXDGAInstallColormapReq);
-
+
cmap = (ColormapPtr)LookupIDByType(stuff->cmap, RT_COLORMAP);
if (cmap) {
DGAInstallCmap(cmap);
@@ -453,7 +457,7 @@ ProcXDGASelectInput(ClientPtr client)
return DGAErrorBase + XF86DGADirectNotActivated;
REQUEST_SIZE_MATCH(xXDGASelectInputReq);
-
+
if(DGAClients[stuff->screen] == client)
DGASelectInput(stuff->screen, client, stuff->mask);
@@ -473,7 +477,7 @@ ProcXDGAFillRectangle(ClientPtr client)
return DGAErrorBase + XF86DGADirectNotActivated;
REQUEST_SIZE_MATCH(xXDGAFillRectangleReq);
-
+
if(Success != DGAFillRect(stuff->screen, stuff->x, stuff->y,
stuff->width, stuff->height, stuff->color))
return BadMatch;
@@ -493,7 +497,7 @@ ProcXDGACopyArea(ClientPtr client)
return DGAErrorBase + XF86DGADirectNotActivated;
REQUEST_SIZE_MATCH(xXDGACopyAreaReq);
-
+
if(Success != DGABlitRect(stuff->screen, stuff->srcx, stuff->srcy,
stuff->width, stuff->height, stuff->dstx, stuff->dsty))
return BadMatch;
@@ -514,7 +518,7 @@ ProcXDGACopyTransparentArea(ClientPtr client)
return DGAErrorBase + XF86DGADirectNotActivated;
REQUEST_SIZE_MATCH(xXDGACopyTransparentAreaReq);
-
+
if(Success != DGABlitTransRect(stuff->screen, stuff->srcx, stuff->srcy,
stuff->width, stuff->height, stuff->dstx, stuff->dsty, stuff->key))
return BadMatch;
@@ -607,7 +611,7 @@ ProcXDGAChangePixmapMode(ClientPtr client)
rep.type = X_Reply;
rep.length = 0;
rep.sequenceNumber = client->sequence;
-
+
x = stuff->x;
y = stuff->y;
@@ -638,8 +642,8 @@ ProcXDGACreateColormap(ClientPtr client)
if(!stuff->mode)
return BadValue;
-
- result = DGACreateColormap(stuff->screen, client, stuff->id,
+
+ result = DGACreateColormap(stuff->screen, client, stuff->id,
stuff->mode, stuff->alloc);
if(result != Success)
return result;
@@ -647,6 +651,262 @@ ProcXDGACreateColormap(ClientPtr client)
return (client->noClientException);
}
+/*
+ *
+ * Support for the old DGA protocol, used to live in xf86dga.c
+ *
+ */
+
+#ifdef DGA_PROTOCOL_OLD_SUPPORT
+
+static DISPATCH_PROC(ProcXF86DGADirectVideo);
+static DISPATCH_PROC(ProcXF86DGAGetVidPage);
+static DISPATCH_PROC(ProcXF86DGAGetVideoLL);
+static DISPATCH_PROC(ProcXF86DGAGetViewPortSize);
+static DISPATCH_PROC(ProcXF86DGASetVidPage);
+static DISPATCH_PROC(ProcXF86DGASetViewPort);
+static DISPATCH_PROC(ProcXF86DGAInstallColormap);
+static DISPATCH_PROC(ProcXF86DGAQueryDirectVideo);
+static DISPATCH_PROC(ProcXF86DGAViewPortChanged);
+
+
+static int
+ProcXF86DGAGetVideoLL(ClientPtr client)
+{
+ REQUEST(xXF86DGAGetVideoLLReq);
+ xXF86DGAGetVideoLLReply rep;
+ XDGAModeRec mode;
+ int num, offset, flags;
+ char *name;
+
+ if (stuff->screen > screenInfo.numScreens)
+ return BadValue;
+
+ REQUEST_SIZE_MATCH(xXF86DGAGetVideoLLReq);
+ rep.type = X_Reply;
+ rep.length = 0;
+ rep.sequenceNumber = client->sequence;
+
+ if(!DGAAvailable(stuff->screen))
+ return (DGAErrorBase + XF86DGANoDirectVideoMode);
+
+ if(!(num = DGAGetOldDGAMode(stuff->screen)))
+ return (DGAErrorBase + XF86DGANoDirectVideoMode);
+
+ /* get the parameters for the mode that best matches */
+ DGAGetModeInfo(stuff->screen, &mode, num);
+
+ if(!DGAOpenFramebuffer(stuff->screen, &name,
+ (unsigned char**)(&rep.offset),
+ (int*)(&rep.bank_size), &offset, &flags))
+ return BadAlloc;
+
+ rep.offset += mode.offset;
+ rep.width = mode.bytesPerScanline / (mode.bitsPerPixel >> 3);
+ rep.ram_size = rep.bank_size >> 10;
+
+ WriteToClient(client, SIZEOF(xXF86DGAGetVideoLLReply), (char *)&rep);
+ return (client->noClientException);
+}
+
+static int
+ProcXF86DGADirectVideo(ClientPtr client)
+{
+ int num;
+ PixmapPtr pix;
+ XDGAModeRec mode;
+ REQUEST(xXF86DGADirectVideoReq);
+
+ if (stuff->screen > screenInfo.numScreens)
+ return BadValue;
+
+ REQUEST_SIZE_MATCH(xXF86DGADirectVideoReq);
+
+ if (!DGAAvailable(stuff->screen))
+ return DGAErrorBase + XF86DGANoDirectVideoMode;
+
+ if (stuff->enable & XF86DGADirectGraphics) {
+ if(!(num = DGAGetOldDGAMode(stuff->screen)))
+ return (DGAErrorBase + XF86DGANoDirectVideoMode);
+ } else
+ num = 0;
+
+ if(Success != DGASetMode(stuff->screen, num, &mode, &pix))
+ return (DGAErrorBase + XF86DGAScreenNotActive);
+
+ DGASetInputMode (stuff->screen,
+ (stuff->enable & XF86DGADirectKeyb) != 0,
+ (stuff->enable & XF86DGADirectMouse) != 0);
+
+ return (client->noClientException);
+}
+
+static int
+ProcXF86DGAGetViewPortSize(ClientPtr client)
+{
+ int num;
+ XDGAModeRec mode;
+ REQUEST(xXF86DGAGetViewPortSizeReq);
+ xXF86DGAGetViewPortSizeReply rep;
+
+ if (stuff->screen > screenInfo.numScreens)
+ return BadValue;
+
+ REQUEST_SIZE_MATCH(xXF86DGAGetViewPortSizeReq);
+ rep.type = X_Reply;
+ rep.length = 0;
+ rep.sequenceNumber = client->sequence;
+
+ if (!DGAAvailable(stuff->screen))
+ return (DGAErrorBase + XF86DGANoDirectVideoMode);
+
+ if(!(num = DGAGetOldDGAMode(stuff->screen)))
+ return (DGAErrorBase + XF86DGANoDirectVideoMode);
+
+ DGAGetModeInfo(stuff->screen, &mode, num);
+
+ rep.width = mode.viewportWidth;
+ rep.height = mode.viewportHeight;
+
+ WriteToClient(client, SIZEOF(xXF86DGAGetViewPortSizeReply), (char *)&rep);
+ return (client->noClientException);
+}
+
+static int
+ProcXF86DGASetViewPort(ClientPtr client)
+{
+ REQUEST(xXF86DGASetViewPortReq);
+
+ if (stuff->screen > screenInfo.numScreens)
+ return BadValue;
+
+ REQUEST_SIZE_MATCH(xXF86DGASetViewPortReq);
+
+ if (!DGAAvailable(stuff->screen))
+ return (DGAErrorBase + XF86DGANoDirectVideoMode);
+
+ if (!DGAActive(stuff->screen))
+ {
+ int num;
+ PixmapPtr pix;
+ XDGAModeRec mode;
+
+ if(!(num = DGAGetOldDGAMode(stuff->screen)))
+ return (DGAErrorBase + XF86DGANoDirectVideoMode);
+ if(Success != DGASetMode(stuff->screen, num, &mode, &pix))
+ return (DGAErrorBase + XF86DGAScreenNotActive);
+ }
+
+ if (DGASetViewport(stuff->screen, stuff->x, stuff->y, DGA_FLIP_RETRACE)
+ != Success)
+ return DGAErrorBase + XF86DGADirectNotActivated;
+
+ return (client->noClientException);
+}
+
+static int
+ProcXF86DGAGetVidPage(ClientPtr client)
+{
+ REQUEST(xXF86DGAGetVidPageReq);
+ xXF86DGAGetVidPageReply rep;
+
+ if (stuff->screen > screenInfo.numScreens)
+ return BadValue;
+
+ REQUEST_SIZE_MATCH(xXF86DGAGetVidPageReq);
+ rep.type = X_Reply;
+ rep.length = 0;
+ rep.sequenceNumber = client->sequence;
+ rep.vpage = 0; /* silently fail */
+
+ WriteToClient(client, SIZEOF(xXF86DGAGetVidPageReply), (char *)&rep);
+ return (client->noClientException);
+}
+
+
+static int
+ProcXF86DGASetVidPage(ClientPtr client)
+{
+ REQUEST(xXF86DGASetVidPageReq);
+
+ if (stuff->screen > screenInfo.numScreens)
+ return BadValue;
+
+ REQUEST_SIZE_MATCH(xXF86DGASetVidPageReq);
+
+ /* silently fail */
+
+ return (client->noClientException);
+}
+
+
+static int
+ProcXF86DGAInstallColormap(ClientPtr client)
+{
+ ColormapPtr pcmp;
+ REQUEST(xXF86DGAInstallColormapReq);
+
+ REQUEST_SIZE_MATCH(xXF86DGAInstallColormapReq);
+
+ if (!DGAActive(stuff->screen))
+ return (DGAErrorBase + XF86DGADirectNotActivated);
+
+ pcmp = (ColormapPtr )LookupIDByType(stuff->id, RT_COLORMAP);
+ if (pcmp) {
+ DGAInstallCmap(pcmp);
+ return (client->noClientException);
+ } else {
+ client->errorValue = stuff->id;
+ return (BadColor);
+ }
+}
+
+static int
+ProcXF86DGAQueryDirectVideo(ClientPtr client)
+{
+ REQUEST(xXF86DGAQueryDirectVideoReq);
+ xXF86DGAQueryDirectVideoReply rep;
+
+ if (stuff->screen > screenInfo.numScreens)
+ return BadValue;
+
+ REQUEST_SIZE_MATCH(xXF86DGAQueryDirectVideoReq);
+ rep.type = X_Reply;
+ rep.length = 0;
+ rep.sequenceNumber = client->sequence;
+ rep.flags = 0;
+
+ if (DGAAvailable(stuff->screen))
+ rep.flags = XF86DGADirectPresent;
+
+ WriteToClient(client, SIZEOF(xXF86DGAQueryDirectVideoReply), (char *)&rep);
+ return (client->noClientException);
+}
+
+static int
+ProcXF86DGAViewPortChanged(ClientPtr client)
+{
+ REQUEST(xXF86DGAViewPortChangedReq);
+ xXF86DGAViewPortChangedReply rep;
+
+ if (stuff->screen > screenInfo.numScreens)
+ return BadValue;
+
+ REQUEST_SIZE_MATCH(xXF86DGAViewPortChangedReq);
+
+ if (!DGAActive(stuff->screen))
+ return (DGAErrorBase + XF86DGADirectNotActivated);
+
+ rep.type = X_Reply;
+ rep.length = 0;
+ rep.sequenceNumber = client->sequence;
+ rep.result = 1;
+
+ WriteToClient(client, SIZEOF(xXF86DGAViewPortChangedReply), (char *)&rep);
+ return (client->noClientException);
+}
+
+#endif /* DGA_PROTOCOL_OLD_SUPPORT */
static int
SProcXDGADispatch (ClientPtr client)
@@ -702,15 +962,11 @@ ProcXDGADispatch (ClientPtr client)
if (stuff->data <= X_XDGACreateColormap)
fprintf (stderr, " DGA %s\n", dgaMinor[stuff->data]);
#endif
-
- /* divert old protocol */
-#if 1
- if( (stuff->data <= X_XF86DGAViewPortChanged) &&
- (stuff->data >= X_XF86DGAGetVideoLL))
- return ProcXF86DGADispatch(client);
-#endif
switch (stuff->data){
+ /*
+ * DGA2 Protocol
+ */
case X_XDGAQueryVersion:
return ProcXDGAQueryVersion(client);
case X_XDGAQueryModes:
@@ -743,6 +999,29 @@ ProcXDGADispatch (ClientPtr client)
return ProcXDGAChangePixmapMode(client);
case X_XDGACreateColormap:
return ProcXDGACreateColormap(client);
+ /*
+ * Old DGA Protocol
+ */
+#ifdef DGA_PROTOCOL_OLD_SUPPORT
+ case X_XF86DGAGetVideoLL:
+ return ProcXF86DGAGetVideoLL(client);
+ case X_XF86DGADirectVideo:
+ return ProcXF86DGADirectVideo(client);
+ case X_XF86DGAGetViewPortSize:
+ return ProcXF86DGAGetViewPortSize(client);
+ case X_XF86DGASetViewPort:
+ return ProcXF86DGASetViewPort(client);
+ case X_XF86DGAGetVidPage:
+ return ProcXF86DGAGetVidPage(client);
+ case X_XF86DGASetVidPage:
+ return ProcXF86DGASetVidPage(client);
+ case X_XF86DGAInstallColormap:
+ return ProcXF86DGAInstallColormap(client);
+ case X_XF86DGAQueryDirectVideo:
+ return ProcXF86DGAQueryDirectVideo(client);
+ case X_XF86DGAViewPortChanged:
+ return ProcXF86DGAViewPortChanged(client);
+#endif /* DGA_PROTOCOL_OLD_SUPPORT */
default:
return BadRequest;
}
@@ -751,5 +1030,5 @@ ProcXDGADispatch (ClientPtr client)
void
XFree86DGARegister(INITARGS)
{
- XDGAEventBase = &DGAEventBase;
+ XDGAEventBase = &DGAEventBase;
}
commit 2d9da7a5f384d5f38b2be79b1ea0df5a3deb52d1
Author: Luc Verhaegen <libv@skynet.be>
Date: Thu Oct 9 22:22:53 2008 +0200
DGA: Track client state even when using old style DGA.
This fixes the issue that a badly killed DGA will keep on hogging
mode/framebuffer/mouse/keyboard.
diff --git a/hw/xfree86/dixmods/extmod/xf86dga2.c b/hw/xfree86/dixmods/extmod/xf86dga2.c
index 100bde9..df0030e 100644
--- a/hw/xfree86/dixmods/extmod/xf86dga2.c
+++ b/hw/xfree86/dixmods/extmod/xf86dga2.c
@@ -725,6 +725,10 @@ ProcXF86DGADirectVideo(ClientPtr client)
if (!DGAAvailable(stuff->screen))
return DGAErrorBase + XF86DGANoDirectVideoMode;
+ if (DGAClients[stuff->screen] &&
+ (DGAClients[stuff->screen] != client))
+ return DGAErrorBase + XF86DGANoDirectVideoMode;
+
if (stuff->enable & XF86DGADirectGraphics) {
if(!(num = DGAGetOldDGAMode(stuff->screen)))
return (DGAErrorBase + XF86DGANoDirectVideoMode);
@@ -738,6 +742,24 @@ ProcXF86DGADirectVideo(ClientPtr client)
(stuff->enable & XF86DGADirectKeyb) != 0,
(stuff->enable & XF86DGADirectMouse) != 0);
+ /* We need to track the client and attach the teardown callback */
+ if (stuff->enable &
+ (XF86DGADirectGraphics | XF86DGADirectKeyb | XF86DGADirectMouse)) {
+ if (!DGAClients[stuff->screen]) {
+ if (DGACallbackRefCount++ == 0)
+ AddCallback (&ClientStateCallback, DGAClientStateChange, NULL);
+ }
+
+ DGAClients[stuff->screen] = client;
+ } else {
+ if (DGAClients[stuff->screen]) {
+ if (--DGACallbackRefCount == 0)
+ DeleteCallback(&ClientStateCallback, DGAClientStateChange, NULL);
+ }
+
+ DGAClients[stuff->screen] = NULL;
+ }
+
return (client->noClientException);
}
@@ -780,22 +802,16 @@ ProcXF86DGASetViewPort(ClientPtr client)
if (stuff->screen > screenInfo.numScreens)
return BadValue;
+ if (DGAClients[stuff->screen] != client)
+ return DGAErrorBase + XF86DGADirectNotActivated;
+
REQUEST_SIZE_MATCH(xXF86DGASetViewPortReq);
if (!DGAAvailable(stuff->screen))
return (DGAErrorBase + XF86DGANoDirectVideoMode);
if (!DGAActive(stuff->screen))
- {
- int num;
- PixmapPtr pix;
- XDGAModeRec mode;
-
- if(!(num = DGAGetOldDGAMode(stuff->screen)))
- return (DGAErrorBase + XF86DGANoDirectVideoMode);
- if(Success != DGASetMode(stuff->screen, num, &mode, &pix))
- return (DGAErrorBase + XF86DGAScreenNotActive);
- }
+ return DGAErrorBase + XF86DGADirectNotActivated;
if (DGASetViewport(stuff->screen, stuff->x, stuff->y, DGA_FLIP_RETRACE)
!= Success)
@@ -846,6 +862,12 @@ ProcXF86DGAInstallColormap(ClientPtr client)
ColormapPtr pcmp;
REQUEST(xXF86DGAInstallColormapReq);
+ if (stuff->screen > screenInfo.numScreens)
+ return BadValue;
+
+ if (DGAClients[stuff->screen] != client)
+ return DGAErrorBase + XF86DGADirectNotActivated;
+
REQUEST_SIZE_MATCH(xXF86DGAInstallColormapReq);
if (!DGAActive(stuff->screen))
@@ -892,6 +914,9 @@ ProcXF86DGAViewPortChanged(ClientPtr client)
if (stuff->screen > screenInfo.numScreens)
return BadValue;
+ if (DGAClients[stuff->screen] != client)
+ return DGAErrorBase + XF86DGADirectNotActivated;
+
REQUEST_SIZE_MATCH(xXF86DGAViewPortChangedReq);
if (!DGAActive(stuff->screen))

View File

@ -1,15 +1,3 @@
--- hw/xfree86/fbdevhw/fbdevhw.c.orig 2007-09-03 20:48:47.000000000 +0000
+++ hw/xfree86/fbdevhw/fbdevhw.c 2007-09-03 20:53:12.000000000 +0000
@@ -245,7 +245,8 @@
set->green.length == req->green.length &&
set->blue.length == req->blue.length &&
set->xres == req->xres && set->yres == req->yres &&
- set->pixclock == req->pixclock &&
+ /* xenfb sets pixclock to 0 (Novell Bug #285523) */
+ ((set->pixclock == req->pixclock) || !set->pixclock) &&
set->right_margin == req->right_margin &&
set->hsync_len == req->hsync_len &&
set->left_margin == req->left_margin &&
--- hw/xfree86/fbdevhw/fbdevhw.c.orig 2008-04-20 03:06:32.000000000 +0000 --- hw/xfree86/fbdevhw/fbdevhw.c.orig 2008-04-20 03:06:32.000000000 +0000
+++ hw/xfree86/fbdevhw/fbdevhw.c 2008-04-20 03:30:00.000000000 +0000 +++ hw/xfree86/fbdevhw/fbdevhw.c 2008-04-20 03:30:00.000000000 +0000
@@ -923,9 +923,10 @@ fbdevHWDPMSSet(ScrnInfoPtr pScrn, int mo @@ -923,9 +923,10 @@ fbdevHWDPMSSet(ScrnInfoPtr pScrn, int mo

View File

@ -1,29 +0,0 @@
--- mi/mipointer.c.orig 2008-10-17 15:46:26.000000000 +0200
+++ mi/mipointer.c 2008-10-17 15:47:11.000000000 +0200
@@ -252,7 +252,7 @@ miPointerWarpCursor (pScreen, x, y)
{
miPointer.devx = x;
miPointer.devy = y;
- if(!miPointer.pCursor->bits->emptyMask)
+ if(miPointer.pCursor && !miPointer.pCursor->bits->emptyMask)
(*pScreenPriv->spriteFuncs->MoveCursor) (pScreen, x, y);
}
miPointer.x = x;
@@ -345,7 +345,7 @@ miPointerUpdateSprite (DeviceIntPtr pDev
{
miPointer.devx = x;
miPointer.devy = y;
- if(!miPointer.pCursor->bits->emptyMask)
+ if(miPointer.pCursor && !miPointer.pCursor->bits->emptyMask)
(*pScreenPriv->spriteFuncs->MoveCursor) (pScreen, x, y);
}
}
@@ -416,7 +416,7 @@ miPointerMoved (DeviceIntPtr pDev, Scree
{
miPointer.devx = x;
miPointer.devy = y;
- if(!miPointer.pCursor->bits->emptyMask)
+ if(miPointer.pCursor && !miPointer.pCursor->bits->emptyMask)
(*pScreenPriv->spriteFuncs->MoveCursor) (pScreen, x, y);
}

View File

@ -24,19 +24,19 @@ diff -u -r1.5 VTsw_usl.c
return(TRUE); return(TRUE);
} }
} }
--- linux/lnx_init.c.orig 2007-08-23 21:04:53.000000000 +0200 --- linux/lnx_init.c.orig 2009-02-27 15:41:39.000000000 +0100
+++ linux/lnx_init.c 2007-09-29 16:19:53.771798500 +0200 +++ linux/lnx_init.c 2009-02-27 15:41:47.000000000 +0100
@@ -240,9 +240,6 @@ @@ -252,9 +252,6 @@ xf86OpenConsole(void)
if (!ShareVTs)
{ {
struct termios nTty;
-#if defined(DO_OS_FONTRESTORE) -#if defined(DO_OS_FONTRESTORE)
- lnx_savefont(); - lnx_savefont();
-#endif -#endif
/* /*
* now get the VT. This _must_ succeed, or else fail completely. * now get the VT. This _must_ succeed, or else fail completely.
*/ */
@@ -254,6 +251,10 @@ @@ -266,6 +263,10 @@ xf86OpenConsole(void)
FatalError("xf86OpenConsole: VT_WAITACTIVE failed: %s\n", FatalError("xf86OpenConsole: VT_WAITACTIVE failed: %s\n",
strerror(errno)); strerror(errno));
@ -47,19 +47,19 @@ diff -u -r1.5 VTsw_usl.c
if (ioctl(xf86Info.consoleFd, VT_GETMODE, &VT) < 0) if (ioctl(xf86Info.consoleFd, VT_GETMODE, &VT) < 0)
FatalError("xf86OpenConsole: VT_GETMODE failed %s\n", FatalError("xf86OpenConsole: VT_GETMODE failed %s\n",
strerror(errno)); strerror(errno));
@@ -342,6 +343,11 @@ @@ -384,6 +385,11 @@ xf86CloseConsole()
if (VTSwitch) if (VTSwitch)
{ {
+#if defined(DO_OS_FONTRESTORE) +#if defined(DO_OS_FONTRESTORE)
+ if (xf86Info.vtno == vtno) /* check if we are active */ + if (xf86Info.vtno == vtno) /* check if we are active */
+ lnx_restorefont(); + lnx_restorefont();
+ lnx_freefontdata(); + lnx_freefontdata();
+#endif +#endif
/* /*
* Perform a switch back to the active VT when we were started * Perform a switch back to the active VT when we were started
*/ */
@@ -356,11 +362,6 @@ @@ -398,11 +404,6 @@ xf86CloseConsole()
activeVT = -1; activeVT = -1;
} }

View File

@ -1,50 +0,0 @@
Index: programs/Xserver/hw/xfree86/common/xf86MiscExt.c
===================================================================
RCS file: /home/eich/cvs/xc/programs/Xserver/hw/xfree86/common/xf86MiscExt.c,v
retrieving revision 1.1.1.15
diff -u -r1.1.1.15 xf86MiscExt.c
--- programs/Xserver/hw/xfree86/common/xf86MiscExt.c 6 Jul 2004 15:12:40 -0000 1.1.1.15
+++ programs/Xserver/hw/xfree86/common/xf86MiscExt.c 17 Mar 2005 18:39:52 -0000
@@ -166,6 +166,11 @@
*devname = xf86FindOptionValue(pInfo->options, "Device");
pMse = pInfo->private;
+ if (pMse->magic != MOUSE_MAGIC
+ || pMse->size != sizeof(*pMse))
+ return FALSE;
+
+
mseptr->type = MapMseProtoToMisc(pMse->protocolID);
mseptr->baudrate = pMse->baudRate;
mseptr->samplerate = pMse->sampleRate;
@@ -533,6 +538,11 @@
pInfo = mse->private;
pMse = pInfo->private;
+
+ if (pMse->magic != MOUSE_MAGIC
+ || pMse->size != sizeof(*pMse))
+ return MISC_RET_NOMODULE;
+
oldflags = pMse->mouseFlags;
newProtocol = MapMseMiscToProto(mse->type);
Index: programs/Xserver/hw/xfree86/os-support/xf86OSmouse.h
===================================================================
RCS file: /home/eich/cvs/xc/programs/Xserver/hw/xfree86/os-support/xf86OSmouse.h,v
retrieving revision 1.1.1.21
diff -u -r1.1.1.21 xf86OSmouse.h
--- programs/Xserver/hw/xfree86/os-support/xf86OSmouse.h 1 Nov 2004 16:46:39 -0000 1.1.1.21
+++ programs/Xserver/hw/xfree86/os-support/xf86OSmouse.h 17 Mar 2005 18:39:52 -0000
@@ -204,7 +204,11 @@
int dx, int dy, int dz, int dw);
typedef void (*MouseCommonOptProc)(InputInfoPtr pInfo);
+#define MOUSE_MAGIC 15031995
+
typedef struct _MouseDevRec {
+ unsigned long magic;
+ int size;
PtrCtrlProcPtr Ctrl;
PostMseEventProc PostEvent;
MouseCommonOptProc CommonOptions;

View File

@ -1,218 +0,0 @@
--- hw/xfree86/common/Makefile.am.orig 2008-05-21 23:51:52.000000000 +0200
+++ hw/xfree86/common/Makefile.am 2008-06-16 17:42:56.000000000 +0200
@@ -29,7 +29,7 @@
BUILT_SOURCES = xf86DefModeSet.c
AM_LDFLAGS = -r
-libcommon_la_SOURCES = xf86Configure.c xf86Bus.c xf86Config.c \
+libcommon_la_SOURCES = xf86Configure.c xf86ShowOpts.c xf86Bus.c xf86Config.c \
xf86Cursor.c xf86DGA.c xf86DPMS.c \
xf86DoProbe.c xf86Events.c \
xf86Globals.c xf86AutoConfig.c \
--- hw/xfree86/common.orig/xf86.h 2006-08-06 18:01:51.000000000 +0200
+++ hw/xfree86/common/xf86.h 2006-08-06 18:05:18.000000000 +0200
@@ -48,6 +48,7 @@
/* General parameters */
extern int xf86DoConfigure;
+extern int xf86DoShowOptions;
extern Bool xf86DoConfigurePass1;
extern int xf86ScreenIndex; /* Index into pScreen.devPrivates */
extern int xf86CreateRootWindowIndex; /* Index into pScreen.devPrivates */
--- hw/xfree86/common.orig/xf86Globals.c 2006-08-06 18:01:51.000000000 +0200
+++ hw/xfree86/common/xf86Globals.c 2006-08-06 18:05:49.000000000 +0200
@@ -188,6 +188,7 @@
Bool xf86ProbeFailed = FALSE;
Bool xf86DoProbe = FALSE;
Bool xf86DoConfigure = FALSE;
+Bool xf86DoShowOptions = FALSE;
DriverPtr *xf86DriverList = NULL;
int xf86NumDrivers = 0;
InputDriverPtr *xf86InputDriverList = NULL;
--- hw/xfree86/common/xf86Init.c.orig 2008-05-21 23:51:52.000000000 +0200
+++ hw/xfree86/common/xf86Init.c 2008-06-16 17:48:54.000000000 +0200
@@ -500,7 +500,7 @@
}
/* Read and parse the config file */
- if (!xf86DoProbe && !xf86DoConfigure) {
+ if (!xf86DoProbe && !xf86DoConfigure && !xf86DoShowOptions) {
switch (xf86HandleConfigFile(FALSE)) {
case CONFIG_OK:
break;
@@ -526,6 +526,9 @@
LoaderSetOptions(LDR_OPT_ABI_MISMATCH_NONFATAL);
}
+ if (xf86DoShowOptions)
+ DoShowOptions();
+
xf86OpenConsole();
/* Do a general bus probe. This will be a PCI probe for x86 platforms */
@@ -1680,6 +1683,15 @@
xf86AllowMouseOpenFail = TRUE;
return 1;
}
+ if (!strcmp(argv[i], "-showopts"))
+ {
+ if (getuid() != 0 && geteuid() == 0) {
+ ErrorF("The '-showopts' option can only be used by root.\n");
+ exit(1);
+ }
+ xf86DoShowOptions = TRUE;
+ return 1;
+ }
if (!strcmp(argv[i], "-isolateDevice"))
{
int bus, device, func;
@@ -1723,6 +1735,7 @@
ErrorF("-modulepath paths specify the module search path\n");
ErrorF("-logfile file specify a log file name\n");
ErrorF("-configure probe for devices and write an "__XCONFIGFILE__"\n");
+ ErrorF("-showopts print available options for all installed drivers\n");
}
ErrorF("-config file specify a configuration file, relative to the\n");
ErrorF(" "__XCONFIGFILE__" search path, only root can use absolute\n");
--- hw/xfree86/common.orig/xf86Priv.h 2006-08-06 18:01:51.000000000 +0200
+++ hw/xfree86/common/xf86Priv.h 2006-08-06 18:02:03.000000000 +0200
@@ -169,6 +169,7 @@
/* xf86DoProbe.c */
void DoProbe(void);
void DoConfigure(void);
+void DoShowOptions(void);
/* xf86Events.c */
--- hw/xfree86/common.orig/xf86ShowOpts.c 1970-01-01 01:00:00.000000000 +0100
+++ hw/xfree86/common/xf86ShowOpts.c 2006-08-06 18:02:03.000000000 +0200
@@ -0,0 +1,129 @@
+/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86ShopwOpts.c,v 3.80 2003/10/08 14:58:27 dawes Exp $ */
+/*
+ * Copyright 2000-2002 by Alan Hourihane, Flint Mountain, North Wales.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Alan Hourihane not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Alan Hourihane makes no representations
+ * about the suitability of this software for any purpose. It is provided
+ * "as is" without express or implied warranty.
+ *
+ * ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Author: Marcus Schaefer, ms@suse.de
+ *
+ */
+
+#include <ctype.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <X11/X.h>
+#include <X11/Xmd.h>
+#include "os.h"
+#ifdef XFree86LOADER
+#include "loaderProcs.h"
+#endif
+#include "xf86.h"
+#include "xf86Config.h"
+#include "xf86_OSlib.h"
+#include "xf86Priv.h"
+/* #include "xf86PciData.h" */
+#define IN_XSERVER
+#include "xf86Parser.h"
+#include "xf86tokens.h"
+#include "Configint.h"
+#include "vbe.h"
+#include "xf86DDC.h"
+#if defined(__sparc__) && !defined(__OpenBSD__)
+#include "xf86Bus.h"
+#include "xf86Sbus.h"
+#endif
+#include "globals.h"
+
+static const char*
+optionTypeToSting(OptionValueType type)
+{
+ switch (type) {
+ case OPTV_NONE:
+ return "";
+ case OPTV_INTEGER:
+ return "<int>";
+ case OPTV_STRING:
+ return "<str>";
+ case OPTV_ANYSTR:
+ return "<str>";
+ case OPTV_REAL:
+ return "<real>";
+ case OPTV_BOOLEAN:
+ return "<bool>";
+ case OPTV_FREQ:
+ return "<freq>";
+ default:
+ return "<undef>";
+ }
+}
+
+void DoShowOptions (void) {
+ int i = 0;
+ char **vlist = 0;
+ char *pSymbol = 0;
+ XF86ModuleData *initData = 0;
+ if (! (vlist = xf86DriverlistFromCompile())) {
+ ErrorF("Missing output drivers\n");
+ goto bail;
+ }
+ xf86LoadModules (vlist,0);
+ xfree (vlist);
+ for (i = 0; i < xf86NumDrivers; i++) {
+ if (xf86DriverList[i]->AvailableOptions) {
+ OptionInfoPtr pOption = (OptionInfoPtr)(*xf86DriverList[i]->AvailableOptions)(0,0);
+ if (! pOption) {
+ ErrorF ("(EE) Couldn't read option table for %s driver\n",
+ xf86DriverList[i]->driverName
+ );
+ continue;
+ }
+ pSymbol = xalloc (
+ strlen(xf86DriverList[i]->driverName) + strlen("ModuleData") + 1
+ );
+ strcpy (pSymbol, xf86DriverList[i]->driverName);
+ strcat (pSymbol, "ModuleData");
+ initData = LoaderSymbol (pSymbol);
+ if (initData) {
+ XF86ModuleVersionInfo *vers = initData->vers;
+ ErrorF ("Driver[%d]:%s[%s] {\n",
+ i,xf86DriverList[i]->driverName,vers->vendor
+ );
+ OptionInfoPtr p;
+ for (p = pOption; p->name != NULL; p++) {
+ const char *opttype = optionTypeToSting(p->type);
+ char *optname = xalloc(strlen(p->name) + 2 + 1);
+ if (!optname) {
+ continue;
+ }
+ sprintf(optname, "%s", p->name);
+ ErrorF ("\t%s:%s\n", optname,opttype);
+ }
+ ErrorF ("}\n");
+ }
+ }
+ }
+ bail:
+ OsCleanup (TRUE);
+ AbortDDX ();
+ fflush (stderr);
+ exit (0);
+}

View File

@ -1,14 +1,12 @@
diff --git a/hw/xfree86/common/xf86RandR.c b/hw/xfree86/common/xf86RandR.c --- xorg-server-1.6.0/hw/xfree86/common/xf86RandR.c.orig 2009-02-25 20:12:11.000000000 +0100
index 4432ad9..7e446de 100644 +++ xorg-server-1.6.0/hw/xfree86/common/xf86RandR.c 2009-02-27 17:04:34.000000000 +0100
--- a/hw/xfree86/common/xf86RandR.c @@ -246,6 +246,9 @@ xf86RandRSetConfig (ScreenPtr pScreen,
+++ b/hw/xfree86/common/xf86RandR.c
@@ -223,6 +223,9 @@ xf86RandRSetConfig (ScreenPtr pScreen,
Bool useVirtual = FALSE; Bool useVirtual = FALSE;
Rotation oldRotation = randrp->rotation; Rotation oldRotation = randrp->rotation;
+ if (!scrp->vtSema) + if (!scrp->vtSema)
+ return FALSE; + return FALSE;
+ +
miPointerPosition (&px, &py); miPointerGetPosition(inputInfo.pointer, &px, &py);
for (mode = scrp->modes; ; mode = mode->next) for (mode = scrp->modes; ; mode = mode->next)
{ {

View File

@ -1,17 +0,0 @@
--- hw/xfree86/modes/xf86Crtc.c.orig 2008-11-05 17:21:08.000000000 +0100
+++ hw/xfree86/modes/xf86Crtc.c 2008-11-05 17:24:07.000000000 +0100
@@ -1176,10 +1176,12 @@ xf86InitialOutputPositions (ScrnInfoPtr
output->initial_x += xf86ModeWidth (modes[or], relative->initial_rotation);
break;
case OPTION_ABOVE:
- output->initial_y -= xf86ModeHeight (modes[o], relative->initial_rotation);
+ if (modes[o])
+ output->initial_y -= xf86ModeHeight (modes[o], output->initial_rotation);
break;
case OPTION_LEFT_OF:
- output->initial_x -= xf86ModeWidth (modes[o], relative->initial_rotation);
+ if (modes[o])
+ output->initial_x -= xf86ModeWidth (modes[o], output->initial_rotation);
break;
default:
break;

View File

@ -1,25 +1,19 @@
--- hw/kdrive/Makefile.am.orig 2006-10-23 16:23:04.000000000 +0200 --- hw/kdrive/Makefile.am.orig 2008-11-14 22:27:05.000000000 +0100
+++ hw/kdrive/Makefile.am 2006-10-23 16:23:34.000000000 +0200 +++ hw/kdrive/Makefile.am 2009-02-27 15:45:07.000000000 +0100
@@ -1,10 +1,9 @@ @@ -1,5 +1,5 @@
if KDRIVEVESA
-VESA_SUBDIRS = vesa ati chips epson i810 mach64 mga nvidia pm2 r128 \
- smi via
+VESA_SUBDIRS =
endif
if BUILD_KDRIVEFBDEVLIB if BUILD_KDRIVEFBDEVLIB
-FBDEV_SUBDIRS = fbdev -FBDEV_SUBDIRS = fbdev
+FBDEV_SUBDIRS = +FBDEV_SUBDIRS =
endif endif
if XSDLSERVER if XFAKESERVER
@@ -21,8 +20,7 @@ @@ -21,8 +21,7 @@
SERVER_SUBDIRS = \
$(XSDL_SUBDIRS) \ $(XSDL_SUBDIRS) \
$(FBDEV_SUBDIRS) \ $(FBDEV_SUBDIRS) \
$(VESA_SUBDIRS) \
- $(XEPHYR_SUBDIRS) \ - $(XEPHYR_SUBDIRS) \
- $(XFAKE_SUBDIRS) - $(XFAKE_SUBDIRS)
+ $(XEPHYR_SUBDIRS) + $(XEPHYR_SUBDIRS)
DIST_SUBDIRS = vesa ati chips epson i810 mach64 mga neomagic nvidia pm2 r128 \ SUBDIRS = \
smi via fbdev sdl ephyr src linux fake sis300 src \

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2ff9a6a280aaa8fe887c538e6099c0fdcfa94cb9dac800bde3b584cc9f325dc0
size 5615666

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:81a9a02b621e8a3e0bae1ad1b5dd6706a3fdcdbe766d75e1670ab5b3f0d32812
size 4655422

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,17 @@
-------------------------------------------------------------------
Fri Feb 27 12:40:32 CET 2009 - sndirsch@suse.de
- xorg-server 1.6.0
- temporarily disabled build of Xvnc/libvnc.so
- obsoletes 64bit-portability-issue.diff, 64bit.diff,
commit-59f9fb4b8.diff, commit-a9e2030.diff, dga_cleanup.diff,
miPointerUpdate-crashfix.diff, p_mouse_misc.diff,
ps_showopts.diff, unplugged_monitor_crashfix.diff
- adjusted 0001-Xinput-Catch-missing-configlayout-when-deleting-dev.patch,
bitmap_always_unscaled.diff, confine_to_shape.diff, fbdevhw.diff,
p_ia64-console.diff, randr1_1-sig11.diff, xephyr.diff,
xorg-server-xf4vnc.patch, zap_warning_xserver.diff
------------------------------------------------------------------- -------------------------------------------------------------------
Tue Feb 24 12:08:59 CET 2009 - sndirsch@suse.de Tue Feb 24 12:08:59 CET 2009 - sndirsch@suse.de

View File

@ -19,9 +19,10 @@
Name: xorg-x11-server Name: xorg-x11-server
%define dirsuffix 1.5.2 %define dirsuffix 1.6.0
%define fglrx_driver_hack 0 %define fglrx_driver_hack 0
%define vnc 1 ### FIXME
%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-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 BuildRequires: Mesa-devel bison flex fontconfig-devel freetype2-devel ghostscript-library libdrm-devel libopenssl-devel pkgconfig xorg-x11 xorg-x11-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
%if %vnc %if %vnc
BuildRequires: libjpeg-devel BuildRequires: libjpeg-devel
@ -29,7 +30,7 @@ BuildRequires: libjpeg-devel
Url: http://xorg.freedesktop.org/ Url: http://xorg.freedesktop.org/
%define EXPERIMENTAL 0 %define EXPERIMENTAL 0
Version: 7.4 Version: 7.4
Release: 27 Release: 28
License: X11/MIT License: X11/MIT
BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRoot: %{_tmppath}/%{name}-%{version}-build
Group: System/X11/Servers/XF86_4 Group: System/X11/Servers/XF86_4
@ -56,13 +57,10 @@ Source5: modprobe.nvidia
%endif %endif
Source7: xorg-docs-1.4.tar.bz2 Source7: xorg-docs-1.4.tar.bz2
Source8: xorg.conf.man-070818.tar Source8: xorg.conf.man-070818.tar
Patch: 64bit.diff
Patch1: fpic.diff Patch1: fpic.diff
Patch2: p_default-module-path.diff Patch2: p_default-module-path.diff
Patch6: pu_fixes.diff Patch6: pu_fixes.diff
Patch7: p_mouse_misc.diff
Patch8: p_bug96328.diff Patch8: p_bug96328.diff
Patch11: ps_showopts.diff
Patch13: p_xorg_acpi.diff Patch13: p_xorg_acpi.diff
Patch14: p_xkills_wrong_client.diff Patch14: p_xkills_wrong_client.diff
Patch16: p_xnest-ignore-getimage-errors.diff Patch16: p_xnest-ignore-getimage-errors.diff
@ -101,16 +99,10 @@ Patch106: randr1_1-sig11.diff
Patch109: events.diff Patch109: events.diff
Patch112: fix-dpi-values.diff Patch112: fix-dpi-values.diff
Patch113: no-return-in-nonvoid-function.diff Patch113: no-return-in-nonvoid-function.diff
Patch114: 64bit-portability-issue.diff
Patch117: acpi-warning.diff Patch117: acpi-warning.diff
Patch118: exa-greedy.diff Patch118: exa-greedy.diff
Patch120: dga_cleanup.diff
Patch121: miPointerUpdate-crashfix.diff
Patch122: unplugged_monitor_crashfix.diff
Patch123: vidmode-sig11.diff Patch123: vidmode-sig11.diff
Patch124: commit-59f9fb4b8.diff
Patch125: 0001-Xinput-Catch-missing-configlayout-when-deleting-dev.patch Patch125: 0001-Xinput-Catch-missing-configlayout-when-deleting-dev.patch
Patch126: commit-a9e2030.diff
Patch127: dpms_screensaver.diff Patch127: dpms_screensaver.diff
Patch128: pci-legacy-mem-fallback.diff Patch128: pci-legacy-mem-fallback.diff
Patch129: bug474071-fix1.diff Patch129: bug474071-fix1.diff
@ -172,13 +164,10 @@ An X Window System server for Virtual Network Computing (VNC).
%prep %prep
%setup -q -n xorg-server-%{dirsuffix} -a4 -a7 -a8 %setup -q -n xorg-server-%{dirsuffix} -a4 -a7 -a8
%patch
%patch1 %patch1
%patch2 %patch2
%patch6 %patch6
%patch7 -p2
%patch8 -p0 %patch8 -p0
%patch11
%patch13 %patch13
%patch14 %patch14
%patch16 -p2 %patch16 -p2
@ -224,16 +213,10 @@ popd
%patch109 -p1 %patch109 -p1
%patch112 -p0 %patch112 -p0
%patch113 -p0 %patch113 -p0
%patch114 -p0
%patch117 %patch117
%patch118 -p1 %patch118 -p1
%patch120 -p1
%patch121 -p0
%patch122 -p0
%patch123 -p0 %patch123 -p0
%patch124 -p1
%patch125 -p1 %patch125 -p1
%patch126 -p1
%patch127 -p1 %patch127 -p1
%patch128 %patch128
pushd hw/xfree86/os-support/bus pushd hw/xfree86/os-support/bus
@ -509,19 +492,11 @@ exit 0
/usr/bin/dmxwininfo /usr/bin/dmxwininfo
%ifnarch s390 s390x %ifnarch s390 s390x
/usr/bin/gtf /usr/bin/gtf
/usr/bin/inb
/usr/bin/inl
/usr/bin/inw
/usr/bin/ioport
/usr/bin/outb
/usr/bin/outl
/usr/bin/outw
%endif %endif
/usr/bin/vdltodmx /usr/bin/vdltodmx
/usr/bin/xdmx /usr/bin/xdmx
/usr/bin/xdmxconfig /usr/bin/xdmxconfig
%ifnarch s390 s390x %ifnarch s390 s390x
/usr/bin/xorgconfig
/usr/%{_lib}/X11/* /usr/%{_lib}/X11/*
/usr/%{_lib}/xorg/modules/ /usr/%{_lib}/xorg/modules/
%{_mandir}/man4/* %{_mandir}/man4/*
@ -570,6 +545,17 @@ exit 0
%endif %endif
%changelog %changelog
* Fri Feb 27 2009 sndirsch@suse.de
- xorg-server 1.6.0
- temporarily disabled build of Xvnc/libvnc.so
- obsoletes 64bit-portability-issue.diff, 64bit.diff,
commit-59f9fb4b8.diff, commit-a9e2030.diff, dga_cleanup.diff,
miPointerUpdate-crashfix.diff, p_mouse_misc.diff,
ps_showopts.diff, unplugged_monitor_crashfix.diff
- adjusted 0001-Xinput-Catch-missing-configlayout-when-deleting-dev.patch,
bitmap_always_unscaled.diff, confine_to_shape.diff, fbdevhw.diff,
p_ia64-console.diff, randr1_1-sig11.diff, xephyr.diff,
xorg-server-xf4vnc.patch, zap_warning_xserver.diff
* Tue Feb 24 2009 sndirsch@suse.de * Tue Feb 24 2009 sndirsch@suse.de
- bug474071-fix1.diff - bug474071-fix1.diff
* fixes Xserver issue of bnc #474071 * fixes Xserver issue of bnc #474071

View File

@ -1,31 +1,4 @@
diff -ur xorg-server-1.4.0.90-orig//hw/xfree86/common/xf86Config.c xorg-server-1.4.0.90/hw/xfree86/common/xf86Config.c diff -ur xorg-server-1.4.0.90-orig//hw/xfree86/common/xf86Config.c xorg-server-1.4.0.90/hw/xfree86/common/xf86Config.c
--- xorg-server-1.4.0.90-orig//hw/xfree86/common/xf86Config.c 2008-03-09 12:36:39.000000000 +0100
+++ xorg-server-1.4.0.90/hw/xfree86/common/xf86Config.c 2008-03-09 13:33:17.000000000 +0100
@@ -743,6 +743,7 @@
FLAG_NOTRAPSIGNALS,
FLAG_DONTVTSWITCH,
FLAG_DONTZAP,
+ FLAG_ZAPWARNING,
FLAG_DONTZOOM,
FLAG_DISABLEVIDMODE,
FLAG_ALLOWNONLOCAL,
@@ -788,6 +789,8 @@
{0}, FALSE },
{ FLAG_DONTZAP, "DontZap", OPTV_BOOLEAN,
{0}, FALSE },
+ { FLAG_ZAPWARNING, "ZapWarning", OPTV_BOOLEAN,
+ {0}, FALSE },
{ FLAG_DONTZOOM, "DontZoom", OPTV_BOOLEAN,
{0}, FALSE },
{ FLAG_DISABLEVIDMODE, "DisableVidModeExtension", OPTV_BOOLEAN,
@@ -912,6 +915,7 @@
xf86GetOptValBool(FlagOptions, FLAG_NOTRAPSIGNALS, &xf86Info.notrapSignals);
xf86GetOptValBool(FlagOptions, FLAG_DONTVTSWITCH, &xf86Info.dontVTSwitch);
xf86GetOptValBool(FlagOptions, FLAG_DONTZAP, &xf86Info.dontZap);
+ xf86GetOptValBool(FlagOptions, FLAG_ZAPWARNING, &xf86Info.ZapWarning);
xf86GetOptValBool(FlagOptions, FLAG_DONTZOOM, &xf86Info.dontZoom);
xf86GetOptValBool(FlagOptions, FLAG_ALLOW_DEACTIVATE_GRABS,
diff -ur xorg-server-1.4.0.90-orig//hw/xfree86/common/xf86Events.c xorg-server-1.4.0.90/hw/xfree86/common/xf86Events.c diff -ur xorg-server-1.4.0.90-orig//hw/xfree86/common/xf86Events.c xorg-server-1.4.0.90/hw/xfree86/common/xf86Events.c
--- xorg-server-1.4.0.90-orig//hw/xfree86/common/xf86Events.c 2008-03-09 13:27:24.000000000 +0100 --- xorg-server-1.4.0.90-orig//hw/xfree86/common/xf86Events.c 2008-03-09 13:27:24.000000000 +0100
+++ xorg-server-1.4.0.90/hw/xfree86/common/xf86Events.c 2008-03-09 13:30:18.000000000 +0100 +++ xorg-server-1.4.0.90/hw/xfree86/common/xf86Events.c 2008-03-09 13:30:18.000000000 +0100
@ -61,16 +34,6 @@ diff -ur xorg-server-1.4.0.90-orig//hw/xfree86/common/xf86Events.c xorg-server-1
case ACTION_NEXT_MODE: case ACTION_NEXT_MODE:
if (!xf86Info.dontZoom) if (!xf86Info.dontZoom)
diff -ur xorg-server-1.4.0.90-orig//hw/xfree86/common/xf86Globals.c xorg-server-1.4.0.90/hw/xfree86/common/xf86Globals.c diff -ur xorg-server-1.4.0.90-orig//hw/xfree86/common/xf86Globals.c xorg-server-1.4.0.90/hw/xfree86/common/xf86Globals.c
--- xorg-server-1.4.0.90-orig//hw/xfree86/common/xf86Globals.c 2008-03-09 12:36:39.000000000 +0100
+++ xorg-server-1.4.0.90/hw/xfree86/common/xf86Globals.c 2008-03-09 13:31:40.000000000 +0100
@@ -107,6 +107,7 @@
FALSE, /* inputPending */
FALSE, /* dontVTSwitch */
FALSE, /* dontZap */
+ FALSE, /* ZapWarning */
FALSE, /* dontZoom */
FALSE, /* notrapSignals */
FALSE, /* caughtSignal */
diff -ur xorg-server-1.4.0.90-orig//hw/xfree86/common/xf86Privstr.h xorg-server-1.4.0.90/hw/xfree86/common/xf86Privstr.h diff -ur xorg-server-1.4.0.90-orig//hw/xfree86/common/xf86Privstr.h xorg-server-1.4.0.90/hw/xfree86/common/xf86Privstr.h
--- xorg-server-1.4.0.90-orig//hw/xfree86/common/xf86Privstr.h 2007-12-07 03:38:42.000000000 +0100 --- xorg-server-1.4.0.90-orig//hw/xfree86/common/xf86Privstr.h 2007-12-07 03:38:42.000000000 +0100
+++ xorg-server-1.4.0.90/hw/xfree86/common/xf86Privstr.h 2008-03-09 13:29:43.000000000 +0100 +++ xorg-server-1.4.0.90/hw/xfree86/common/xf86Privstr.h 2008-03-09 13:29:43.000000000 +0100
@ -99,20 +62,74 @@ diff -ur xorg-server-1.4.0.90-orig//hw/xfree86/doc/man/xorg.conf.man.pre xorg-se
.BI "Option \*qDontZoom\*q \*q" boolean \*q .BI "Option \*qDontZoom\*q \*q" boolean \*q
This disallows the use of the This disallows the use of the
.B Ctrl+Alt+Keypad\-Plus .B Ctrl+Alt+Keypad\-Plus
--- xorg-server-1.4.0.90-orig/hw/xfree86/doc/man/Xorg.man.pre.orig 2008-05-16 16:46:39.000000000 +0200 --- xorg-server-1.6.0/hw/xfree86/common/xf86Config.c.orig 2009-02-25 20:12:11.000000000 +0100
+++ xorg-server-1.4.0.90/hw/xfree86/doc/man/Xorg.man.pre 2008-05-16 16:48:50.000000000 +0200 +++ xorg-server-1.6.0/hw/xfree86/common/xf86Config.c 2009-02-27 16:28:19.000000000 +0100
@@ -461,10 +461,10 @@ @@ -697,6 +697,7 @@ typedef enum {
are: FLAG_NOTRAPSIGNALS,
.TP 8 FLAG_DONTVTSWITCH,
.B Ctrl+Alt+Backspace FLAG_DONTZAP,
-Immediately kills the server -- no questions asked. This can be disabled + FLAG_ZAPWARNING,
-with the FLAG_DONTZOOM,
FLAG_DISABLEVIDMODE,
FLAG_ALLOWNONLOCAL,
@@ -734,6 +735,8 @@ static OptionInfoRec FlagOptions[] = {
{0}, FALSE },
{ FLAG_DONTZAP, "DontZap", OPTV_BOOLEAN,
{0}, TRUE },
+ { FLAG_ZAPWARNING, "ZapWarning", OPTV_BOOLEAN,
+ {0}, FALSE },
{ FLAG_DONTZOOM, "DontZoom", OPTV_BOOLEAN,
{0}, FALSE },
{ FLAG_DISABLEVIDMODE, "DisableVidModeExtension", OPTV_BOOLEAN,
@@ -847,6 +850,7 @@ configServerFlags(XF86ConfFlagsPtr flags
xf86GetOptValBool(FlagOptions, FLAG_DONTVTSWITCH, &xf86Info.dontVTSwitch);
if (!xf86GetOptValBool(FlagOptions, FLAG_DONTZAP, &xf86Info.dontZap))
xf86Info.dontZap = !party_like_its_1989;
+ xf86GetOptValBool(FlagOptions, FLAG_ZAPWARNING, &xf86Info.ZapWarning);
xf86GetOptValBool(FlagOptions, FLAG_DONTZOOM, &xf86Info.dontZoom);
xf86GetOptValBool(FlagOptions, FLAG_IGNORE_ABI, &xf86Info.ignoreABI);
--- xorg-server-1.6.0/hw/xfree86/common/xf86Globals.c.orig 2009-02-27 16:23:51.000000000 +0100
+++ xorg-server-1.6.0/hw/xfree86/common/xf86Globals.c 2009-02-27 16:30:19.000000000 +0100
@@ -106,6 +106,7 @@ xf86InfoRec xf86Info = {
.vtRequestsPending = FALSE,
.dontVTSwitch = FALSE,
.dontZap = FALSE,
+ .ZapWarning = FALSE,
.dontZoom = FALSE,
.notrapSignals = FALSE,
.caughtSignal = FALSE,
--- xorg-server-1.6.0/hw/xfree86/doc/man/Xorg.man.pre.orig 2009-02-25 20:12:11.000000000 +0100
+++ xorg-server-1.6.0/hw/xfree86/doc/man/Xorg.man.pre 2009-02-27 16:32:45.000000000 +0100
@@ -452,8 +452,8 @@ are:
Immediately kills the server -- no questions asked. This is disabled by
default. It can be enabled with the -retro command line flag or by setting
the
-.B DontZap -.B DontZap
-__xconfigfile__(__filemansuffix__) file option. -__xconfigfile__(__filemansuffix__) file option to a FALSE value.
+Immediately kills the server -- no questions asked. This behaviour can
+be changed with the
+.B DontZap/ZapWarning +.B DontZap/ZapWarning
+__xconfigfile__(__filemansuffix__) file options. +__xconfigfile__(__filemansuffix__) file options to a FALSE value.
.TP 8 .TP 8
.B Ctrl+Alt+Keypad-Plus .B Ctrl+Alt+Keypad-Plus
Change video mode to next one specified in the configuration file. Change video mode to next one specified in the configuration file.
--- xorg-server-1.6.0/hw/xfree86/common/xf86Config.c.orig 2009-02-28 20:29:42.000000000 +0100
+++ xorg-server-1.6.0/hw/xfree86/common/xf86Config.c 2009-02-28 20:30:44.000000000 +0100
@@ -734,7 +734,7 @@ static OptionInfoRec FlagOptions[] = {
{ FLAG_DONTVTSWITCH, "DontVTSwitch", OPTV_BOOLEAN,
{0}, FALSE },
{ FLAG_DONTZAP, "DontZap", OPTV_BOOLEAN,
- {0}, TRUE },
+ {0}, FALSE },
{ FLAG_ZAPWARNING, "ZapWarning", OPTV_BOOLEAN,
{0}, FALSE },
{ FLAG_DONTZOOM, "DontZoom", OPTV_BOOLEAN,
@@ -848,8 +848,7 @@ configServerFlags(XF86ConfFlagsPtr flags
xf86GetOptValBool(FlagOptions, FLAG_NOTRAPSIGNALS, &xf86Info.notrapSignals);
xf86GetOptValBool(FlagOptions, FLAG_DONTVTSWITCH, &xf86Info.dontVTSwitch);
- if (!xf86GetOptValBool(FlagOptions, FLAG_DONTZAP, &xf86Info.dontZap))
- xf86Info.dontZap = !party_like_its_1989;
+ xf86GetOptValBool(FlagOptions, FLAG_DONTZAP, &xf86Info.dontZap);
xf86GetOptValBool(FlagOptions, FLAG_ZAPWARNING, &xf86Info.ZapWarning);
xf86GetOptValBool(FlagOptions, FLAG_DONTZOOM, &xf86Info.dontZoom);