animcur: Use fixed-size screen private

Reviewed-by: Robert Morell <rmorell@nvidia.com>
Tested-by: Robert Morell <rmorell@nvidia.com>
Signed-off-by: Adam Jackson <ajax@redhat.com>
This commit is contained in:
Adam Jackson 2017-10-26 13:40:57 -04:00
parent f615cb62d4
commit 3abbdb7318

View File

@ -77,12 +77,9 @@ static CursorBits animCursorBits = {
static DevPrivateKeyRec AnimCurScreenPrivateKeyRec; static DevPrivateKeyRec AnimCurScreenPrivateKeyRec;
#define AnimCurScreenPrivateKey (&AnimCurScreenPrivateKeyRec)
#define IsAnimCur(c) ((c) && ((c)->bits == &animCursorBits)) #define IsAnimCur(c) ((c) && ((c)->bits == &animCursorBits))
#define GetAnimCur(c) ((AnimCurPtr) ((((char *)(c) + CURSOR_REC_SIZE)))) #define GetAnimCur(c) ((AnimCurPtr) ((((char *)(c) + CURSOR_REC_SIZE))))
#define GetAnimCurScreen(s) ((AnimCurScreenPtr)dixLookupPrivate(&(s)->devPrivates, AnimCurScreenPrivateKey)) #define GetAnimCurScreen(s) ((AnimCurScreenPtr)dixLookupPrivate(&(s)->devPrivates, &AnimCurScreenPrivateKeyRec))
#define SetAnimCurScreen(s,p) dixSetPrivate(&(s)->devPrivates, AnimCurScreenPrivateKey, p)
#define Wrap(as,s,elt,func) (((as)->elt = (s)->elt), (s)->elt = func) #define Wrap(as,s,elt,func) (((as)->elt = (s)->elt), (s)->elt = func)
#define Unwrap(as,s,elt) ((s)->elt = (as)->elt) #define Unwrap(as,s,elt) ((s)->elt = (as)->elt)
@ -101,9 +98,7 @@ AnimCurCloseScreen(ScreenPtr pScreen)
Unwrap(as, pScreen, RealizeCursor); Unwrap(as, pScreen, RealizeCursor);
Unwrap(as, pScreen, UnrealizeCursor); Unwrap(as, pScreen, UnrealizeCursor);
Unwrap(as, pScreen, RecolorCursor); Unwrap(as, pScreen, RecolorCursor);
SetAnimCurScreen(pScreen, 0);
ret = (*pScreen->CloseScreen) (pScreen); ret = (*pScreen->CloseScreen) (pScreen);
free(as);
return ret; return ret;
} }
@ -308,15 +303,13 @@ AnimCurInit(ScreenPtr pScreen)
{ {
AnimCurScreenPtr as; AnimCurScreenPtr as;
if (!dixRegisterPrivateKey(&AnimCurScreenPrivateKeyRec, PRIVATE_SCREEN, 0)) if (!dixRegisterPrivateKey(&AnimCurScreenPrivateKeyRec, PRIVATE_SCREEN,
sizeof(AnimCurScreenRec)))
return FALSE; return FALSE;
as = (AnimCurScreenPtr) malloc(sizeof(AnimCurScreenRec)); as = GetAnimCurScreen(pScreen);
if (!as)
return FALSE;
as->timer = TimerSet(NULL, TimerAbsolute, 0, AnimCurTimerNotify, pScreen); as->timer = TimerSet(NULL, TimerAbsolute, 0, AnimCurTimerNotify, pScreen);
if (!as->timer) { if (!as->timer) {
free(as);
return FALSE; return FALSE;
} }
as->timer_set = FALSE; as->timer_set = FALSE;
@ -329,7 +322,6 @@ AnimCurInit(ScreenPtr pScreen)
Wrap(as, pScreen, RealizeCursor, AnimCurRealizeCursor); Wrap(as, pScreen, RealizeCursor, AnimCurRealizeCursor);
Wrap(as, pScreen, UnrealizeCursor, AnimCurUnrealizeCursor); Wrap(as, pScreen, UnrealizeCursor, AnimCurUnrealizeCursor);
Wrap(as, pScreen, RecolorCursor, AnimCurRecolorCursor); Wrap(as, pScreen, RecolorCursor, AnimCurRecolorCursor);
SetAnimCurScreen(pScreen, as);
return TRUE; return TRUE;
} }