aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Gabriel <mike.gabriel@das-netzwerkteam.de>2019-08-27 08:14:23 +0200
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2019-08-27 08:14:23 +0200
commit8b15d574b49857cdf4df0fd813d68b750d8aee5f (patch)
tree1d49cb2b80341523872cef6ccdb770d9d8d1f942
parentf24767b3ccfa3f659846f78f32dd13e49dfb1752 (diff)
parent3563959c011c00dcbd9dace4d882b222aa31b27f (diff)
downloadnx-libs-8b15d574b49857cdf4df0fd813d68b750d8aee5f.tar.gz
nx-libs-8b15d574b49857cdf4df0fd813d68b750d8aee5f.tar.bz2
nx-libs-8b15d574b49857cdf4df0fd813d68b750d8aee5f.zip
Merge branch 'uli42-pr/fix_background' into 3.6.x
Attributes GH PR #836: https://github.com/ArcticaProject/nx-libs/pull/836
-rw-r--r--nx-X11/programs/Xserver/dix/window.c2
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Display.c16
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Events.c15
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Imakefile1
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Init.c3
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXdispatch.c36
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXwindow.c81
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Reconnect.c2
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Screen.c11
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Splash.c135
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Splash.h13
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Window.c50
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/man/nxagent.16
-rw-r--r--nx-X11/programs/Xserver/os/utils.c3
14 files changed, 103 insertions, 271 deletions
diff --git a/nx-X11/programs/Xserver/dix/window.c b/nx-X11/programs/Xserver/dix/window.c
index 79045767f..ee146d783 100644
--- a/nx-X11/programs/Xserver/dix/window.c
+++ b/nx-X11/programs/Xserver/dix/window.c
@@ -305,7 +305,6 @@ SetWindowToDefaults(register WindowPtr pWin)
#endif
}
-#ifndef NXAGENT_SERVER
static void
MakeRootTile(WindowPtr pWin)
{
@@ -348,7 +347,6 @@ MakeRootTile(WindowPtr pWin)
FreeScratchGC(pGC);
}
-#endif /* NXAGENT_SERVER */
WindowPtr
AllocateWindow(ScreenPtr pScreen)
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Display.c b/nx-X11/programs/Xserver/hw/nxagent/Display.c
index 127874962..4bce82783 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Display.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Display.c
@@ -1386,15 +1386,6 @@ FIXME: Use of nxagentParentWindow is strongly deprecated.
nxagentChangeOption(BorderWidth, 1);
}
- nxagentLogoDepth = DefaultDepth(nxagentDisplay,
- DefaultScreen(nxagentDisplay)
- );
-
- nxagentLogoBlack = 0x000000;
- nxagentLogoRed = 0xff0000;
- nxagentLogoWhite = 0xffffff;
- nxagentLogoGray = 0x222222;
-
#ifdef WATCH
fprintf(stderr, "nxagentOpenDisplay: Watchpoint 5.1.\n");
@@ -2860,13 +2851,6 @@ Bool nxagentReconnectDisplay(void *p0)
nxagentConfineWindow);
#endif
- nxagentLogoDepth = DefaultDepth(nxagentDisplay, DefaultScreen(nxagentDisplay));
-
- nxagentLogoBlack = 0x000000;
- nxagentLogoRed = 0xff0000;
- nxagentLogoWhite = 0xffffff;
- nxagentLogoGray = 0x222222;
-
useXpmIcon = nxagentMakeIcon(nxagentDisplay, &nxagentIconPixmap, &nxagentIconShape);
/*
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Events.c b/nx-X11/programs/Xserver/hw/nxagent/Events.c
index 3e62d9097..fda84cf9b 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Events.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Events.c
@@ -124,7 +124,6 @@
extern Bool nxagentOnce;
extern WindowPtr nxagentRootTileWindow;
-extern int nxagentSplashCount;
extern int nxagentLastClipboardClient;
@@ -2453,20 +2452,6 @@ FIXME: This can be maybe optimized by consuming the
}
}
- if (nxagentRootTileWindow != NULL)
- {
- if (nxagentWindowPriv(nxagentRootTileWindow) -> window == nxagentWindowPriv(pWin) -> window &&
- nxagentSplashCount == 1 && X -> xexpose.count == 0)
- {
- #ifdef DEBUG
- fprintf(stderr, "nxagentHandleExposeEvent: Clearing root tile window id [%u].\n",
- nxagentWindowPriv(nxagentRootTileWindow) -> window);
- #endif
-
- XClearWindow(nxagentDisplay, nxagentWindowPriv(nxagentRootTileWindow) -> window);
- }
- }
-
RegionUninit(&sum);
}
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Imakefile b/nx-X11/programs/Xserver/hw/nxagent/Imakefile
index 5a3a999f4..b3450440e 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Imakefile
+++ b/nx-X11/programs/Xserver/hw/nxagent/Imakefile
@@ -240,7 +240,6 @@ DEFINES = \
-DNXAGENT_VISIBILITY \
-DNXAGENT_WAKEUP=1000 \
-DNXAGENT_ONSTART \
- -DNXAGENT_SPLASH \
-DNXAGENT_ARTSD \
-DNXAGENT_RANDR_MODE_PREFIX \
-UNX_DEBUG_INPUT \
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Init.c b/nx-X11/programs/Xserver/hw/nxagent/Init.c
index 1e24a618e..2a0bceaf5 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Init.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Init.c
@@ -413,7 +413,8 @@ FIXME: These variables, if not removed at all because have probably
* background.
*/
- blackRoot = TRUE;
+ if (!whiteRoot)
+ blackRoot = TRUE;
nxagentInitKeystrokes(False);
diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXdispatch.c b/nx-X11/programs/Xserver/hw/nxagent/NXdispatch.c
index 339994e6c..10616834e 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/NXdispatch.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/NXdispatch.c
@@ -141,9 +141,6 @@ void nxagentWaitDisplay(void);
void nxagentListRemoteFonts(const char *, int);
-unsigned int nxagentWMtimeout = 0;
-Bool nxagentWMPassed = False;
-
/*
* Timeouts based on screen saver time.
*/
@@ -243,8 +240,6 @@ Dispatch(void)
register HWEventQueuePtr* icheck = checkForInput;
long start_tick;
- unsigned long currentDispatch = 0;
-
nextFreeClientID = 1;
InitSelections();
nClients = 0;
@@ -265,12 +260,11 @@ Dispatch(void)
#ifdef NXAGENT_ONSTART
/*
- * Set NX_WM property (used by NX client to identify
- * the agent's window) three seconds since the first
- * client connects.
+ * Set NX_WM property (used by NX client to identify the agent's
+ * window) three seconds since the first client connects.
*/
- nxagentWMtimeout = GetTimeInMillis() + 3000;
+ unsigned int nxagentWMtimeout = GetTimeInMillis() + 3000;
#endif
@@ -370,18 +364,15 @@ Reply Total Cached Bits In Bits Out Bits/Reply Ratio
#ifdef NXAGENT_ONSTART
- currentDispatch = GetTimeInMillis();
-
- /*
- * If the timeout is expired set the
- * selection informing the NX client
- * that the agent is ready.
- */
+ /*
+ * If the timeout is expired set the selection informing the
+ * NX client that the agent is ready.
+ */
- if (!nxagentWMPassed && (nxagentWMtimeout < currentDispatch))
- {
- nxagentRemoveSplashWindow(NULL);
- }
+ if (nxagentWMtimeout < GetTimeInMillis())
+ {
+ nxagentRemoveSplashWindow();
+ }
nxagentClients = nClients;
@@ -588,10 +579,7 @@ ProcReparentWindow(register ClientPtr client)
if (!pWin)
return(BadWindow);
- if (!nxagentWMPassed)
- {
- nxagentRemoveSplashWindow(pWin);
- }
+ nxagentRemoveSplashWindow();
pParent = (WindowPtr)SecurityLookupWindow(stuff->parent, client,
DixWriteAccess);
diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXwindow.c b/nx-X11/programs/Xserver/hw/nxagent/NXwindow.c
index 0851daf97..3dcb552e5 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/NXwindow.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/NXwindow.c
@@ -114,10 +114,6 @@ Equipment Corporation.
#include "Drawable.h"
#include "Colormap.h"
-/* prototypes (only MakeRootTile() required here) */
-
-static void MakeRootTile(WindowPtr pWin);
-
#include "../../dix/window.c"
extern Bool nxagentWMIsRunning;
@@ -132,69 +128,8 @@ extern Bool nxagentScreenTrap;
#undef TEST
#undef DEBUG
-WindowPtr nxagentRootTileWindow;
-
extern void nxagentSetVersionProperty(WindowPtr pWin);
-void nxagentClearSplash(WindowPtr pW)
-{
- ScreenPtr pScreen = pW->drawable.pScreen;
-
- if (pW->backgroundState == BackgroundPixmap)
- {
- (*pScreen->DestroyPixmap)(pW->background.pixmap);
- }
-
- pW->backgroundState = BackgroundPixel;
- pW->background.pixel = nxagentLogoBlack;
-
- (*pScreen->ChangeWindowAttributes)(pW, CWBackPixmap|CWBackPixel);
-}
-
-static void
-MakeRootTile(WindowPtr pWin)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- GCPtr pGC;
- unsigned char back[128];
- int len = BitmapBytePad(sizeof(long));
- register unsigned char *from, *to;
- register int i, j;
-
- pWin->background.pixmap = (*pScreen->CreatePixmap)(pScreen, 4, 4,
- pScreen->rootDepth, 0);
-
- pWin->backgroundState = BackgroundPixmap;
- pGC = GetScratchGC(pScreen->rootDepth, pScreen);
- if (!pWin->background.pixmap || !pGC)
- FatalError("could not create root tile");
-
- {
- CARD32 attributes[2];
-
- attributes[0] = pScreen->whitePixel;
- attributes[1] = pScreen->blackPixel;
-
- (void)ChangeGC(pGC, GCForeground | GCBackground, attributes);
- }
-
- ValidateGC((DrawablePtr)pWin->background.pixmap, pGC);
-
- from = (screenInfo.bitmapBitOrder == LSBFirst) ? _back_lsb : _back_msb;
- to = back;
-
- for (i = 4; i > 0; i--, from++)
- for (j = len; j > 0; j--)
- *to++ = *from;
-
- (*pGC->ops->PutImage)((DrawablePtr)pWin->background.pixmap, pGC, 1,
- 0, 0, len, 4, 0, XYBitmap, (char *)back);
-
- FreeScratchGC(pGC);
-
- nxagentRootTileWindow = pWin;
-}
-
void
InitRootWindow(WindowPtr pWin)
{
@@ -249,28 +184,12 @@ InitRootWindow(WindowPtr pWin)
pWin->optional->cursor = rootCursor;
rootCursor->refcnt++;
-#ifdef NXAGENT_SPLASH
if (blackRoot)
pWin->background.pixel = pScreen->blackPixel;
else
pWin->background.pixel = pScreen->whitePixel;
backFlag |= CWBackPixel;
- MakeRootTile(pWin);
-#else
- if (!blackRoot && !whiteRoot) {
- MakeRootTile(pWin);
- backFlag |= CWBackPixmap;
- }
- else {
- if (blackRoot)
- pWin->background.pixel = pScreen->blackPixel;
- else
- pWin->background.pixel = pScreen->whitePixel;
- backFlag |= CWBackPixel;
- }
-#endif
-
pWin->backingStore = defaultBackingStore;
pWin->forcedBS = (defaultBackingStore != NotUseful);
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Reconnect.c b/nx-X11/programs/Xserver/hw/nxagent/Reconnect.c
index b78c01e30..c56d74236 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Reconnect.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Reconnect.c
@@ -681,7 +681,7 @@ Bool nxagentReconnectSession(void)
#endif
saveAgentState("RUNNING");
- nxagentRemoveSplashWindow(NULL);
+ nxagentRemoveSplashWindow();
/*
* We let the proxy flush the link on our behalf
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Screen.c b/nx-X11/programs/Xserver/hw/nxagent/Screen.c
index 5cdb50f90..93110f782 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Screen.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Screen.c
@@ -146,9 +146,7 @@ Window nxagentInputWindows[MAXSCREENS];
Window nxagentScreenSaverWindows[MAXSCREENS];
#ifdef NXAGENT_ONSTART
-Atom nxagentWMStart;
-Window nxagentSplashWindow = None;
-Pixmap nxagentPixmapLogo;
+Atom nxagentReadyAtom;
#endif
ScreenPtr nxagentDefaultScreen = NULL;
@@ -934,7 +932,7 @@ Bool nxagentOpenScreen(ScreenPtr pScreen,
nxagentQueryAtoms(pScreen);
#ifdef NXAGENT_ONSTART
- nxagentWMStart = nxagentAtoms[3]; /* WM_NX_READY */
+ nxagentReadyAtom = nxagentAtoms[3]; /* WM_NX_READY */
#endif
/*
@@ -3120,10 +3118,7 @@ int nxagentShadowPoll(PixmapPtr nxagentShadowPixmapPtr, GCPtr nxagentShadowGCPtr
if (result == 1)
{
- if (!nxagentWMPassed)
- {
- nxagentRemoveSplashWindow(NULL);
- }
+ nxagentRemoveSplashWindow();
NXShadowExportChanges(&numRects, &ptBox);
pBox = (BoxRec *)ptBox;
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Splash.c b/nx-X11/programs/Xserver/hw/nxagent/Splash.c
index bc86fed36..8f3bc1ede 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Splash.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Splash.c
@@ -58,19 +58,24 @@
* Colors used to paint the splash screen.
*/
-int nxagentLogoDepth;
-int nxagentLogoWhite;
-int nxagentLogoRed;
-int nxagentLogoBlack;
-int nxagentLogoGray;
+#define nxagentLogoWhite 0xffffff
+#define nxagentLogoBlack 0x000000
+#define nxagentLogoDarkGray 0x222222
+#define nxagentLogoLightGray 0xbbbbbb
-void nxagentPaintLogo(Window win, GC gc, int scale, int width, int height);
+Pixmap nxagentPixmapLogo;
+Window nxagentSplashWindow = None;
+Bool nxagentWMPassed = False;
+
+static void nxagentPaintLogo(Window win, GC gc, int scale, int width, int height);
/*
* From Screen.c.
*/
-extern Atom nxagentWMStart;
+#ifdef NXAGENT_ONSTART
+extern Atom nxagentReadyAtom;
+#endif
/*
* From Clipboard.c.
@@ -78,27 +83,35 @@ extern Atom nxagentWMStart;
extern Atom serverCutProperty;
-int nxagentShowSplashWindow(Window parentWindow)
+void nxagentShowSplashWindow(Window parentWindow)
{
XWindowAttributes getAttributes;
XWindowChanges values;
XSetWindowAttributes attributes;
GC gc;
+ /*
+ * Show splash window only when running as X2Go Agent
+ */
+ if(!nxagentX2go)
+ return;
+
#ifdef TEST
- fprintf(stderr, "nxagentShowSplashWindow: Got called.\n");
+ fprintf(stderr, "%s: Got called.\n", __func__);
#endif
#ifdef NXAGENT_TIMESTAMP
{
extern unsigned long startTime;
- fprintf(stderr, "nxagentShowSplashWindow: Initializing splash start at [%d] milliseconds.\n",
+ fprintf(stderr, "%s: Initializing splash start at [%d] milliseconds.\n", __func__,
GetTimeInMillis() - startTime);
}
#endif
- XSetSelectionOwner(nxagentDisplay, nxagentWMStart, None, CurrentTime);
+ #ifdef NXAGENT_ONSTART
+ XSetSelectionOwner(nxagentDisplay, nxagentReadyAtom, None, CurrentTime);
+ #endif
nxagentWMPassed = False;
@@ -133,7 +146,7 @@ int nxagentShowSplashWindow(Window parentWindow)
getAttributes.height = nxagentOption(RootHeight);
#ifdef TEST
- fprintf(stderr, "nxagentShowSplashWindow: Going to create new splash window.\n");
+ fprintf(stderr, "%s: Going to create new splash window.\n", __func__);
#endif
nxagentSplashWindow =
@@ -146,7 +159,7 @@ int nxagentShowSplashWindow(Window parentWindow)
BlackPixel (nxagentDisplay, 0));
#ifdef TEST
- fprintf(stderr, "nxagentShowSplashWindow: Created new splash window with id [%ld].\n",
+ fprintf(stderr, "%s: Created new splash window with id [%ld].\n", __func__,
nxagentSplashWindow);
#endif
@@ -162,45 +175,34 @@ int nxagentShowSplashWindow(Window parentWindow)
#ifdef NXAGENT_TIMESTAMP
{
extern unsigned long startTime;
- fprintf(stderr, "nxagentShowSplashWindow: Splash ends [%d] milliseconds.\n",
+ fprintf(stderr, "%s: Splash ends [%d] milliseconds.\n", __func__,
GetTimeInMillis() - startTime);
}
#endif
-
- return True;
}
void nxagentPaintLogo(Window win, GC gc, int scale, int width, int height)
{
- XPoint rect[4];
- int w, h, c, w2, h2;
-
- /*
- * Show only X2GO Logo when running as X2Go Agent
- */
- if(! nxagentX2go)
- {
- nxagentPixmapLogo = 0L;
- return;
- }
+ int depth = DefaultDepth(nxagentDisplay, DefaultScreen(nxagentDisplay));
#ifdef DEBUG
- fprintf(stderr, "nxagentPaintLogo: Got called.\n");
+ fprintf(stderr, "%s: Got called.\n", __func__);
#endif
#ifdef NXAGENT_LOGO_DEBUG
- fprintf(stderr, "nxagentPaintLogo: begin\n");
- fprintf(stderr, "nxagentPaintLogo: gen params are: w=%d h=%d d=%d r=%x w=%x b=%x\n",width, height,
- nxagentLogoDepth, nxagentLogoRed,
- nxagentLogoWhite, nxagentLogoBlack);
+ fprintf(stderr, "%s: begin\n", __func__);
+ fprintf(stderr, "%s: gen params are: w=%d h=%d d=%d w=%x b=%x g1=%x g2=%x \n", __func__,
+ width, height, depth,
+ nxagentLogoWhite, nxagentLogoBlack, nxagentLogoDarkGray, nxagentLogoLightGray);
#endif
- w = width/scale;
- h = height/scale;
+ int w = width/scale;
+ int h = height/scale;
- w2 = w/2;
- h2 = h/2;
+ int w2 = w/2;
+ int h2 = h/2;
+ int c;
if (height > width)
{
c = w/30;
@@ -210,42 +212,52 @@ void nxagentPaintLogo(Window win, GC gc, int scale, int width, int height)
c = w/48;
}
- rect[0].x = 0; rect[0].y = 0;
- rect[1].x = 0; rect[1].y = h;
- rect[2].x = w; rect[2].y = h;
- rect[3].x = w; rect[3].y = 0;
-
XSetFunction(nxagentDisplay, gc, GXcopy);
XSetFillStyle(nxagentDisplay, gc, FillSolid);
- XSetForeground(nxagentDisplay, gc, nxagentLogoBlack);
- XSetBackground(nxagentDisplay, gc, nxagentLogoRed);
-
- nxagentPixmapLogo = XCreatePixmap(nxagentDisplay, win, width, height, nxagentLogoDepth);
+ nxagentPixmapLogo = XCreatePixmap(nxagentDisplay, win, width, height, depth);
if (!nxagentPixmapLogo)
{
return;
}
+ if (blackRoot)
+ {
+ XSetForeground(nxagentDisplay, gc, nxagentLogoBlack);
+ XSetBackground(nxagentDisplay, gc, nxagentLogoWhite);
+ }
+ else
+ {
+ XSetForeground(nxagentDisplay, gc, nxagentLogoWhite);
+ XSetBackground(nxagentDisplay, gc, nxagentLogoBlack);
+ }
+
+ XPoint rect[4];
+ rect[0].x = 0; rect[0].y = 0;
+ rect[1].x = 0; rect[1].y = h;
+ rect[2].x = w; rect[2].y = h;
+ rect[3].x = w; rect[3].y = 0;
+
+ /* paint background */
XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin);
#ifdef NXAGENT_LOGO_DEBUG
- fprintf(stderr, "filled first poly\n");
+ fprintf(stderr, "%s: filled first poly\n", __func__);
#endif
- XSetForeground(nxagentDisplay, gc, nxagentLogoRed);
- XSetBackground(nxagentDisplay, gc, nxagentLogoWhite);
-
/*
* Draw X2GO Logo
*/
+ if (blackRoot)
+ XSetForeground(nxagentDisplay, gc, nxagentLogoDarkGray);
+ else
+ XSetForeground(nxagentDisplay, gc, nxagentLogoLightGray);
+
/*
- * Begin 'X'.
+ * Start 'X'.
*/
- XSetForeground(nxagentDisplay, gc, nxagentLogoGray);
- XSetBackground(nxagentDisplay, gc, nxagentLogoWhite);
rect[0].x = w2-7*c; rect[0].y = h2-5*c;
rect[1].x = w2-8*c; rect[1].y = h2-5*c;
rect[2].x = w2-4*c; rect[2].y = h2+3*c;
@@ -379,22 +391,28 @@ void nxagentPaintLogo(Window win, GC gc, int scale, int width, int height)
XSetWindowBackgroundPixmap(nxagentDisplay, win, nxagentPixmapLogo);
#ifdef NXAGENT_LOGO_DEBUG
- fprintf(stderr, "nxagentPaintLogo: end\n");
+ fprintf(stderr, "%s: end\n", __func__);
#endif
}
-void nxagentRemoveSplashWindow(WindowPtr pWin)
+void nxagentRemoveSplashWindow(void)
{
- if (nxagentReconnectTrap) return;
+ if (nxagentWMPassed)
+ return;
+
+ if (nxagentReconnectTrap)
+ return;
#ifdef TEST
- fprintf(stderr, "nxagentRemoveSplashWindow: Destroying the splash window.\n");
+ fprintf(stderr, "%s: Destroying the splash window.\n", __func__);
#endif
if (!nxagentWMPassed)
{
- XSetSelectionOwner(nxagentDisplay, nxagentWMStart,
+ #ifdef NXAGENT_ONSTART
+ XSetSelectionOwner(nxagentDisplay, nxagentReadyAtom,
nxagentDefaultWindows[0], CurrentTime);
+ #endif
nxagentWMPassed = True;
}
@@ -407,7 +425,7 @@ void nxagentRemoveSplashWindow(WindowPtr pWin)
nxagentRefreshWindows(screenInfo.screens[0]->root);
#ifdef TEST
- fprintf(stderr, "nxagentRemoveSplashWindow: setting the ownership of %s (%d) on window 0x%lx\n",
+ fprintf(stderr, "%s: setting the ownership of %s (%d) on window 0x%lx\n", __func__
"NX_CUT_BUFFER_SERVER", (int)serverCutProperty, nxagentWindow(screenInfo.screens[0]->root));
#endif
@@ -418,7 +436,6 @@ void nxagentRemoveSplashWindow(WindowPtr pWin)
if (nxagentPixmapLogo)
{
XFreePixmap(nxagentDisplay, nxagentPixmapLogo);
-
nxagentPixmapLogo = (Pixmap) 0;
}
}
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Splash.h b/nx-X11/programs/Xserver/hw/nxagent/Splash.h
index 444f1eed0..a43801469 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Splash.h
+++ b/nx-X11/programs/Xserver/hw/nxagent/Splash.h
@@ -37,18 +37,9 @@ extern int XdmcpTimeOutRtx;
extern int XdmcpStartTime;
extern int nxagentXdmcpUp;
-extern int nxagentLogoDepth;
-extern int nxagentLogoWhite;
-extern int nxagentLogoRed;
-extern int nxagentLogoBlack;
-extern int nxagentLogoGray;
-
extern Window nxagentSplashWindow;
-extern int nxagentWMPassed;
-
-extern int nxagentShowSplashWindow(Window);
-
-extern void nxagentRemoveSplashWindow(WindowPtr pWin);
+extern void nxagentShowSplashWindow(Window);
+extern void nxagentRemoveSplashWindow();
#endif /* __Splash_H__ */
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Window.c b/nx-X11/programs/Xserver/hw/nxagent/Window.c
index 1095d0797..192feec40 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Window.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Window.c
@@ -118,12 +118,6 @@ extern WindowPtr nxagentRootTileWindow;
extern Bool nxagentReportPrivateWindowIds;
-/*
- * Also referenced in Events.c.
- */
-
-int nxagentSplashCount = 0;
-
#define RECTLIMIT 25
#define BSPIXMAPLIMIT 128
@@ -156,12 +150,6 @@ int GetWindowProperty(WindowPtr, Atom, long, long, Bool, Atom, Atom*, int*,
unsigned long*, unsigned long*, unsigned char**);
/*
- * From NXwindow.c.
- */
-
-void nxagentClearSplash(WindowPtr pWin);
-
-/*
* Other local functions.
*/
@@ -268,16 +256,6 @@ Bool nxagentCreateWindow(WindowPtr pWin)
return True;
}
- nxagentSplashCount++;
-
- if (nxagentSplashCount == 2)
- {
- nxagentClearSplash(nxagentRootTileWindow);
- }
- #ifdef NXAGENT_LOGO_DEBUG
- fprintf(stderr, "nxagentCreateWindow: nxagentSplashCount [%d]\n", nxagentSplashCount);
- #endif
-
if (pWin->drawable.class == InputOnly)
{
mask = CWEventMask;
@@ -487,14 +465,6 @@ Bool nxagentCreateWindow(WindowPtr pWin)
nxagentWindowPriv(pWin)->siblingAbove = None;
nxagentWindowPriv(pWin)->pPicture = NULL;
- if (nxagentRootTileWindow)
- {
- if (nxagentWindowPriv(pWin)->window != nxagentWindowPriv(nxagentRootTileWindow)->window)
- {
- XClearWindow(nxagentDisplay, nxagentWindowPriv(nxagentRootTileWindow)->window);
- }
- }
-
if (pWin->nextSib)
{
nxagentWindowPriv(pWin->nextSib)->siblingAbove = nxagentWindow(pWin);
@@ -662,24 +632,6 @@ Bool nxagentDestroyWindow(WindowPtr pWin)
nxagentRootlessDelTopLevelWindow(pWin);
}
- nxagentSplashCount--;
-
- #ifdef DEBUG
- fprintf(stderr, "nxagentDestroyWindow: The splash counter is now [%d].\n",
- nxagentSplashCount);
- #endif
-
- if (nxagentSplashCount == 1)
- {
- XClearWindow(nxagentDisplay, nxagentWindowPriv(nxagentRootTileWindow) -> window);
- }
-
- if (pWin == nxagentRootTileWindow)
- {
- nxagentWindowPriv(nxagentRootTileWindow)->window = None;
- nxagentRootTileWindow = None;
- }
-
pWindowPriv->window = None;
if (pWin -> optional)
@@ -1486,7 +1438,6 @@ void nxagentConfigureWindow(WindowPtr pWin, unsigned int mask)
#endif
}
- #ifdef NXAGENT_SPLASH
/*
* This should bring again the splash window
* on top, so why the else clause? Is this
@@ -1512,7 +1463,6 @@ void nxagentConfigureWindow(WindowPtr pWin, unsigned int mask)
* }
* }
*/
- #endif /* NXAGENT_SPLASH */
if (mask & CW_RootlessRestack)
{
diff --git a/nx-X11/programs/Xserver/hw/nxagent/man/nxagent.1 b/nx-X11/programs/Xserver/hw/nxagent/man/nxagent.1
index 6804032a2..34ac7d7d0 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/man/nxagent.1
+++ b/nx-X11/programs/Xserver/hw/nxagent/man/nxagent.1
@@ -142,8 +142,10 @@ to authenticate access. See also the \fIxdm\fP(1) and
disables backing store support on all screens.
.TP 8
.B \-br
-sets the default root window to solid black instead of the standard root weave
-pattern.
+sets the default root window to solid black (default).
+.TP 8
+.B \-wr
+sets the default root window to solid white.
.TP 8
.B \-c
turns off key-click.
diff --git a/nx-X11/programs/Xserver/os/utils.c b/nx-X11/programs/Xserver/os/utils.c
index 5634bb621..4d81ff927 100644
--- a/nx-X11/programs/Xserver/os/utils.c
+++ b/nx-X11/programs/Xserver/os/utils.c
@@ -634,6 +634,7 @@ void UseMsg(void)
ErrorF("v video blanking for screen-saver\n");
ErrorF("-v screen-saver without video blanking\n");
ErrorF("-wm WhenMapped default backing-store\n");
+ ErrorF("-wr create root window with white background\n");
ErrorF("-maxbigreqsize set maximal bigrequest size \n");
#ifdef PANORAMIX
ErrorF("+xinerama Enable XINERAMA (PanoramiX) extension\n");
@@ -996,6 +997,8 @@ ProcessCommandLine(int argc, char *argv[])
defaultScreenSaverBlanking = DontPreferBlanking;
else if ( strcmp( argv[i], "-wm") == 0)
defaultBackingStore = WhenMapped;
+ else if ( strcmp( argv[i], "-wr") == 0)
+ whiteRoot = TRUE;
else if ( strcmp( argv[i], "-maxbigreqsize") == 0) {
if(++i < argc) {
long reqSizeArg = atol(argv[i]);