[PATCH] xfree86: Fix RandR rotation across server generations

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


BTW, is it by design that RandR rotation sticks around across 
generations? I was under the impression you were supposed to get the 
server back in the exact state you originally started with. In any case, 
I think this is still worthwhile to have in the meantime to fix the 
corruption and crashes people are getting today, even if the behaviour 
ends up changing in the future.

On 11/04/2011 11:42 PM, Pierre-Loup A. Griffais wrote:
>    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);



More information about the xorg-devel mailing list