From efced7bc4bba912e23a4c76f1057da7a1529dd92 Mon Sep 17 00:00:00 2001 From: Pierre-Loup A. Griffais <pgriff...@nvidia.com> Date: Fri, 4 Nov 2011 23:26:25 -0700 Subject: [PATCH] xfree86: Fix RandR rotation across server generations
245cb8e94fd1599 fixed xf86RotateDestroy() to actually run its teardown code, causing the Damage object to properly be re-allocated after a server regeneration. However the block that does that still thinks the Rotate layer BlockHandler is wrapped from the last generation, meaning the shadow pixmap is never re-allocated and the Damage object is never re-registered, causing a blank screen, and potentially a driver crash on the next teardown after the server asks it to free a 0x0 Pixmap. Signed-off-by: Pierre-Loup A. Griffais <pgriff...@nvidia.com> --- hw/xfree86/modes/xf86Crtc.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c index aac33d3..9532151 100644 --- a/hw/xfree86/modes/xf86Crtc.c +++ b/hw/xfree86/modes/xf86Crtc.c @@ -807,6 +807,9 @@ xf86CrtcScreenInit (ScreenPtr screen) config->CloseScreen = screen->CloseScreen; screen->CloseScreen = xf86CrtcCloseScreen; + + /* This might still be marked wrapped from a previous generation */ + config->BlockHandler = NULL; #ifdef XFreeXDGA _xf86_di_dga_init_internal(screen); -- 1.7.4.1
>From efced7bc4bba912e23a4c76f1057da7a1529dd92 Mon Sep 17 00:00:00 2001 From: Pierre-Loup A. Griffais <pgriff...@nvidia.com> Date: Fri, 4 Nov 2011 23:26:25 -0700 Subject: [PATCH] xfree86: Fix RandR rotation across server generations 245cb8e94fd1599 fixed xf86RotateDestroy() to actually run its teardown code, causing the Damage object to properly be re-allocated after a server regeneration. However the block that does that still thinks the Rotate layer BlockHandler is wrapped from the last generation, meaning the shadow pixmap is never re-allocated and the Damage object is never re-registered, causing a blank screen, and potentially a driver crash on the next teardown after the server asks it to free a 0x0 Pixmap. Signed-off-by: Pierre-Loup A. Griffais <pgriff...@nvidia.com> --- hw/xfree86/modes/xf86Crtc.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c index aac33d3..9532151 100644 --- a/hw/xfree86/modes/xf86Crtc.c +++ b/hw/xfree86/modes/xf86Crtc.c @@ -807,6 +807,9 @@ xf86CrtcScreenInit (ScreenPtr screen) config->CloseScreen = screen->CloseScreen; screen->CloseScreen = xf86CrtcCloseScreen; + + /* This might still be marked wrapped from a previous generation */ + config->BlockHandler = NULL; #ifdef XFreeXDGA _xf86_di_dga_init_internal(screen); -- 1.7.4.1
_______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel