[PATCH] xfree86: Fix RandR rotation across server generations

Pierre-Loup A. Griffais pgriffais at nvidia.com
Fri Nov 4 23:42:37 PDT 2011


 From efced7bc4bba912e23a4c76f1057da7a1529dd92 Mon Sep 17 00:00:00 2001
From: Pierre-Loup A. Griffais <pgriffais at 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 <pgriffais at 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



More information about the xorg-devel mailing list