summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hauffa <hauffa@in.tum.de>2010-07-17 12:18:39 -0700
committerJeremy Huddleston <jeremyhu@apple.com>2010-07-19 22:31:20 -0700
commitea191e1679f91373da439b5a90cae756aff837c2 (patch)
treefd297ead90457456ca7e70bc881084581db8ad90
parent9168c63e275767c728afe7b2bba8bc391aceeeb8 (diff)
rootless: Adjust the frame size of the native root window in RootlessResizeWindow
If the native root window isn't resized as well, we will likely crash the next time we draw to the root. On OS X, this can be seen by: 1) Put the display preferences in the menu bar and set X11's preferences so you can access the menu bar in fullscreen mode 2) Set the resolution of your screen lower than normal. 3) Start X11 in fullscreen mode. The root window will cover the screen as expected. 4) Use the menu bar to increase the resolution of the display. The root window will now cover the old area and not the full screen, but 'xwininfo -root' will report the full width. 5) Run 'xsetroot -solid red', and we have the crash you mention above. Leaving/entering fullscreen after #4 will fix the problem. This is because the WINREC is erased when we leave fullscreen mode and it is recreated upon re-entry: RootlessUpdateRooted(FALSE) RootlessDisableRoot(screenInfo.screens[0]) RootlessDestroyFrame (pRoot, winRec); RootlessUpdateRooted(TRUE) RootlessEnableRoot(screenInfo.screens[0]) RootlessEnsureFrame(screenInfo.screens[0]->pRoot) creates a new WINREC... Signed-off-by: Jan Hauffa <hauffa@in.tum.de> Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com> Acked-By: Jon TURNEY <jon.turney@dronecode.org.uk> Tested-by: Jeremy Huddleston <jeremyhu@apple.com> (cherry picked from commit 95756f410c65a6510a797e94a792b959d45cdb9e)
-rw-r--r--miext/rootless/rootlessWindow.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/miext/rootless/rootlessWindow.c b/miext/rootless/rootlessWindow.c
index 55c7b9689..8e3b7af5d 100644
--- a/miext/rootless/rootlessWindow.c
+++ b/miext/rootless/rootlessWindow.c
@@ -1326,6 +1326,13 @@ RootlessResizeWindow(WindowPtr pWin, int x, int y,
REGION_COPY(pScreen, &pWin->clipList, &pWin->winSize);
REGION_COPY(pScreen, &pWin->borderClip, &pWin->winSize);
+ if (winRec) {
+ SCREENREC(pScreen)->imp->ResizeFrame(winRec->wid, pScreen,
+ x + SCREEN_TO_GLOBAL_X,
+ y + SCREEN_TO_GLOBAL_Y,
+ w, h, RL_GRAVITY_NONE);
+ }
+
miSendExposures(pWin, &pWin->borderClip,
pWin->drawable.x, pWin->drawable.y);
}