xf86RotateDestroy() will only free an unused transformation, so when tearing down a rotation we first need to mark the current crtc as untransformed prior to calling destroy. Similarly for CloseScreen we have the same issue and would leave stale values for the next server generation.
Signed-off-by: Chris Wilson <[email protected]> --- hw/xfree86/modes/xf86Rotate.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) diff --git a/hw/xfree86/modes/xf86Rotate.c b/hw/xfree86/modes/xf86Rotate.c index da8a8f4..ebf93d3 100644 --- a/hw/xfree86/modes/xf86Rotate.c +++ b/hw/xfree86/modes/xf86Rotate.c @@ -340,8 +340,10 @@ xf86RotateCloseScreen (ScreenPtr screen) xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn); int c; - for (c = 0; c < xf86_config->num_crtc; c++) + for (c = 0; c < xf86_config->num_crtc; c++) { + xf86_config->crtc[c]->transform_in_use = FALSE; xf86RotateDestroy (xf86_config->crtc[c]); + } } static Bool @@ -407,8 +409,8 @@ xf86CrtcRotate (xf86CrtcPtr crtc) * If the untranslated transformation is the identity, * disable the shadow buffer */ - xf86RotateDestroy (crtc); crtc->transform_in_use = FALSE; + xf86RotateDestroy (crtc); free(new_params); new_params = NULL; new_nparams = 0; -- 1.7.5.4 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
