diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2010-09-27 17:30:13 +0100 |
---|---|---|
committer | Jeremy Huddleston <jeremyhu@apple.com> | 2010-09-28 18:52:53 -0700 |
commit | f939ab0175e1662f5df664449cba5d72fa1dbe1c (patch) | |
tree | b5b5072a0fed944bd864b234630cee98711112cf | |
parent | 3ea7d271c8847a3135442ea24b8d5ff81d5e20b7 (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.c | 3 |
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; |