diff options
author | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2019-11-02 11:40:04 +0100 |
---|---|---|
committer | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2019-11-02 11:40:04 +0100 |
commit | eb8c16ef9d24add2e0912269775d586d7d4061e4 (patch) | |
tree | 75a0ce4167c351512b1226cefc5630297f1b4384 | |
parent | 5f806ddfdb46c9a727b00ac96a6b939c447ca488 (diff) | |
parent | 7675af8e1323925badd313adf3ec8333984d7ee1 (diff) | |
download | nx-libs-eb8c16ef9d24add2e0912269775d586d7d4061e4.tar.gz nx-libs-eb8c16ef9d24add2e0912269775d586d7d4061e4.tar.bz2 nx-libs-eb8c16ef9d24add2e0912269775d586d7d4061e4.zip |
Merge branch 'uli42-pr/simplify_nxwindow' into 3.6.x
Attributes GH PR #866: https://github.com/ArcticaProject/nx-libs/pull/866
-rw-r--r-- | nx-X11/programs/Xserver/dix/window.c | 10 | ||||
-rw-r--r-- | nx-X11/programs/Xserver/hw/nxagent/NXwindow.c | 192 | ||||
-rw-r--r-- | nx-X11/programs/Xserver/hw/nxagent/Window.c | 4 |
3 files changed, 34 insertions, 172 deletions
diff --git a/nx-X11/programs/Xserver/dix/window.c b/nx-X11/programs/Xserver/dix/window.c index ee146d783..d294e139d 100644 --- a/nx-X11/programs/Xserver/dix/window.c +++ b/nx-X11/programs/Xserver/dix/window.c @@ -497,9 +497,12 @@ CreateRootWindow(ScreenPtr pScreen) return TRUE; } -#ifndef NXAGENT_SERVER void +#ifdef NXAGENT_SERVER +xorg_InitRootWindow(WindowPtr pWin) +#else InitRootWindow(WindowPtr pWin) +#endif { ScreenPtr pScreen = pWin->drawable.pScreen; int backFlag = CWBorderPixel | CWCursor | CWBackingStore; @@ -531,7 +534,6 @@ InitRootWindow(WindowPtr pWin) MapWindow(pWin, serverClient); } -#endif /* NXAGENT_SERVER */ /* Set the region to the intersection of the rectangle and the * window's winSize. The window is typically the parent of the @@ -913,7 +915,6 @@ CrushTree(WindowPtr pWin) * If wid is None, don't send any events *****/ -#ifndef NXAGENT_SERVER int DeleteWindow(void * value, XID wid) { @@ -949,7 +950,6 @@ DeleteWindow(void * value, XID wid) free(pWin); return Success; } -#endif /* NXAGENT_SERVER */ void DestroySubwindows(register WindowPtr pWin, ClientPtr client) @@ -2988,7 +2988,6 @@ UnrealizeTree( * generated. Cannot unmap a root window. *****/ -#ifndef NXAGENT_SERVER int UnmapWindow(register WindowPtr pWin, Bool fromConfigure) { @@ -3042,7 +3041,6 @@ UnmapWindow(register WindowPtr pWin, Bool fromConfigure) WindowsRestructured (); return(Success); } -#endif /* NXAGENT_SERVER */ /***** * UnmapSubwindows diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXwindow.c b/nx-X11/programs/Xserver/hw/nxagent/NXwindow.c index 88e68e463..a29dff384 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXwindow.c +++ b/nx-X11/programs/Xserver/hw/nxagent/NXwindow.c @@ -132,24 +132,6 @@ extern void nxagentSetVersionProperty(WindowPtr pWin); void InitRootWindow(WindowPtr pWin) { - ScreenPtr pScreen = pWin->drawable.pScreen; - int backFlag = CWBorderPixel | CWCursor | CWBackingStore; - - #ifdef TEST - fprintf(stderr, "InitRootWindow: Called for window at [%p][%ld] with parent [%p].\n", - (void *) pWin, nxagentWindowPriv(pWin)->window, (void *) pWin -> parent); - #endif - - if (nxagentOption(Rootless)) - { - #ifdef TEST - fprintf(stderr, "InitRootWindow: Assigned agent root to window at [%p][%ld] with parent [%p].\n", - (void *) pWin, nxagentWindowPriv(pWin)->window, (void *) pWin -> parent); - #endif - - nxagentRootlessWindow = pWin; - } - /* * A root window is created for each screen by main * and the pointer is saved in screenInfo.screens as @@ -164,36 +146,17 @@ InitRootWindow(WindowPtr pWin) * if you prefer) fits in the big picture. */ - #ifdef TEST - fprintf(stderr, "InitRootWindow: Going to create window as root at [%p][%ld] with parent [%p].\n", - (void *) pWin, nxagentWindowPriv(pWin)->window, (void *) pWin -> parent); - #endif - - if (!(*pScreen->CreateWindow)(pWin)) - return; /* XXX */ - - #ifdef TEST - fprintf(stderr, "InitRootWindow: Created window as root at [%p][%ld] with parent [%p].\n", - (void *) pWin, nxagentWindowPriv(pWin)->window, (void *) pWin -> parent); - #endif - - (*pScreen->PositionWindow)(pWin, 0, 0); - - pWin->cursorIsNone = FALSE; - pWin->optional->cursor = rootCursor; - rootCursor->refcnt++; - - if (blackRoot) - pWin->background.pixel = pScreen->blackPixel; - else - pWin->background.pixel = pScreen->whitePixel; - backFlag |= CWBackPixel; + if (nxagentOption(Rootless)) + { + #ifdef TEST + fprintf(stderr, "InitRootWindow: Assigned agent root to window at [%p][%ld] with parent [%p].\n", + (void *) pWin, nxagentWindowPriv(pWin)->window, (void *) pWin -> parent); + #endif - pWin->backingStore = defaultBackingStore; - pWin->forcedBS = (defaultBackingStore != NotUseful); + nxagentRootlessWindow = pWin; + } - /* We SHOULD check for an error value here XXX */ - (*pScreen->ChangeWindowAttributes)(pWin, backFlag); + xorg_InitRootWindow(pWin); /* * Map both the root and the default agent window. @@ -214,63 +177,13 @@ InitRootWindow(WindowPtr pWin) char artsd_port[10]; short int nPort = atoi(display) + 7000; sprintf(artsd_port,"%d", nPort); - nxagentPropagateArtsdProperties(pScreen, artsd_port); + nxagentPropagateArtsdProperties(pWin->drawable.pScreen, artsd_port); } #endif nxagentSetVersionProperty(pWin); } -/***** - * DeleteWindow - * Deletes child of window then window itself - * If wid is None, don't send any events - *****/ - -int -DeleteWindow(void * value, XID wid) - { - register WindowPtr pParent; - register WindowPtr pWin = (WindowPtr)value; - xEvent event; - - UnmapWindow(pWin, FALSE); - - CrushTree(pWin); - - pParent = pWin->parent; - if (wid && pParent && SubStrSend(pWin, pParent)) - { - memset(&event, 0, sizeof(xEvent)); - event.u.u.type = DestroyNotify; - event.u.destroyNotify.window = pWin->drawable.id; - DeliverEvents(pWin, &event, 1, NullWindow); - } - - FreeWindowResources(pWin); - if (pParent) - { - if (pParent->firstChild == pWin) - pParent->firstChild = pWin->nextSib; - if (pParent->lastChild == pWin) - pParent->lastChild = pWin->prevSib; - if (pWin->nextSib) - pWin->nextSib->prevSib = pWin->prevSib; - if (pWin->prevSib) - pWin->prevSib->nextSib = pWin->nextSib; - } - - if (pWin -> optional && - pWin -> optional -> colormap && - pWin -> parent) - { - nxagentSetInstalledColormapWindows(pWin -> drawable.pScreen); - } - - free(pWin); - return Success; -} - /* XXX need to retile border on each window with ParentRelative origin */ void ResizeChildrenWinSize(register WindowPtr pWin, int dx, int dy, int dw, int dh) @@ -308,6 +221,7 @@ ResizeChildrenWinSize(register WindowPtr pWin, int dx, int dy, int dw, int dh) SetWinSize (pSib); SetBorderSize (pSib); +#ifdef NXAGENT_SERVER /* * Don't force X to move children. It will position them * according with gravity. @@ -320,6 +234,9 @@ ResizeChildrenWinSize(register WindowPtr pWin, int dx, int dy, int dw, int dh) */ nxagentAddConfiguredWindow(pSib, CW_Update); +#else + (*pScreen->PositionWindow)(pSib, pSib->drawable.x, pSib->drawable.y); +#endif if ( (pChild = pSib->firstChild) ) { @@ -460,6 +377,7 @@ ConfigureWindow(register WindowPtr pWin, register Mask mask, XID *vlist, ClientP /* Figure out if the window should be moved. Doesn't make the changes to the window if event sent */ +#ifdef NXAGENT_SERVER #ifdef TEST if (nxagentWindowTopLevel(pWin)) { @@ -481,6 +399,7 @@ ConfigureWindow(register WindowPtr pWin, register Mask mask, XID *vlist, ClientP return Success; } +#endif if (mask & CWStackMode) pSib = WhereDoIGoInTheStack(pWin, pSib, pParent->drawable.x + x, @@ -624,7 +543,9 @@ ActuallyDoSomething: if (action != RESTACK_WIN) CheckCursorConfinement(pWin); +#ifdef NXAGENT_SERVER nxagentFlushConfigureWindow(); +#endif return(Success); #undef RESTACK_WIN @@ -687,10 +608,12 @@ ReparentWindow(register WindowPtr pWin, register WindowPtr pParent, pWin->parent = pParent; pPrev = RealChildHead(pParent); +#ifdef NXAGENT_SERVER if (pWin->parent == screenInfo.screens[0]->root) { nxagentSetTopLevelEventMask(pWin); } +#endif if (pPrev) { @@ -756,12 +679,14 @@ MapWindow(register WindowPtr pWin, ClientPtr client) #endif WindowPtr pLayerWin; +#ifdef NXAGENT_SERVER #ifdef TEST if (nxagentWindowTopLevel(pWin)) { fprintf(stderr, "MapWindow: pWin [%p] client [%p]\n", pWin, client); } #endif +#endif if (pWin->mapped) return(Success); @@ -852,80 +777,13 @@ MapWindow(register WindowPtr pWin, ClientPtr client) RegionUninit(&temp); } +#ifdef NXAGENT_SERVER nxagentFlushConfigureWindow(); +#endif return(Success); } -/***** - * UnmapWindow - * If the window is already unmapped, this request has no effect. - * Otherwise, the window is unmapped and an UnMapNotify event is - * generated. Cannot unmap a root window. - *****/ - -int -UnmapWindow(register WindowPtr pWin, Bool fromConfigure) -{ - register WindowPtr pParent; - xEvent event; - Bool wasRealized = (Bool)pWin->realized; - Bool wasViewable = (Bool)pWin->viewable; - ScreenPtr pScreen = pWin->drawable.pScreen; - WindowPtr pLayerWin = pWin; - - #ifdef TEST - if (nxagentWindowTopLevel(pWin)) - { - fprintf(stderr, "UnmapWindow: pWin [%p] fromConfigure [%d]\n", pWin, - fromConfigure); - } - #endif - - if ((!pWin->mapped) || (!(pParent = pWin->parent))) - return(Success); - if (SubStrSend(pWin, pParent) && MapUnmapEventsEnabled(pWin)) - { - memset(&event, 0, sizeof(xEvent)); - event.u.u.type = UnmapNotify; - event.u.unmapNotify.window = pWin->drawable.id; - event.u.unmapNotify.fromConfigure = fromConfigure; - DeliverEvents(pWin, &event, 1, NullWindow); - } - if (wasViewable && !fromConfigure) - { - pWin->valdata = UnmapValData; - (*pScreen->MarkOverlappedWindows)(pWin, pWin->nextSib, &pLayerWin); - (*pScreen->MarkWindow)(pLayerWin->parent); - } - pWin->mapped = FALSE; - if (wasRealized) - UnrealizeTree(pWin, fromConfigure); - if (wasViewable) - { - if (!fromConfigure) - { - (*pScreen->ValidateTree)(pLayerWin->parent, pWin, VTUnmap); - (*pScreen->HandleExposures)(pLayerWin->parent); - } -#ifdef DO_SAVE_UNDERS - if (DO_SAVE_UNDERS(pWin)) - { - if ( (*pScreen->ChangeSaveUnder)(pLayerWin, pWin->nextSib) ) - { - (*pScreen->PostChangeSaveUnder)(pLayerWin, pWin->nextSib); - } - } - pWin->DIXsaveUnder = FALSE; -#endif /* DO_SAVE_UNDERS */ - if (!fromConfigure && pScreen->PostValidateTree) - (*pScreen->PostValidateTree)(pLayerWin->parent, pWin, VTUnmap); - } - if (wasRealized && !fromConfigure) - WindowsRestructured (); - return(Success); -} - void SaveScreens(int on, int mode) { @@ -954,6 +812,7 @@ SaveScreens(int on, int mode) (* screenInfo.screens[i]->SaveScreen) (screenInfo.screens[i], on); if (savedScreenInfo[i].ExternalScreenSaver) { +#ifdef NXAGENT_SERVER if (nxagentOption(Timeout) != 0) { #ifdef TEST @@ -962,6 +821,7 @@ SaveScreens(int on, int mode) #endif } else +#endif { if ((*savedScreenInfo[i].ExternalScreenSaver) (screenInfo.screens[i], type, on == SCREEN_SAVER_FORCER)) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Window.c b/nx-X11/programs/Xserver/hw/nxagent/Window.c index 88110e7dc..ecf662f90 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Window.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Window.c @@ -2538,6 +2538,10 @@ void nxagentMapDefaultWindows(void) WindowPtr pWin = screenInfo.screens[i]->root; ScreenPtr pScreen = pWin -> drawable.pScreen; + /* + * InitRootWindow does that already, but as MapWindow() is + * idempotent we keep it here, too + */ MapWindow(pWin, serverClient); if (nxagentOption(Rootless) == 0) |