|
|
28a1ec |
From b8e4a6a4b78946e2155e0413ce396d587ab35a66 Mon Sep 17 00:00:00 2001
|
|
|
28a1ec |
From: Adam Jackson <ajax@redhat.com>
|
|
|
28a1ec |
Date: Fri, 9 Feb 2018 16:03:38 -0500
|
|
|
28a1ec |
Subject: [PATCH xserver 6/6] animcur: Change which CursorPtr we save in
|
|
|
28a1ec |
external state
|
|
|
28a1ec |
|
|
|
28a1ec |
Formerly spriteInfo->anim.pCursor would point to the animated cursor (or
|
|
|
28a1ec |
NULL if not animated). That value would also be available in
|
|
|
28a1ec |
spriteInfo->sprite->current, so instead lets use anim.pCursor to point
|
|
|
28a1ec |
to the current animation element.
|
|
|
28a1ec |
|
|
|
28a1ec |
(Also: having done this, look that one up from the XFixes requests)
|
|
|
28a1ec |
|
|
|
28a1ec |
Signed-off-by: Adam Jackson <ajax@redhat.com>
|
|
|
28a1ec |
(cherry picked from commit e4edcaca33d3b23f612d5a91a93f52770d8fab3e)
|
|
|
28a1ec |
---
|
|
|
28a1ec |
render/animcur.c | 7 ++++---
|
|
|
28a1ec |
xfixes/cursor.c | 5 ++++-
|
|
|
28a1ec |
2 files changed, 8 insertions(+), 4 deletions(-)
|
|
|
28a1ec |
|
|
|
28a1ec |
diff --git a/render/animcur.c b/render/animcur.c
|
|
|
28a1ec |
index e585a8f23..50e254d01 100644
|
|
|
28a1ec |
--- a/render/animcur.c
|
|
|
28a1ec |
+++ b/render/animcur.c
|
|
|
28a1ec |
@@ -133,7 +133,7 @@ AnimCurTimerNotify(OsTimerPtr timer, CARD32 now, void *arg)
|
|
|
28a1ec |
ScreenPtr pScreen = dev->spriteInfo->anim.pScreen;
|
|
|
28a1ec |
AnimCurScreenPtr as = GetAnimCurScreen(pScreen);
|
|
|
28a1ec |
|
|
|
28a1ec |
- AnimCurPtr ac = GetAnimCur(dev->spriteInfo->anim.pCursor);
|
|
|
28a1ec |
+ AnimCurPtr ac = GetAnimCur(dev->spriteInfo->sprite->current);
|
|
|
28a1ec |
int elt = (dev->spriteInfo->anim.elt + 1) % ac->nelt;
|
|
|
28a1ec |
DisplayCursorProcPtr DisplayCursor = pScreen->DisplayCursor;
|
|
|
28a1ec |
|
|
|
28a1ec |
@@ -148,6 +148,7 @@ AnimCurTimerNotify(OsTimerPtr timer, CARD32 now, void *arg)
|
|
|
28a1ec |
|
|
|
28a1ec |
dev->spriteInfo->anim.elt = elt;
|
|
|
28a1ec |
dev->spriteInfo->anim.time = now + ac->elts[elt].delay;
|
|
|
28a1ec |
+ dev->spriteInfo->anim.pCursor = ac->elts[elt].pCursor;
|
|
|
28a1ec |
|
|
|
28a1ec |
return ac->elts[elt].delay;
|
|
|
28a1ec |
}
|
|
|
28a1ec |
@@ -155,7 +156,7 @@ AnimCurTimerNotify(OsTimerPtr timer, CARD32 now, void *arg)
|
|
|
28a1ec |
static void
|
|
|
28a1ec |
AnimCurCancelTimer(DeviceIntPtr pDev)
|
|
|
28a1ec |
{
|
|
|
28a1ec |
- CursorPtr cur = pDev->spriteInfo->anim.pCursor;
|
|
|
28a1ec |
+ CursorPtr cur = pDev->spriteInfo->sprite->current;
|
|
|
28a1ec |
|
|
|
28a1ec |
if (IsAnimCur(cur))
|
|
|
28a1ec |
TimerCancel(GetAnimCur(cur)->timer);
|
|
|
28a1ec |
@@ -172,7 +173,7 @@ AnimCurDisplayCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor)
|
|
|
28a1ec |
|
|
|
28a1ec |
Unwrap(as, pScreen, DisplayCursor);
|
|
|
28a1ec |
if (IsAnimCur(pCursor)) {
|
|
|
28a1ec |
- if (pCursor != pDev->spriteInfo->anim.pCursor) {
|
|
|
28a1ec |
+ if (pCursor != pDev->spriteInfo->sprite->current) {
|
|
|
28a1ec |
AnimCurPtr ac = GetAnimCur(pCursor);
|
|
|
28a1ec |
|
|
|
28a1ec |
AnimCurCancelTimer(pDev);
|
|
|
28a1ec |
diff --git a/xfixes/cursor.c b/xfixes/cursor.c
|
|
|
28a1ec |
index a150f450b..a1fbd562e 100644
|
|
|
28a1ec |
--- a/xfixes/cursor.c
|
|
|
28a1ec |
+++ b/xfixes/cursor.c
|
|
|
28a1ec |
@@ -134,8 +134,11 @@ Bool EnableCursor = TRUE;
|
|
|
28a1ec |
static CursorPtr
|
|
|
28a1ec |
CursorForDevice(DeviceIntPtr pDev)
|
|
|
28a1ec |
{
|
|
|
28a1ec |
- if (pDev && pDev->spriteInfo && pDev->spriteInfo->sprite)
|
|
|
28a1ec |
+ if (pDev && pDev->spriteInfo && pDev->spriteInfo->sprite) {
|
|
|
28a1ec |
+ if (pDev->spriteInfo->anim.pCursor)
|
|
|
28a1ec |
+ return pDev->spriteInfo->anim.pCursor;
|
|
|
28a1ec |
return pDev->spriteInfo->sprite->current;
|
|
|
28a1ec |
+ }
|
|
|
28a1ec |
|
|
|
28a1ec |
return NULL;
|
|
|
28a1ec |
}
|
|
|
28a1ec |
--
|
|
|
28a1ec |
2.14.3
|