summaryrefslogtreecommitdiff
authorKeith Packard <keithp@keithp.com>2009-08-25 23:58:07 (GMT)
committer Keith Packard <keithp@keithp.com>2009-08-26 01:14:19 (GMT)
commit1740cda7a37abc7d0a169ab4555b446adaa62211 (patch) (side-by-side diff)
tree8ae7e81cb451e4e64293c82167c24ccd95c95fa4
parent4aab05e3b3231f1ec9795a66a075d17a722634a7 (diff)
downloadxserver-1740cda7a37abc7d0a169ab4555b446adaa62211.zip
xserver-1740cda7a37abc7d0a169ab4555b446adaa62211.tar.gz
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>
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--hw/xfree86/modes/xf86Rotate.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/hw/xfree86/modes/xf86Rotate.c b/hw/xfree86/modes/xf86Rotate.c
index e808434..e0ea274 100644
--- a/hw/xfree86/modes/xf86Rotate.c
+++ b/hw/xfree86/modes/xf86Rotate.c
@@ -293,11 +293,12 @@ xf86RotateBlockHandler(int screenNum, pointer blockData,
ScreenPtr pScreen = screenInfo.screens[screenNum];
ScrnInfoPtr pScrn = xf86Screens[screenNum];
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
+ Bool rotation_active;
+ rotation_active = xf86RotateRedisplay(pScreen);
pScreen->BlockHandler = xf86_config->BlockHandler;
(*pScreen->BlockHandler) (screenNum, blockData, pTimeout, pReadmask);
- if (xf86RotateRedisplay(pScreen))
- {
+ if (rotation_active) {
/* Re-wrap if rotation is still happening */
xf86_config->BlockHandler = pScreen->BlockHandler;
pScreen->BlockHandler = xf86RotateBlockHandler;