| OLD | NEW |
| (Empty) |
| 1 From a3e15680da24cb8259f6a83dee0c930dab024290 Mon Sep 17 00:00:00 2001 | |
| 2 From: Kristian <krh@redhat.com> | |
| 3 Date: Fri, 15 Aug 2008 15:15:14 +1000 | |
| 4 Subject: [PATCH] Add nr for background=none root | |
| 5 | |
| 6 --- | |
| 7 dix/globals.c | 1 + | |
| 8 dix/window.c | 22 ++++++++++++---------- | |
| 9 hw/xfree86/common/xf86Init.c | 11 +++++++++++ | |
| 10 hw/xfree86/common/xf86str.h | 5 ++++- | |
| 11 include/opaque.h | 1 + | |
| 12 os/utils.c | 3 +++ | |
| 13 6 files changed, 32 insertions(+), 11 deletions(-) | |
| 14 | |
| 15 diff --git a/dix/globals.c b/dix/globals.c | |
| 16 index 973dc43..dbd76bb 100644 | |
| 17 --- a/dix/globals.c | |
| 18 +++ b/dix/globals.c | |
| 19 @@ -141,6 +141,7 @@ FontPtr defaultFont; /* not declared in dix.h to avoid inc
luding font.h in | |
| 20 CursorPtr rootCursor; | |
| 21 Bool party_like_its_1989 = FALSE; | |
| 22 Bool whiteRoot = FALSE; | |
| 23 +Bool bgNoneRoot = FALSE; | |
| 24 | |
| 25 int cursorScreenDevPriv[MAXSCREENS]; | |
| 26 | |
| 27 diff --git a/dix/window.c b/dix/window.c | |
| 28 index c31fa87..8bb178d 100644 | |
| 29 --- a/dix/window.c | |
| 30 +++ b/dix/window.c | |
| 31 @@ -482,23 +482,24 @@ InitRootWindow(WindowPtr pWin) | |
| 32 pWin->cursorIsNone = FALSE; | |
| 33 pWin->optional->cursor = rootCursor; | |
| 34 rootCursor->refcnt++; | |
| 35 - | |
| 36 + pWin->backingStore = defaultBackingStore; | |
| 37 + pWin->forcedBS = (defaultBackingStore != NotUseful); | |
| 38 | |
| 39 if (party_like_its_1989) { | |
| 40 MakeRootTile(pWin); | |
| 41 backFlag |= CWBackPixmap; | |
| 42 + pScreen->ChangeWindowAttributes(pWin, backFlag); | |
| 43 + } else if (bgNoneRoot) { | |
| 44 + /* nothing, handled in xf86CreateRootWindow */ | |
| 45 } else { | |
| 46 if (whiteRoot) | |
| 47 pWin->background.pixel = pScreen->whitePixel; | |
| 48 else | |
| 49 pWin->background.pixel = pScreen->blackPixel; | |
| 50 backFlag |= CWBackPixel; | |
| 51 - } | |
| 52 | |
| 53 - pWin->backingStore = defaultBackingStore; | |
| 54 - pWin->forcedBS = (defaultBackingStore != NotUseful); | |
| 55 - /* We SHOULD check for an error value here XXX */ | |
| 56 - (*pScreen->ChangeWindowAttributes)(pWin, backFlag); | |
| 57 + pScreen->ChangeWindowAttributes(pWin, backFlag); | |
| 58 + } | |
| 59 | |
| 60 MapWindow(pWin, serverClient); | |
| 61 } | |
| 62 diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c | |
| 63 index 236c00b..083a6ac 100644 | |
| 64 --- a/hw/xfree86/common/xf86Init.c | |
| 65 +++ b/hw/xfree86/common/xf86Init.c | |
| 66 @@ -79,6 +79,7 @@ | |
| 67 #ifdef RENDER | |
| 68 #include "picturestr.h" | |
| 69 #endif | |
| 70 +#include "xace.h" | |
| 71 | |
| 72 #include "globals.h" | |
| 73 | |
| 74 @@ -328,6 +329,7 @@ xf86CreateRootWindow(WindowPtr pWin) | |
| 75 int ret = TRUE; | |
| 76 int err = Success; | |
| 77 ScreenPtr pScreen = pWin->drawable.pScreen; | |
| 78 + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; | |
| 79 RootWinPropPtr pProp; | |
| 80 CreateWindowProcPtr CreateWindow = (CreateWindowProcPtr) | |
| 81 dixLookupPrivate(&pScreen->devPrivates, xf86CreateRootWindowKey); | |
| 82 @@ -381,6 +383,15 @@ xf86CreateRootWindow(WindowPtr pWin) | |
| 83 } | |
| 84 } | |
| 85 | |
| 86 + if (bgNoneRoot && pScrn->canDoBGNoneRoot || 1) { | |
| 87 + pWin->backgroundState = XaceBackgroundNoneState(pWin); | |
| 88 + pWin->background.pixel = pScreen->whitePixel; | |
| 89 + pScreen->ChangeWindowAttributes(pWin, CWBackPixmap | CWBorderPixel | CWCu
rsor | CWBackingStore); | |
| 90 + } else { | |
| 91 + pWin->background.pixel = pScreen->blackPixel; | |
| 92 + pScreen->ChangeWindowAttributes(pWin, CWBackPixel | CWBorderPixel | CWCur
sor | CWBackingStore); | |
| 93 + } | |
| 94 + | |
| 95 #ifdef DEBUG | |
| 96 ErrorF("xf86CreateRootWindow() returns %d\n", ret); | |
| 97 #endif | |
| 98 diff --git a/hw/xfree86/common/xf86str.h b/hw/xfree86/common/xf86str.h | |
| 99 index 904c369..8c38f69 100644 | |
| 100 --- a/hw/xfree86/common/xf86str.h | |
| 101 +++ b/hw/xfree86/common/xf86str.h | |
| 102 @@ -531,7 +531,7 @@ typedef struct _confdrirec { | |
| 103 } confDRIRec, *confDRIPtr; | |
| 104 | |
| 105 /* These values should be adjusted when new fields are added to ScrnInfoRec */ | |
| 106 -#define NUM_RESERVED_INTS 16 | |
| 107 +#define NUM_RESERVED_INTS 15 | |
| 108 #define NUM_RESERVED_POINTERS 15 | |
| 109 #define NUM_RESERVED_FUNCS 11 | |
| 110 | |
| 111 @@ -959,6 +959,9 @@ typedef struct _ScrnInfoRec { | |
| 112 ClockRangesPtr clockRanges; | |
| 113 int adjustFlags; | |
| 114 | |
| 115 + /* -nr support */ | |
| 116 + int canDoBGNoneRoot; | |
| 117 + | |
| 118 /* | |
| 119 * These can be used when the minor ABI version is incremented. | |
| 120 * The NUM_* parameters must be reduced appropriately to keep the | |
| 121 diff --git a/include/opaque.h b/include/opaque.h | |
| 122 index 07a0715..be1577b 100644 | |
| 123 --- a/include/opaque.h | |
| 124 +++ b/include/opaque.h | |
| 125 @@ -71,6 +71,7 @@ extern Bool defeatAccessControl; | |
| 126 extern long maxBigRequestSize; | |
| 127 extern Bool party_like_its_1989; | |
| 128 extern Bool whiteRoot; | |
| 129 +extern Bool bgNoneRoot; | |
| 130 | |
| 131 extern Bool CoreDump; | |
| 132 | |
| 133 diff --git a/os/utils.c b/os/utils.c | |
| 134 index b100949..c41b45b 100644 | |
| 135 --- a/os/utils.c | |
| 136 +++ b/os/utils.c | |
| 137 @@ -515,6 +515,7 @@ void UseMsg(void) | |
| 138 #endif | |
| 139 ErrorF("-nolisten string don't listen on protocol\n"); | |
| 140 ErrorF("-noreset don't reset after last client exists\n"); | |
| 141 + ErrorF("-nr create root window with no background\n"); | |
| 142 ErrorF("-reset reset after last client exists\n"); | |
| 143 ErrorF("-p # screen-saver pattern duration (minutes)\n"); | |
| 144 ErrorF("-pn accept failure to listen on all ports\n"); | |
| 145 @@ -859,6 +860,8 @@ ProcessCommandLine(int argc, char *argv[]) | |
| 146 defaultBackingStore = WhenMapped; | |
| 147 else if ( strcmp( argv[i], "-wr") == 0) | |
| 148 whiteRoot = TRUE; | |
| 149 + else if ( strcmp( argv[i], "-nr") == 0) | |
| 150 + bgNoneRoot = TRUE; | |
| 151 else if ( strcmp( argv[i], "-maxbigreqsize") == 0) { | |
| 152 if(++i < argc) { | |
| 153 long reqSizeArg = atol(argv[i]); | |
| 154 -- | |
| 155 1.5.3.4 | |
| 156 | |
| OLD | NEW |