debian/changelog | 2 debian/patches/20-randr-shadow-crashes.diff | 122 ++++++++++++++++++++++++++++ debian/patches/series | 1 3 files changed, 125 insertions(+)
New commits: commit a08ce4e725887de263cdad2c8e7b20bf54fab336 Author: Julien Cristau <jcris...@debian.org> Date: Sun Sep 19 22:59:53 2010 +0200 Fixup patch to apply diff --git a/debian/patches/20-randr-shadow-crashes.diff b/debian/patches/20-randr-shadow-crashes.diff index 8d58eae..6063b27 100644 --- a/debian/patches/20-randr-shadow-crashes.diff +++ b/debian/patches/20-randr-shadow-crashes.diff @@ -50,16 +50,16 @@ diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c index 043ceee..c17b5fa 100644 --- a/hw/xfree86/modes/xf86RandR12.c +++ b/hw/xfree86/modes/xf86RandR12.c -@@ -686,7 +686,7 @@ xf86RandR12ScreenSetSize (ScreenPtr pScreen, +@@ -687,7 +687,7 @@ xf86RandR12ScreenSetSize (ScreenPtr pScreen, ScrnInfoPtr pScrn = XF86SCRNINFO(pScreen); xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn); - WindowPtr pRoot = pScreen->root; + WindowPtr pRoot = WindowTable[pScreen->myNum]; - PixmapPtr pScrnPix = (*pScreen->GetScreenPixmap)(pScreen); + PixmapPtr pScrnPix; Bool ret = FALSE; int c; -@@ -727,6 +727,7 @@ xf86RandR12ScreenSetSize (ScreenPtr pScreen, +@@ -728,6 +728,7 @@ xf86RandR12ScreenSetSize (ScreenPtr pScreen, } } @@ -104,7 +104,7 @@ 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, +@@ -729,6 +729,13 @@ xf86RandR12ScreenSetSize (ScreenPtr pScreen, } pScrnPix = (*pScreen->GetScreenPixmap)(pScreen); commit 12d9d4a3e6304de2b1940e6cdb4317412fe807be Author: Julien Cristau <jcris...@debian.org> Date: Sun Sep 19 22:53:29 2010 +0200 Don't crash in randr if the driver changes the screen pixmap on resize diff --git a/debian/changelog b/debian/changelog index 89bbb67..fe10aca 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,8 @@ xorg-server (2:1.7.7-7) UNRELEASED; urgency=low * Use linux-any instead of a list of architecture names for restrictions of build-dependencies (closes: #594927). + * Add a couple patches by Chris Wilson to avoid crashing in RandR if the + driver changes the screen pixmap on resize. -- Julien Cristau <jcris...@debian.org> Sun, 12 Sep 2010 21:57:47 +0200 diff --git a/debian/patches/20-randr-shadow-crashes.diff b/debian/patches/20-randr-shadow-crashes.diff new file mode 100644 index 0000000..8d58eae --- /dev/null +++ b/debian/patches/20-randr-shadow-crashes.diff @@ -0,0 +1,122 @@ +From: Chris Wilson <ch...@chris-wilson.co.uk> +To: xorg-de...@lists.x.org +Subject: [PATCH 1/3] modes: Beware the driver switching root pixmaps +Date: Tue, 14 Sep 2010 14:13:39 +0100 +Message-Id: <1284470021-16577-2-git-send-email-ch...@chris-wilson.co.uk> +X-Mailer: git-send-email 1.7.1 +In-Reply-To: <1284470021-16577-1-git-send-email-ch...@chris-wilson.co.uk> +References: <1284470021-16577-1-git-send-email-ch...@chris-wilson.co.uk> +Cc: Julien Cristau <jcris...@debian.org> +MIME-Version: 1.0 +Content-Type: text/plain; charset="us-ascii" +Content-Transfer-Encoding: 7bit +Content-Length: 2264 + +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 <ch...@chris-wilson.co.uk> +Cc: Julien Cristau <jcris...@debian.org> +Tested-by: Julien Cristau <jcris...@debian.org> +Cc: Keith Packard <kei...@keithp.com> +Reviewed-by: Keith Packard <kei...@keithp.com> +--- + 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 043ceee..c17b5fa 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; +-- +1.7.1 + +From: Chris Wilson <ch...@chris-wilson.co.uk> +To: xorg-de...@lists.x.org +Subject: [PATCH 2/3] modes: Update pixmapPrivate after driver->resize() calls + ModifyPixmapHeader +Date: Tue, 14 Sep 2010 14:13:40 +0100 +Message-Id: <1284470021-16577-3-git-send-email-ch...@chris-wilson.co.uk> +X-Mailer: git-send-email 1.7.1 +In-Reply-To: <1284470021-16577-1-git-send-email-ch...@chris-wilson.co.uk> +References: <1284470021-16577-1-git-send-email-ch...@chris-wilson.co.uk> +Cc: Julien Cristau <jcris...@debian.org>, + Andrew Guertin <li...@dolphinling.net> +MIME-Version: 1.0 +Content-Type: text/plain; charset="us-ascii" +Content-Transfer-Encoding: 7bit +Content-Length: 1542 + +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 <ch...@chris-wilson.co.uk> +Cc: Julien Cristau <jcris...@debian.org> +Cc: Andrew Guertin <li...@dolphinling.net> +Tested-by: Julien Cristau <jcris...@debian.org> +Cc: Keith Packard <kei...@keithp.com> +--- + 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 diff --git a/debian/patches/series b/debian/patches/series index 78f1dcd..a175ece 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -18,3 +18,4 @@ 17-xfree86-saner-conf-search-paths.diff 18-Add-10-evdev.conf.diff 19-compresize-fix.diff +20-randr-shadow-crashes.diff -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/e1oxfb4-0002ut...@alioth.debian.org