So the difference between UXA and SNA in this case, is that UXA tidies up the outputs upon screen close and server regeneration, SNA doesn't because that code is buggy ;-)
Can you try this patch to the xserver:
diff --git a/hw/xfree86/modes/xf86Rotate.c b/hw/xfree86/modes/xf86Rotate.c index ff7000b..0c9123e 100644 --- a/hw/xfree86/modes/xf86Rotate.c +++ b/hw/xfree86/modes/xf86Rotate.c @@ -313,6 +313,12 @@ xf86RotateDestroy (xf86CrtcPtr crtc) DamageDestroy (xf86_config->rotation_damage); xf86_config->rotation_damage = NULL; } + + if (xf86_config->BlockHandler) + { + pScreen->BlockHandler = xf86_config->BlockHandler; + xf86_config->BlockHandler = NULL; + } }
void
So the difference between UXA and SNA in this case, is that UXA tidies up the outputs upon screen close and server regeneration, SNA doesn't because that code is buggy ;-)
Can you try this patch to the xserver:
diff --git a/hw/xfree86/ modes/xf86Rotat e.c b/hw/xfree86/ modes/xf86Rotat e.c modes/xf86Rotat e.c modes/xf86Rotat e.c
DamageDestroy (xf86_config- >rotation_ damage) ;
xf86_config- >rotation_ damage = NULL; >BlockHandler) >BlockHandler = xf86_config- >BlockHandler; >BlockHandler = NULL;
index ff7000b..0c9123e 100644
--- a/hw/xfree86/
+++ b/hw/xfree86/
@@ -313,6 +313,12 @@ xf86RotateDestroy (xf86CrtcPtr crtc)
}
+
+ if (xf86_config-
+ {
+ pScreen-
+ xf86_config-
+ }
}
void