diff options
author | Keith Packard <keithp@keithp.com> | 2009-08-25 16:54:16 -0700 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2009-08-25 20:12:17 -0700 |
commit | cebc0a7aa7a368b2ade3a808195d2e738fda83e9 (patch) | |
tree | 9497221eb691ed049e37c0e7535c564f05443503 | |
parent | 5848fca11f3c5b65bb6634816c0df6aeb6eda87d (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.c | 6 |
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); } } |