exa: add GC private

This commit is contained in:
Maarten Maathuis 2009-01-31 16:30:31 +01:00
parent 5cc67ae94c
commit 5e6a06fe69
2 changed files with 22 additions and 1 deletions

View File

@ -41,6 +41,8 @@ static int exaScreenPrivateKeyIndex;
DevPrivateKey exaScreenPrivateKey = &exaScreenPrivateKeyIndex;
static int exaPixmapPrivateKeyIndex;
DevPrivateKey exaPixmapPrivateKey = &exaPixmapPrivateKeyIndex;
static int exaGCPrivateKeyIndex;
DevPrivateKey exaGCPrivateKey = &exaGCPrivateKeyIndex;
#ifdef MITSHM
static ShmFuncs exaShmFuncs = { NULL, NULL };
@ -661,6 +663,8 @@ static GCFuncs exaGCFuncs = {
static int
exaCreateGC (GCPtr pGC)
{
ExaGCPriv(pGC);
if (!fbCreateGC (pGC))
return FALSE;
@ -890,6 +894,13 @@ exaDriverInit (ScreenPtr pScreen,
exaDDXDriverInit(pScreen);
if (!dixRequestPrivate(exaGCPrivateKey, sizeof(ExaGCPrivRec))) {
LogMessage(X_WARNING,
"EXA(%d): Failed to allocate GC private\n",
pScreen->myNum);
return FALSE;
}
/*
* Replace various fb screen functions
*/

View File

@ -173,9 +173,13 @@ typedef struct {
extern DevPrivateKey exaScreenPrivateKey;
extern DevPrivateKey exaPixmapPrivateKey;
extern DevPrivateKey exaGCPrivateKey;
#define ExaGetScreenPriv(s) ((ExaScreenPrivPtr)dixLookupPrivate(&(s)->devPrivates, exaScreenPrivateKey))
#define ExaScreenPriv(s) ExaScreenPrivPtr pExaScr = ExaGetScreenPriv(s)
#define ExaGetGCPriv(gc) ((ExaGCPrivPtr)dixLookupPrivate(&(gc)->devPrivates, exaGCPrivateKey))
#define ExaGCPriv(gc) ExaGCPrivPtr pExaGC = ExaGetGCPriv(gc)
/** Align an offset to an arbitrary alignment */
#define EXA_ALIGN(offset, align) (((offset) + (align) - 1) - \
(((offset) + (align) - 1) % (align)))
@ -236,7 +240,13 @@ typedef struct {
*/
void *driverPriv;
} ExaPixmapPrivRec, *ExaPixmapPrivPtr;
typedef struct {
/* GC values from the layer below. */
GCOps *ops;
GCFuncs *funcs;
} ExaGCPrivRec, *ExaGCPrivPtr;
typedef struct _ExaMigrationRec {
Bool as_dst;
Bool as_src;