xserver: Branch 'master'

Maarten Maathuis madman2003 at kemper.freedesktop.org
Sun Feb 17 02:27:21 PST 2008


 composite/compwindow.c |   25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

New commits:
commit 70c0592a97c7dc9db0576d32b3bdbe4766520509
Author: Maarten Maathuis <madman2003 at gmail.com>
Date:   Sun Feb 17 11:21:01 2008 +0100

    Resize composite overlay window when the root window changes.
    
    - This allows some compositing managers to work, even after randr12 has changed the root window size.
    - Thanks to ajax for figuring out the best place to put this.
    - Example:
    	- xf86RandR12SetMode() calls EnableDisableFBAccess().
    	- That calls xf86SetRootClip() which in turn calls ResizeChildrenWinSize().
    	- The final step is the call to PositionWindow().

diff --git a/composite/compwindow.c b/composite/compwindow.c
index 5792367..ee0f7d2 100644
--- a/composite/compwindow.c
+++ b/composite/compwindow.c
@@ -165,6 +165,29 @@ compCheckRedirect (WindowPtr pWin)
     return TRUE;
 }
 
+static int
+updateOverlayWindow(ScreenPtr pScreen)
+{
+	CompScreenPtr cs;
+	WindowPtr pWin; /* overlay window */
+	XID vlist[2];
+
+	cs = GetCompScreen(pScreen);
+	if ((pWin = cs->pOverlayWin) != NULL) {
+		if ((pWin->drawable.width == pScreen->width) &&
+			(pWin->drawable.height == pScreen->height))
+			return Success;
+
+		/* Let's resize the overlay window. */
+		vlist[0] = pScreen->width;
+		vlist[1] = pScreen->height;
+		return ConfigureWindow(pWin, CWWidth | CWHeight, vlist, wClient(pWin));
+	}
+
+	/* Let's be on the safe side and not assume an overlay window is always allocated. */
+	return Success;
+}
+
 Bool
 compPositionWindow (WindowPtr pWin, int x, int y)
 {
@@ -203,6 +226,8 @@ compPositionWindow (WindowPtr pWin, int x, int y)
     cs->PositionWindow = pScreen->PositionWindow;
     pScreen->PositionWindow = compPositionWindow;
     compCheckTree (pWin->drawable.pScreen);
+    if (updateOverlayWindow(pScreen) != Success)
+	ret = FALSE;
     return ret;
 }
 


More information about the xorg-commit mailing list