Commit 5f318822 authored by Haihao Xiang's avatar Haihao Xiang Committed by Keith Packard

avoid a potential endless loop.

Previously it is possible that creating rotation data, then cleaning
up and creating again so that pScreen->BlockHandler and
xf86_config->BlockHandler all point to xf86RotateBlockHandler.
See bug #19343.
parent b2756a71
......@@ -291,6 +291,8 @@ xf86RotateBlockHandler(int screenNum, pointer blockData,
/* Re-wrap if rotation is still happening */
xf86_config->BlockHandler = pScreen->BlockHandler;
pScreen->BlockHandler = xf86RotateBlockHandler;
} else {
xf86_config->BlockHandler = NULL;
}
}
......@@ -477,8 +479,10 @@ xf86CrtcRotate (xf86CrtcPtr crtc)
goto bail2;
/* Wrap block handler */
xf86_config->BlockHandler = pScreen->BlockHandler;
pScreen->BlockHandler = xf86RotateBlockHandler;
if (!xf86_config->BlockHandler) {
xf86_config->BlockHandler = pScreen->BlockHandler;
pScreen->BlockHandler = xf86RotateBlockHandler;
}
}
#ifdef RANDR_12_INTERFACE
if (transform)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment