diff options
author | Ben Byer <bbyer@bbyer.apple.com> | 2007-11-08 18:49:05 -0800 |
---|---|---|
committer | Ben Byer <bbyer@bbyer.apple.com> | 2007-11-08 20:42:01 -0800 |
commit | f2a3728868376a3646832d4af3a29549ce0b8f5d (patch) | |
tree | 486c36f546e1c2918873f3c28c783da92b16d7be /miext/rootless/rootlessWindow.c | |
parent | 338c1aedbdf3964e542947140f7c50d58542cf12 (diff) |
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.
Diffstat (limited to 'miext/rootless/rootlessWindow.c')
-rw-r--r-- | miext/rootless/rootlessWindow.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/miext/rootless/rootlessWindow.c b/miext/rootless/rootlessWindow.c index eb736b7f7..89c02f8c7 100644 --- a/miext/rootless/rootlessWindow.c +++ b/miext/rootless/rootlessWindow.c @@ -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); |