dix: Skip more code in SetRootClip for ROOT_CLIP_INPUT_ONLY

Despite e957a2e5dd ("dix: Add hybrid full-size/empty-clip mode to
SetRootClip"), I was still seeing all X11 client windows flashing when
the root window size changes with rootless Xwayland (e.g. due to
hotplugging a monitor).

Skipping this code for ROOT_CLIP_INPUT_ONLY fixes the issue for me.
This commit is contained in:
Michel Dänzer 2022-08-19 12:51:20 +02:00 committed by Michel Dänzer
parent 4603d64483
commit f778b56a74

View File

@ -3642,7 +3642,7 @@ SetRootClip(ScreenPtr pScreen, int enable)
if (!pWin) if (!pWin)
return; return;
WasViewable = (Bool) (pWin->viewable); WasViewable = (Bool) (pWin->viewable);
if (WasViewable) { if (WasViewable && mode != ROOT_CLIP_INPUT_ONLY) {
for (pChild = pWin->firstChild; pChild; pChild = pChild->nextSib) { for (pChild = pWin->firstChild; pChild; pChild = pChild->nextSib) {
(void) (*pScreen->MarkOverlappedWindows) (pChild, (void) (*pScreen->MarkOverlappedWindows) (pChild,
pChild, &pLayerWin); pChild, &pLayerWin);
@ -3696,7 +3696,7 @@ SetRootClip(ScreenPtr pScreen, int enable)
ResizeChildrenWinSize(pWin, 0, 0, 0, 0); ResizeChildrenWinSize(pWin, 0, 0, 0, 0);
if (WasViewable) { if (WasViewable && mode != ROOT_CLIP_INPUT_ONLY) {
if (pWin->firstChild) { if (pWin->firstChild) {
anyMarked |= (*pScreen->MarkOverlappedWindows) (pWin->firstChild, anyMarked |= (*pScreen->MarkOverlappedWindows) (pWin->firstChild,
pWin->firstChild, pWin->firstChild,