xserver: Branch 'master'

Keith Packard keithp at kemper.freedesktop.org
Mon Nov 14 09:14:51 PST 2011


 hw/xfree86/modes/xf86Crtc.c |    3 +++
 1 file changed, 3 insertions(+)

New commits:
commit a551f126cc4af7a476d9c8fd0cb309d5aa600d54
Author: Pierre-Loup A. Griffais <pgriffais at nvidia.com>
Date:   Fri Nov 4 23:26:25 2011 -0700

    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 <pgriffais at nvidia.com>
    Reviewed-by: Aaron Plattner <aplattner at nvidia.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

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);


More information about the xorg-commit mailing list