Use screen-specific privates for exa pixmap and gc privates
Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
7ca32f1c28
commit
7651176b00
10
exa/exa.c
10
exa/exa.c
|
@ -38,8 +38,6 @@
|
|||
#include "exa.h"
|
||||
|
||||
DevPrivateKeyRec exaScreenPrivateKeyRec;
|
||||
DevPrivateKeyRec exaPixmapPrivateKeyRec;
|
||||
DevPrivateKeyRec exaGCPrivateKeyRec;
|
||||
|
||||
#ifdef MITSHM
|
||||
static ShmFuncs exaShmFuncs = { NULL, NULL };
|
||||
|
@ -915,8 +913,8 @@ exaDriverInit(ScreenPtr pScreen, ExaDriverPtr pScreenInfo)
|
|||
|
||||
exaDDXDriverInit(pScreen);
|
||||
|
||||
if (!dixRegisterPrivateKey
|
||||
(&exaGCPrivateKeyRec, PRIVATE_GC, sizeof(ExaGCPrivRec))) {
|
||||
if (!dixRegisterScreenSpecificPrivateKey
|
||||
(pScreen, &pExaScr->gcPrivateKeyRec, PRIVATE_GC, sizeof(ExaGCPrivRec))) {
|
||||
LogMessage(X_WARNING, "EXA(%d): Failed to allocate GC private\n",
|
||||
pScreen->myNum);
|
||||
return FALSE;
|
||||
|
@ -964,8 +962,8 @@ exaDriverInit(ScreenPtr pScreen, ExaDriverPtr pScreenInfo)
|
|||
* Hookup offscreen pixmaps
|
||||
*/
|
||||
if (pExaScr->info->flags & EXA_OFFSCREEN_PIXMAPS) {
|
||||
if (!dixRegisterPrivateKey
|
||||
(&exaPixmapPrivateKeyRec, PRIVATE_PIXMAP,
|
||||
if (!dixRegisterScreenSpecificPrivateKey
|
||||
(pScreen, &pExaScr->pixmapPrivateKeyRec, PRIVATE_PIXMAP,
|
||||
sizeof(ExaPixmapPrivRec))) {
|
||||
LogMessage(X_WARNING,
|
||||
"EXA(%d): Failed to allocate pixmap private\n",
|
||||
|
|
|
@ -208,6 +208,8 @@ typedef struct {
|
|||
RegionRec maskReg;
|
||||
PixmapPtr srcPix;
|
||||
|
||||
DevPrivateKeyRec pixmapPrivateKeyRec;
|
||||
DevPrivateKeyRec gcPrivateKeyRec;
|
||||
} ExaScreenPrivRec, *ExaScreenPrivPtr;
|
||||
|
||||
/*
|
||||
|
@ -225,17 +227,11 @@ typedef struct {
|
|||
extern DevPrivateKeyRec exaScreenPrivateKeyRec;
|
||||
|
||||
#define exaScreenPrivateKey (&exaScreenPrivateKeyRec)
|
||||
extern DevPrivateKeyRec exaPixmapPrivateKeyRec;
|
||||
|
||||
#define exaPixmapPrivateKey (&exaPixmapPrivateKeyRec)
|
||||
extern DevPrivateKeyRec exaGCPrivateKeyRec;
|
||||
|
||||
#define exaGCPrivateKey (&exaGCPrivateKeyRec)
|
||||
|
||||
#define ExaGetScreenPriv(s) ((ExaScreenPrivPtr)dixGetPrivate(&(s)->devPrivates, exaScreenPrivateKey))
|
||||
#define ExaScreenPriv(s) ExaScreenPrivPtr pExaScr = ExaGetScreenPriv(s)
|
||||
|
||||
#define ExaGetGCPriv(gc) ((ExaGCPrivPtr)dixGetPrivateAddr(&(gc)->devPrivates, exaGCPrivateKey))
|
||||
#define ExaGetGCPriv(gc) ((ExaGCPrivPtr)dixGetPrivateAddr(&(gc)->devPrivates, &ExaGetScreenPriv(gc->pScreen)->gcPrivateKeyRec))
|
||||
#define ExaGCPriv(gc) ExaGCPrivPtr pExaGC = ExaGetGCPriv(gc)
|
||||
|
||||
/*
|
||||
|
@ -286,7 +282,7 @@ extern DevPrivateKeyRec exaGCPrivateKeyRec;
|
|||
#define EXA_PIXMAP_SCORE_PINNED 1000
|
||||
#define EXA_PIXMAP_SCORE_INIT 1001
|
||||
|
||||
#define ExaGetPixmapPriv(p) ((ExaPixmapPrivPtr)dixGetPrivateAddr(&(p)->devPrivates, exaPixmapPrivateKey))
|
||||
#define ExaGetPixmapPriv(p) ((ExaPixmapPrivPtr)dixGetPrivateAddr(&(p)->devPrivates, &ExaGetScreenPriv((p)->drawable.pScreen)->pixmapPrivateKeyRec))
|
||||
#define ExaPixmapPriv(p) ExaPixmapPrivPtr pExaPixmap = ExaGetPixmapPriv(p)
|
||||
|
||||
#define EXA_RANGE_PITCH (1 << 0)
|
||||
|
|
Loading…
Reference in New Issue