summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2009-08-25 16:54:16 -0700
committerKeith Packard <keithp@keithp.com>2009-08-25 20:12:17 -0700
commitcebc0a7aa7a368b2ade3a808195d2e738fda83e9 (patch)
tree9497221eb691ed049e37c0e7535c564f05443503
parent5848fca11f3c5b65bb6634816c0df6aeb6eda87d (diff)
xf86_reload_cursors: fix cursor position to eliminate jumping after mode set
xf86_reload_cursors restores the cursor to the correct position, but that must adjust for cursor hot spot and frame before calling down to the hardware function, otherwise the cursor jumps to the wrong position until it is repositioned by the user. Signed-off-by: Keith Packard <keithp@keithp.com> (cherry picked from commit 4aab05e3b3231f1ec9795a66a075d17a722634a7)
-rw-r--r--hw/xfree86/modes/xf86Cursors.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/hw/xfree86/modes/xf86Cursors.c b/hw/xfree86/modes/xf86Cursors.c
index 3106f051b..fbd61e9fd 100644
--- a/hw/xfree86/modes/xf86Cursors.c
+++ b/hw/xfree86/modes/xf86Cursors.c
@@ -640,9 +640,11 @@ xf86_reload_cursors (ScreenPtr screen)
(*cursor_info->LoadCursorARGB) (scrn, cursor);
else if (src)
#endif
- (*cursor_info->LoadCursorImage)(cursor_info->pScrn, src);
+ (*cursor_info->LoadCursorImage)(scrn, src);
- (*cursor_info->SetCursorPosition)(cursor_info->pScrn, x, y);
+ x += scrn->frameX0 + cursor_screen_priv->HotX;
+ y += scrn->frameY0 + cursor_screen_priv->HotY;
+ (*cursor_info->SetCursorPosition)(scrn, x, y);
}
}