summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2010-09-27 17:30:13 +0100
committerJeremy Huddleston <jeremyhu@apple.com>2010-09-28 18:52:53 -0700
commitf939ab0175e1662f5df664449cba5d72fa1dbe1c (patch)
treeb5b5072a0fed944bd864b234630cee98711112cf
parent3ea7d271c8847a3135442ea24b8d5ff81d5e20b7 (diff)
modes: Beware the driver switching root pixmaps
Program received signal SIGSEGV, Segmentation fault. 0x080d4a2d in xf86RandR12ScreenSetSize (pScreen=0x8dca3a0, width=800, height=600, mmWidth=210, mmHeight=157) at ../../../../hw/xfree86/modes/xf86RandR12.c:731 731 ../../../../hw/xfree86/modes/xf86RandR12.c: No such file or directory. in ../../../../hw/xfree86/modes/xf86RandR12.c (gdb) bt full height=600, mmWidth=210, mmHeight=157) at ../../../../hw/xfree86/modes/xf86RandR12.c:731 randrp = 0x8dcae68 pScrn = 0x8dbeb28 config = <value optimized out> pRoot = 0x8e08e30 pScrnPix = 0xb6d12008 ret = 1 c = <value optimized out> mmWidth=210, mmHeight=157) at ../../randr/rrscreen.c:185 No locals. at ../../randr/rrscreen.c:307 pWin = 0x8e08e30 pScreen = 0x8dca3a0 i = <value optimized out> rc = 0 ../../randr/randr.c:485 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Julien Cristau <jcristau@debian.org> Tested-by: Julien Cristau <jcristau@debian.org> Cc: Keith Packard <keithp@keithp.com> Reviewed-by: Keith Packard <keithp@keithp.com> Signed-off-by: Keith Packard <keithp@keithp.com> (cherry picked from commit fdabcec57ae0fdc9910060609bb0848552c1db4d)
-rw-r--r--hw/xfree86/modes/xf86RandR12.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c
index 043ceee08..c17b5fa95 100644
--- a/hw/xfree86/modes/xf86RandR12.c
+++ b/hw/xfree86/modes/xf86RandR12.c
@@ -686,7 +686,7 @@ xf86RandR12ScreenSetSize (ScreenPtr pScreen,
ScrnInfoPtr pScrn = XF86SCRNINFO(pScreen);
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
WindowPtr pRoot = pScreen->root;
- PixmapPtr pScrnPix = (*pScreen->GetScreenPixmap)(pScreen);
+ PixmapPtr pScrnPix;
Bool ret = FALSE;
int c;
@@ -727,6 +727,7 @@ xf86RandR12ScreenSetSize (ScreenPtr pScreen,
}
}
+ pScrnPix = (*pScreen->GetScreenPixmap)(pScreen);
pScreen->width = pScrnPix->drawable.width = width;
pScreen->height = pScrnPix->drawable.height = height;
randrp->mmWidth = pScreen->mmWidth = mmWidth;