Replace miSpriteCursorFuncRec with direct calls to midispcur.c.

Nobody wraps the mi software-cursor sprite rendering implementations.

Signed-off-by: Jamey Sharp <jamey@minilop.net>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Jamey Sharp 2010-05-18 16:48:08 -07:00
parent 673eb707ce
commit 936b09f2a3
3 changed files with 53 additions and 161 deletions

View File

@ -97,44 +97,6 @@ typedef struct {
#endif #endif
} miDCCursorRec, *miDCCursorPtr; } miDCCursorRec, *miDCCursorPtr;
/*
* sprite/cursor method table
*/
static Bool miDCRealizeCursor(ScreenPtr pScreen, CursorPtr pCursor);
static Bool miDCUnrealizeCursor(ScreenPtr pScreen, CursorPtr pCursor);
static Bool miDCPutUpCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
CursorPtr pCursor, int x, int y,
unsigned long source, unsigned long mask);
static Bool miDCSaveUnderCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
int x, int y,
int w, int h);
static Bool miDCRestoreUnderCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
int x, int y,
int w, int h);
static Bool miDCMoveCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
CursorPtr pCursor, int x, int y,
int w, int h, int dx, int dy,
unsigned long source, unsigned long mask);
static Bool miDCChangeSave(DeviceIntPtr pDev, ScreenPtr pScreen,
int x, int y, int w, int h,
int dx, int dy);
static Bool miDCDeviceInitialize(DeviceIntPtr pDev, ScreenPtr pScreen);
static void miDCDeviceCleanup(DeviceIntPtr pDev, ScreenPtr pScreen);
static miSpriteCursorFuncRec miDCFuncs = {
miDCRealizeCursor,
miDCUnrealizeCursor,
miDCPutUpCursor,
miDCSaveUnderCursor,
miDCRestoreUnderCursor,
miDCMoveCursor,
miDCChangeSave,
miDCDeviceInitialize,
miDCDeviceCleanup
};
Bool Bool
miDCInitialize (ScreenPtr pScreen, miPointerScreenFuncPtr screenFuncs) miDCInitialize (ScreenPtr pScreen, miPointerScreenFuncPtr screenFuncs)
{ {
@ -150,7 +112,7 @@ miDCInitialize (ScreenPtr pScreen, miPointerScreenFuncPtr screenFuncs)
dixSetPrivate(&pScreen->devPrivates, miDCScreenKey, pScreenPriv); dixSetPrivate(&pScreen->devPrivates, miDCScreenKey, pScreenPriv);
if (!miSpriteInitialize (pScreen, &miDCFuncs, screenFuncs)) if (!miSpriteInitialize (pScreen, screenFuncs))
{ {
free((pointer) pScreenPriv); free((pointer) pScreenPriv);
return FALSE; return FALSE;
@ -170,7 +132,7 @@ miDCCloseScreen (int index, ScreenPtr pScreen)
return (*pScreen->CloseScreen) (index, pScreen); return (*pScreen->CloseScreen) (index, pScreen);
} }
static Bool Bool
miDCRealizeCursor (ScreenPtr pScreen, CursorPtr pCursor) miDCRealizeCursor (ScreenPtr pScreen, CursorPtr pCursor)
{ {
if (pCursor->bits->refcnt <= 1) if (pCursor->bits->refcnt <= 1)
@ -329,7 +291,7 @@ miDCRealize (ScreenPtr pScreen, CursorPtr pCursor)
return pPriv; return pPriv;
} }
static Bool Bool
miDCUnrealizeCursor (ScreenPtr pScreen, CursorPtr pCursor) miDCUnrealizeCursor (ScreenPtr pScreen, CursorPtr pCursor)
{ {
miDCCursorPtr pPriv; miDCCursorPtr pPriv;
@ -426,7 +388,7 @@ miDCMakeGC(WindowPtr pWin)
} }
static Bool Bool
miDCPutUpCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor, miDCPutUpCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor,
int x, int y, unsigned long source, unsigned long mask) int x, int y, unsigned long source, unsigned long mask)
{ {
@ -471,7 +433,7 @@ miDCPutUpCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor,
return TRUE; return TRUE;
} }
static Bool Bool
miDCSaveUnderCursor (DeviceIntPtr pDev, ScreenPtr pScreen, miDCSaveUnderCursor (DeviceIntPtr pDev, ScreenPtr pScreen,
int x, int y, int w, int h) int x, int y, int w, int h)
{ {
@ -505,7 +467,7 @@ miDCSaveUnderCursor (DeviceIntPtr pDev, ScreenPtr pScreen,
return TRUE; return TRUE;
} }
static Bool Bool
miDCRestoreUnderCursor (DeviceIntPtr pDev, ScreenPtr pScreen, miDCRestoreUnderCursor (DeviceIntPtr pDev, ScreenPtr pScreen,
int x, int y, int w, int h) int x, int y, int w, int h)
{ {
@ -532,7 +494,7 @@ miDCRestoreUnderCursor (DeviceIntPtr pDev, ScreenPtr pScreen,
return TRUE; return TRUE;
} }
static Bool Bool
miDCChangeSave (DeviceIntPtr pDev, ScreenPtr pScreen, miDCChangeSave (DeviceIntPtr pDev, ScreenPtr pScreen,
int x, int y, int w, int h, int dx, int dy) int x, int y, int w, int h, int dx, int dy)
{ {
@ -665,7 +627,7 @@ miDCChangeSave (DeviceIntPtr pDev, ScreenPtr pScreen,
return TRUE; return TRUE;
} }
static Bool Bool
miDCMoveCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor, miDCMoveCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor,
int x, int y, int w, int h, int dx, int dy, int x, int y, int w, int h, int dx, int dy,
unsigned long source, unsigned long mask) unsigned long source, unsigned long mask)
@ -764,7 +726,7 @@ miDCMoveCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor,
return TRUE; return TRUE;
} }
static Bool Bool
miDCDeviceInitialize(DeviceIntPtr pDev, ScreenPtr pScreen) miDCDeviceInitialize(DeviceIntPtr pDev, ScreenPtr pScreen)
{ {
miDCBufferPtr pBuffer; miDCBufferPtr pBuffer;
@ -839,7 +801,7 @@ failure:
return FALSE; return FALSE;
} }
static void void
miDCDeviceCleanup(DeviceIntPtr pDev, ScreenPtr pScreen) miDCDeviceCleanup(DeviceIntPtr pDev, ScreenPtr pScreen)
{ {
miDCBufferPtr pBuffer; miDCBufferPtr pBuffer;

View File

@ -94,7 +94,6 @@ typedef struct {
ColormapPtr pInstalledMap; ColormapPtr pInstalledMap;
ColormapPtr pColormap; ColormapPtr pColormap;
VisualPtr pVisual; VisualPtr pVisual;
miSpriteCursorFuncPtr funcs;
DamagePtr pDamage; /* damage tracking structure */ DamagePtr pDamage; /* damage tracking structure */
Bool damageRegistered; Bool damageRegistered;
} miSpriteScreenRec, *miSpriteScreenPtr; } miSpriteScreenRec, *miSpriteScreenPtr;
@ -289,7 +288,6 @@ miSpriteReportDamage (DamagePtr pDamage, RegionPtr pRegion, void *closure)
Bool Bool
miSpriteInitialize (ScreenPtr pScreen, miSpriteInitialize (ScreenPtr pScreen,
miSpriteCursorFuncPtr cursorFuncs,
miPointerScreenFuncPtr screenFuncs) miPointerScreenFuncPtr screenFuncs)
{ {
miSpriteScreenPtr pScreenPriv; miSpriteScreenPtr pScreenPriv;
@ -336,7 +334,6 @@ miSpriteInitialize (ScreenPtr pScreen,
pScreenPriv->pInstalledMap = NULL; pScreenPriv->pInstalledMap = NULL;
pScreenPriv->pColormap = NULL; pScreenPriv->pColormap = NULL;
pScreenPriv->funcs = cursorFuncs;
pScreenPriv->colors[SOURCE_COLOR].red = 0; pScreenPriv->colors[SOURCE_COLOR].red = 0;
pScreenPriv->colors[SOURCE_COLOR].green = 0; pScreenPriv->colors[SOURCE_COLOR].green = 0;
pScreenPriv->colors[SOURCE_COLOR].blue = 0; pScreenPriv->colors[SOURCE_COLOR].blue = 0;
@ -760,10 +757,8 @@ miSpriteFindColors (miCursorInfoPtr pDevCursor, ScreenPtr pScreen)
static Bool static Bool
miSpriteRealizeCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor) miSpriteRealizeCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor)
{ {
miSpriteScreenPtr pScreenPriv;
miCursorInfoPtr pCursorInfo; miCursorInfoPtr pCursorInfo;
pScreenPriv = dixLookupPrivate(&pScreen->devPrivates, miSpriteScreenKey);
if (!IsMaster(pDev) && !pDev->u.master) if (!IsMaster(pDev) && !pDev->u.master)
return FALSE; return FALSE;
@ -772,27 +767,21 @@ miSpriteRealizeCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor)
if (pCursor == pCursorInfo->pCursor) if (pCursor == pCursorInfo->pCursor)
pCursorInfo->checkPixels = TRUE; pCursorInfo->checkPixels = TRUE;
return (*pScreenPriv->funcs->RealizeCursor) (pScreen, pCursor); return miDCRealizeCursor(pScreen, pCursor);
} }
static Bool static Bool
miSpriteUnrealizeCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor) miSpriteUnrealizeCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor)
{ {
miSpriteScreenPtr pScreenPriv; return miDCUnrealizeCursor(pScreen, pCursor);
pScreenPriv = dixLookupPrivate(&pScreen->devPrivates, miSpriteScreenKey);
return (*pScreenPriv->funcs->UnrealizeCursor) (pScreen, pCursor);
} }
static void static void
miSpriteSetCursor (DeviceIntPtr pDev, ScreenPtr pScreen, miSpriteSetCursor (DeviceIntPtr pDev, ScreenPtr pScreen,
CursorPtr pCursor, int x, int y) CursorPtr pCursor, int x, int y)
{ {
miSpriteScreenPtr pScreenPriv;
miCursorInfoPtr pPointer; miCursorInfoPtr pPointer;
pScreenPriv = dixLookupPrivate(&pScreen->devPrivates, miSpriteScreenKey);
if (!IsMaster(pDev) && !pDev->u.master) if (!IsMaster(pDev) && !pDev->u.master)
return; return;
@ -861,7 +850,7 @@ miSpriteSetCursor (DeviceIntPtr pDev, ScreenPtr pScreen,
pointer->saved.y1 -= dy; pointer->saved.y1 -= dy;
pointer->saved.x2 -= dx; pointer->saved.x2 -= dx;
pointer->saved.y2 -= dy; pointer->saved.y2 -= dy;
(void) (*pScreenPriv->funcs->ChangeSave) (pScreen, (void) miDCChangeSave(pScreen,
pointer->saved.x1, pointer->saved.x1,
pointer->saved.y1, pointer->saved.y1,
pointer->saved.x2 - pointer->saved.x2 -
@ -870,7 +859,7 @@ miSpriteSetCursor (DeviceIntPtr pDev, ScreenPtr pScreen,
pointer->saved.y1, pointer->saved.y1,
dx, dy); dx, dy);
} }
(void) (*pScreenPriv->funcs->MoveCursor) (pScreen, pCursor, (void) miDCMoveCursor(pScreen, pCursor,
pointer->saved.x1, pointer->saved.x1,
pointer->saved.y1, pointer->saved.y1,
pointer->saved.x2 - pointer->saved.x2 -
@ -920,12 +909,9 @@ miSpriteMoveCursor (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y)
static Bool static Bool
miSpriteDeviceCursorInitialize(DeviceIntPtr pDev, ScreenPtr pScreen) miSpriteDeviceCursorInitialize(DeviceIntPtr pDev, ScreenPtr pScreen)
{ {
miSpriteScreenPtr pScreenPriv;
miCursorInfoPtr pCursorInfo; miCursorInfoPtr pCursorInfo;
int ret = FALSE; int ret = FALSE;
pScreenPriv = dixLookupPrivate(&pScreen->devPrivates, miSpriteScreenKey);
pCursorInfo = malloc(sizeof(miCursorInfoRec)); pCursorInfo = malloc(sizeof(miCursorInfoRec));
if (!pCursorInfo) if (!pCursorInfo)
return FALSE; return FALSE;
@ -940,7 +926,7 @@ miSpriteDeviceCursorInitialize(DeviceIntPtr pDev, ScreenPtr pScreen)
pCursorInfo->checkPixels = TRUE; pCursorInfo->checkPixels = TRUE;
pCursorInfo->pScreen = FALSE; pCursorInfo->pScreen = FALSE;
ret = (*pScreenPriv->funcs->DeviceCursorInitialize)(pDev, pScreen); ret = miDCDeviceInitialize(pDev, pScreen);
if (!ret) if (!ret)
{ {
free(pCursorInfo); free(pCursorInfo);
@ -954,13 +940,7 @@ static void
miSpriteDeviceCursorCleanup(DeviceIntPtr pDev, ScreenPtr pScreen) miSpriteDeviceCursorCleanup(DeviceIntPtr pDev, ScreenPtr pScreen)
{ {
if (DevHasCursor(pDev)) if (DevHasCursor(pDev))
{ miDCDeviceCleanup(pDev, pScreen);
miSpriteScreenPtr pScreenPriv;
pScreenPriv = dixLookupPrivate(&pScreen->devPrivates,
miSpriteScreenKey);
(*pScreenPriv->funcs->DeviceCursorCleanup)(pDev, pScreen);
}
} }
/* /*
@ -984,16 +964,16 @@ miSpriteRemoveCursor (DeviceIntPtr pDev, ScreenPtr pScreen)
miSpriteIsDown(pCursorInfo); miSpriteIsDown(pCursorInfo);
pCursorInfo->pCacheWin = NullWindow; pCursorInfo->pCacheWin = NullWindow;
miSpriteDisableDamage(pScreen, pScreenPriv); miSpriteDisableDamage(pScreen, pScreenPriv);
if (!(*pScreenPriv->funcs->RestoreUnderCursor) (pDev, if (!miDCRestoreUnderCursor(pDev,
pScreen, pScreen,
pCursorInfo->saved.x1, pCursorInfo->saved.x1,
pCursorInfo->saved.y1, pCursorInfo->saved.y1,
pCursorInfo->saved.x2 - pCursorInfo->saved.x2 -
pCursorInfo->saved.x1, pCursorInfo->saved.x1,
pCursorInfo->saved.y2 - pCursorInfo->saved.y2 -
pCursorInfo->saved.y1)) pCursorInfo->saved.y1))
{ {
miSpriteIsUp(pCursorInfo); miSpriteIsUp(pCursorInfo);
} }
miSpriteEnableDamage(pScreen, pScreenPriv); miSpriteEnableDamage(pScreen, pScreenPriv);
DamageDrawInternal (pScreen, FALSE); DamageDrawInternal (pScreen, FALSE);
@ -1026,14 +1006,14 @@ miSpriteSaveUnderCursor(DeviceIntPtr pDev, ScreenPtr pScreen)
y = pCursorInfo->y - (int)pCursor->bits->yhot; y = pCursorInfo->y - (int)pCursor->bits->yhot;
miSpriteDisableDamage(pScreen, pScreenPriv); miSpriteDisableDamage(pScreen, pScreenPriv);
(*pScreenPriv->funcs->SaveUnderCursor) (pDev, miDCSaveUnderCursor(pDev,
pScreen, pScreen,
pCursorInfo->saved.x1, pCursorInfo->saved.x1,
pCursorInfo->saved.y1, pCursorInfo->saved.y1,
pCursorInfo->saved.x2 - pCursorInfo->saved.x2 -
pCursorInfo->saved.x1, pCursorInfo->saved.x1,
pCursorInfo->saved.y2 - pCursorInfo->saved.y2 -
pCursorInfo->saved.y1); pCursorInfo->saved.y1);
SPRITE_DEBUG(("SaveUnderCursor %d\n", pDev->id)); SPRITE_DEBUG(("SaveUnderCursor %d\n", pDev->id));
miSpriteEnableDamage(pScreen, pScreenPriv); miSpriteEnableDamage(pScreen, pScreenPriv);
DamageDrawInternal (pScreen, FALSE); DamageDrawInternal (pScreen, FALSE);
@ -1069,7 +1049,7 @@ miSpriteRestoreCursor (DeviceIntPtr pDev, ScreenPtr pScreen)
SPRITE_DEBUG(("RestoreCursor %d\n", pDev->id)); SPRITE_DEBUG(("RestoreCursor %d\n", pDev->id));
if (pCursorInfo->checkPixels) if (pCursorInfo->checkPixels)
miSpriteFindColors (pCursorInfo, pScreen); miSpriteFindColors (pCursorInfo, pScreen);
if ((*pScreenPriv->funcs->PutUpCursor) (pDev, pScreen, if (miDCPutUpCursor(pDev, pScreen,
pCursor, x, y, pCursor, x, y,
pScreenPriv->colors[SOURCE_COLOR].pixel, pScreenPriv->colors[SOURCE_COLOR].pixel,
pScreenPriv->colors[MASK_COLOR].pixel)) pScreenPriv->colors[MASK_COLOR].pixel))

View File

@ -32,76 +32,26 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group. in this Software without prior written authorization from The Open Group.
*/ */
typedef struct {
Bool (*RealizeCursor)(
ScreenPtr /*pScreen*/,
CursorPtr /*pCursor*/
);
Bool (*UnrealizeCursor)(
ScreenPtr /*pScreen*/,
CursorPtr /*pCursor*/
);
Bool (*PutUpCursor)(
DeviceIntPtr /*pDev*/,
ScreenPtr /*pScreen*/,
CursorPtr /*pCursor*/,
int /*x*/,
int /*y*/,
unsigned long /*source*/,
unsigned long /*mask*/
);
Bool (*SaveUnderCursor)(
DeviceIntPtr /*pDev*/,
ScreenPtr /*pScreen*/,
int /*x*/,
int /*y*/,
int /*w*/,
int /*h*/
);
Bool (*RestoreUnderCursor)(
DeviceIntPtr /*pDev*/,
ScreenPtr /*pScreen*/,
int /*x*/,
int /*y*/,
int /*w*/,
int /*h*/
);
Bool (*MoveCursor)(
DeviceIntPtr /*pDev*/,
ScreenPtr /*pScreen*/,
CursorPtr /*pCursor*/,
int /*x*/,
int /*y*/,
int /*w*/,
int /*h*/,
int /*dx*/,
int /*dy*/,
unsigned long /*source*/,
unsigned long /*mask*/
);
Bool (*ChangeSave)(
DeviceIntPtr /*pDev*/,
ScreenPtr /*pScreen*/,
int /*x*/,
int /*y*/,
int /*w*/,
int /*h*/,
int /*dx*/,
int /*dy*/
);
Bool (*DeviceCursorInitialize)(
DeviceIntPtr /*pDev*/,
ScreenPtr /*pScreen*/
);
void (*DeviceCursorCleanup)(
DeviceIntPtr /*pDev*/,
ScreenPtr /*pScreen*/
);
} miSpriteCursorFuncRec, *miSpriteCursorFuncPtr;
extern Bool miSpriteInitialize( extern Bool miSpriteInitialize(
ScreenPtr /*pScreen*/, ScreenPtr /*pScreen*/,
miSpriteCursorFuncPtr /*cursorFuncs*/,
miPointerScreenFuncPtr /*screenFuncs*/ miPointerScreenFuncPtr /*screenFuncs*/
); );
extern Bool miDCRealizeCursor(ScreenPtr pScreen, CursorPtr pCursor);
extern Bool miDCUnrealizeCursor(ScreenPtr pScreen, CursorPtr pCursor);
extern Bool miDCPutUpCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
CursorPtr pCursor, int x, int y,
unsigned long source, unsigned long mask);
extern Bool miDCSaveUnderCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
int x, int y, int w, int h);
extern Bool miDCRestoreUnderCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
int x, int y, int w, int h);
extern Bool miDCMoveCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
CursorPtr pCursor, int x, int y,
int w, int h, int dx, int dy,
unsigned long source, unsigned long mask);
extern Bool miDCChangeSave(DeviceIntPtr pDev, ScreenPtr pScreen,
int x, int y, int w, int h,
int dx, int dy);
extern Bool miDCDeviceInitialize(DeviceIntPtr pDev, ScreenPtr pScreen);
extern void miDCDeviceCleanup(DeviceIntPtr pDev, ScreenPtr pScreen);