Patch to rootless code that should fix many crashes. Credit to Ken Thomases

at CodeWeavers for the patch.  From his description:

Fix a display bug with the X server.  The Generic Rootless extension
installs overrides for certain GC (graphics context) operations.  Within
these overrides, they temporarily uninstall themselves, perform their work,
and then reinstall themselves.  Except sometimes they would return early
and wouldn't reinstall themselves when they should.  Now they do in all cases.

Fix a bug in RootlessCopyWindow where early returns could leave the screen's
dispatch table entry for CopyWindow unwrapped.  We think that this is
another case (hopefully the last) of the rootless drawing bug.
This commit is contained in:
Ben Byer
2007-11-08 18:49:05 -08:00
parent 338c1aedbd
commit f2a3728868
2 changed files with 35 additions and 20 deletions

View File

@@ -836,13 +836,13 @@ RootlessCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc)
top = TopLevelParent(pWin);
if (top == NULL) {
RL_DEBUG_MSG("no parent\n");
return;
goto out;
}
winRec = WINREC(top);
if (winRec == NULL) {
RL_DEBUG_MSG("not framed\n");
return;
goto out;
}
/* Move region to window local coords */
@@ -865,6 +865,7 @@ RootlessCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc)
RootlessDamageRegion(pWin, prgnSrc);
}
out:
REGION_UNINIT(pScreen, &rgnDst);
fbValidateDrawable(&pWin->drawable);