Perform rotation redisplay before calling driver block handler (which may flush rendering)
The rotation block handler uses regular driver rendering functions to repaint the screen, if those functions queue commands in the driver, it's important that the driver block handler be invoked after the rotated image is drawn. Signed-off-by: Keith Packard <keithp@keithp.com>
This commit is contained in:
parent
4aab05e3b3
commit
1740cda7a3
|
@ -293,11 +293,12 @@ xf86RotateBlockHandler(int screenNum, pointer blockData,
|
||||||
ScreenPtr pScreen = screenInfo.screens[screenNum];
|
ScreenPtr pScreen = screenInfo.screens[screenNum];
|
||||||
ScrnInfoPtr pScrn = xf86Screens[screenNum];
|
ScrnInfoPtr pScrn = xf86Screens[screenNum];
|
||||||
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
|
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
|
||||||
|
Bool rotation_active;
|
||||||
|
|
||||||
|
rotation_active = xf86RotateRedisplay(pScreen);
|
||||||
pScreen->BlockHandler = xf86_config->BlockHandler;
|
pScreen->BlockHandler = xf86_config->BlockHandler;
|
||||||
(*pScreen->BlockHandler) (screenNum, blockData, pTimeout, pReadmask);
|
(*pScreen->BlockHandler) (screenNum, blockData, pTimeout, pReadmask);
|
||||||
if (xf86RotateRedisplay(pScreen))
|
if (rotation_active) {
|
||||||
{
|
|
||||||
/* Re-wrap if rotation is still happening */
|
/* Re-wrap if rotation is still happening */
|
||||||
xf86_config->BlockHandler = pScreen->BlockHandler;
|
xf86_config->BlockHandler = pScreen->BlockHandler;
|
||||||
pScreen->BlockHandler = xf86RotateBlockHandler;
|
pScreen->BlockHandler = xf86RotateBlockHandler;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user