From 3319e7041ff89bb01b16a1dbbac85e28b1976ae3 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 18 Apr 2014 14:24:29 -0700 Subject: [PATCH] hw/xfree86: Let xf86Rotate leave the BlockHandler unwrapped when possible When no shadow frame buffer is needed, the rotate block handler doesn't need to be called any more. Remove it from the chain. Signed-off-by: Keith Packard Reviewed-by: Eric Anholt --- hw/xfree86/modes/xf86Rotate.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/hw/xfree86/modes/xf86Rotate.c b/hw/xfree86/modes/xf86Rotate.c index 99dcb43cb..1627e61dd 100644 --- a/hw/xfree86/modes/xf86Rotate.c +++ b/hw/xfree86/modes/xf86Rotate.c @@ -243,9 +243,13 @@ xf86RotateBlockHandler(ScreenPtr pScreen, xf86RotateRedisplay(pScreen); (*pScreen->BlockHandler) (pScreen, pTimeout, pReadmask); - /* cannot avoid re-wrapping until all wrapping is audited */ - xf86_config->BlockHandler = pScreen->BlockHandler; - pScreen->BlockHandler = xf86RotateBlockHandler; + + /* Re-wrap if we still need this hook */ + if (xf86_config->rotation_damage != NULL) { + xf86_config->BlockHandler = pScreen->BlockHandler; + pScreen->BlockHandler = xf86RotateBlockHandler; + } else + xf86_config->BlockHandler = NULL; } void