diff options
Diffstat (limited to 'exa')
-rw-r--r-- | exa/exa.c | 4 | ||||
-rw-r--r-- | exa/exa_priv.h | 12 |
2 files changed, 12 insertions, 4 deletions
@@ -620,8 +620,8 @@ exaCreateGC(GCPtr pGC) swap(pExaScr, pScreen, CreateGC); if ((ret = (*pScreen->CreateGC) (pGC))) { - wrap(pExaGC, pGC, funcs, (GCFuncs *) &exaGCFuncs); - wrap(pExaGC, pGC, ops, (GCOps *) &exaOps); + wrap(pExaGC, pGC, funcs, &exaGCFuncs); + wrap(pExaGC, pGC, ops, &exaOps); } swap(pExaScr, pScreen, CreateGC); diff --git a/exa/exa_priv.h b/exa/exa_priv.h index 1f5605687..aba3934fa 100644 --- a/exa/exa_priv.h +++ b/exa/exa_priv.h @@ -248,11 +248,19 @@ extern DevPrivateKeyRec exaScreenPrivateKeyRec; real->mem = priv->Saved##mem; \ } +#ifdef HAVE_TYPEOF +#define swap(priv, real, mem) {\ + typeof(real->mem) tmp = priv->Saved##mem; \ + priv->Saved##mem = real->mem; \ + real->mem = tmp; \ +} +#else #define swap(priv, real, mem) {\ void *tmp = priv->Saved##mem; \ priv->Saved##mem = real->mem; \ real->mem = tmp; \ } +#endif #define EXA_PRE_FALLBACK(_screen_) \ ExaScreenPriv(_screen_); \ @@ -333,8 +341,8 @@ typedef struct { typedef struct { /* GC values from the layer below. */ - GCOps *Savedops; - GCFuncs *Savedfuncs; + const GCOps *Savedops; + const GCFuncs *Savedfuncs; } ExaGCPrivRec, *ExaGCPrivPtr; typedef struct { |