xorg-x11-server/xserver-1.5.0-bg-none-root.patch
Peter Hutterer c22de5d369 * Mon Jul 05 2010 Peter Hutterer <peter.hutterer@redhat.com> 1.8.99.904-1
- Update to current git master (1.9 snapshot 4).
- New ABIS: videodrv 8, input 11, extension 4
- Drop upstreamed patches.
2010-07-05 00:07:04 +00:00

156 lines
5.3 KiB
Diff

From c89255169f6de9dcaec67509cec1c9b5048b2155 Mon Sep 17 00:00:00 2001
From: Fedora X Ninjas <x@fedoraproject.org>
Date: Wed, 20 Jan 2010 14:46:12 +1300
Subject: [PATCH 02/17] Add nr for background=none root
---
dix/globals.c | 1 +
dix/window.c | 12 +++++++-----
hw/xfree86/common/xf86Init.c | 11 +++++++++++
hw/xfree86/common/xf86str.h | 5 ++++-
include/opaque.h | 1 +
os/utils.c | 3 +++
6 files changed, 27 insertions(+), 6 deletions(-)
diff --git a/dix/globals.c b/dix/globals.c
index b128569..95dde2d 100644
--- a/dix/globals.c
+++ b/dix/globals.c
@@ -122,6 +122,7 @@ FontPtr defaultFont; /* not declared in dix.h to avoid including font.h in
CursorPtr rootCursor;
Bool party_like_its_1989 = FALSE;
Bool whiteRoot = FALSE;
+Bool bgNoneRoot = FALSE;
TimeStamp currentTime;
TimeStamp lastDeviceEventTime;
diff --git a/dix/window.c b/dix/window.c
index 4a47dd5..67da401 100644
--- a/dix/window.c
+++ b/dix/window.c
@@ -459,22 +459,24 @@ InitRootWindow(WindowPtr pWin)
pWin->optional->cursor = rootCursor;
rootCursor->refcnt++;
+ pWin->backingStore = defaultBackingStore;
+ pWin->forcedBS = (defaultBackingStore != NotUseful);
if (party_like_its_1989) {
MakeRootTile(pWin);
backFlag |= CWBackPixmap;
+ pScreen->ChangeWindowAttributes(pWin, backFlag);
+ } else if (bgNoneRoot) {
+ /* nothing, handled in xf86CreateRootWindow */
} else {
if (whiteRoot)
pWin->background.pixel = pScreen->whitePixel;
else
pWin->background.pixel = pScreen->blackPixel;
backFlag |= CWBackPixel;
- }
- pWin->backingStore = defaultBackingStore;
- pWin->forcedBS = (defaultBackingStore != NotUseful);
- /* We SHOULD check for an error value here XXX */
- (*pScreen->ChangeWindowAttributes)(pWin, backFlag);
+ pScreen->ChangeWindowAttributes(pWin, backFlag);
+ }
MapWindow(pWin, serverClient);
}
diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
index ca532ee..6843273 100644
--- a/hw/xfree86/common/xf86Init.c
+++ b/hw/xfree86/common/xf86Init.c
@@ -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,15 @@ xf86CreateRootWindow(WindowPtr pWin)
}
}
+ if (bgNoneRoot && 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;
}
diff --git a/hw/xfree86/common/xf86str.h b/hw/xfree86/common/xf86str.h
index c9b261d..f96fc5d 100644
--- a/hw/xfree86/common/xf86str.h
+++ b/hw/xfree86/common/xf86str.h
@@ -502,7 +502,7 @@ typedef struct _confdrirec {
} confDRIRec, *confDRIPtr;
/* These values should be adjusted when new fields are added to ScrnInfoRec */
-#define NUM_RESERVED_INTS 16
+#define NUM_RESERVED_INTS 15
#define NUM_RESERVED_POINTERS 14
#define NUM_RESERVED_FUNCS 11
@@ -774,6 +774,9 @@ typedef struct _ScrnInfoRec {
ClockRangePtr clockRanges;
int adjustFlags;
+ /* -nr support */
+ int canDoBGNoneRoot;
+
/*
* These can be used when the minor ABI version is incremented.
* The NUM_* parameters must be reduced appropriately to keep the
diff --git a/include/opaque.h b/include/opaque.h
index b3c7c70..fcc8c95 100644
--- a/include/opaque.h
+++ b/include/opaque.h
@@ -71,6 +71,7 @@ extern _X_EXPORT Bool defeatAccessControl;
extern _X_EXPORT long maxBigRequestSize;
extern _X_EXPORT Bool party_like_its_1989;
extern _X_EXPORT Bool whiteRoot;
+extern _X_EXPORT Bool bgNoneRoot;
extern _X_EXPORT Bool CoreDump;
diff --git a/os/utils.c b/os/utils.c
index 51455cc..64810cf 100644
--- a/os/utils.c
+++ b/os/utils.c
@@ -502,6 +502,7 @@ void UseMsg(void)
#endif
ErrorF("-nolisten string don't listen on protocol\n");
ErrorF("-noreset don't reset after last client exists\n");
+ ErrorF("-nr create root window with no background\n");
ErrorF("-reset reset after last client exists\n");
ErrorF("-p # screen-saver pattern duration (minutes)\n");
ErrorF("-pn accept failure to listen on all ports\n");
@@ -841,6 +842,8 @@ ProcessCommandLine(int argc, char *argv[])
defaultBackingStore = WhenMapped;
else if ( strcmp( argv[i], "-wr") == 0)
whiteRoot = TRUE;
+ else if ( strcmp( argv[i], "-nr") == 0)
+ bgNoneRoot = TRUE;
else if ( strcmp( argv[i], "-maxbigreqsize") == 0) {
if(++i < argc) {
long reqSizeArg = atol(argv[i]);
--
1.7.1