[Xquartz-changes] xserver: Branch 'server-1.4-apple'

Jeremy Huddleston jeremyhu at freedesktop.org
Tue Jul 20 00:45:23 PDT 2010


 miext/rootless/rootlessWindow.c |    7 +++++++
 1 file changed, 7 insertions(+)

New commits:
commit 4e9d4405b1a9bbc29bb7db3cff978ad1dfc3a2ed
Author: Jan Hauffa <hauffa at in.tum.de>
Date:   Sat Jul 17 12:18:39 2010 -0700

    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 at in.tum.de>
    Reviewed-by: Jeremy Huddleston <jeremyhu at apple.com>
    Acked-By: Jon TURNEY <jon.turney at dronecode.org.uk>
    Tested-by: Jeremy Huddleston <jeremyhu at apple.com>
    (cherry picked from commit 95756f410c65a6510a797e94a792b959d45cdb9e)

diff --git a/miext/rootless/rootlessWindow.c b/miext/rootless/rootlessWindow.c
index d90569f..a12c64b 100644
--- a/miext/rootless/rootlessWindow.c
+++ b/miext/rootless/rootlessWindow.c
@@ -1330,6 +1330,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);        
     }


More information about the Xquartz-changes mailing list