As with xf86SwitchMode(), if the driver modifies the Screen pixmap header
in the course of resizing the framebuffer, this change needs to be
propagated to the ScrnInfo->pixmapPrivate or else the pixmap header will
be overwritten by xf86EnableDisableFBAccess().

Signed-off-by: Chris Wilson <[email protected]>
Cc: Julien Cristau <[email protected]>
Cc: Andrew Guertin <[email protected]>
Tested-by: Julien Cristau <[email protected]>
Cc: Keith Packard <[email protected]>
---
 hw/xfree86/modes/xf86RandR12.c |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c
index c17b5fa..b334b3c 100644
--- a/hw/xfree86/modes/xf86RandR12.c
+++ b/hw/xfree86/modes/xf86RandR12.c
@@ -728,6 +728,13 @@ xf86RandR12ScreenSetSize (ScreenPtr        pScreen,
     }
 
     pScrnPix = (*pScreen->GetScreenPixmap)(pScreen);
+    /*
+     * Get the new Screen pixmap ptr as resize() might have called
+     * ModifyPixmapHeader and xf86EnableDisableFBAccess will put it back...
+     * Unfortunately.
+     */
+    if (pScrnPix->devPrivate.ptr)
+       pScrn->pixmapPrivate = pScrnPix->devPrivate;
     pScreen->width = pScrnPix->drawable.width = width;
     pScreen->height = pScrnPix->drawable.height = height;
     randrp->mmWidth = pScreen->mmWidth = mmWidth;
-- 
1.7.1

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to