static __DRIdrawable *__driFindDrawable(void *drawHash, __DRIid draw)
{
int retcode;
- __DRIdrawable *pdraw;
+ union
+ {
+ __DRIdrawable *pdraw;
+ void *ptr;
+ } p;
- retcode = drmHashLookup(drawHash, draw, (void **)&pdraw);
+ retcode = drmHashLookup(drawHash, draw, &p.ptr);
if (retcode)
return NULL;
- return pdraw;
+ return p.pdraw;
}
static void __driRemoveDrawable(void *drawHash, __DRIdrawable *pdraw)
{
int retcode;
- __DRIdrawablePrivate *pdp = (__DRIdrawablePrivate *)pdraw->private;
+ union
+ {
+ __DRIdrawablePrivate *pdp;
+ void *ptr;
+ } p;
- retcode = drmHashLookup(drawHash, pdp->draw, (void **)&pdraw);
+ p.pdp = (__DRIdrawablePrivate *)pdraw->private;
+
+ retcode = drmHashLookup(drawHash, p.pdp->draw, &p.ptr);
if (!retcode) { /* Found */
- drmHashDelete(drawHash, pdp->draw);
+ drmHashDelete(drawHash, p.pdp->draw);
}
}
static void __driGarbageCollectDrawables(void *drawHash)
{
__DRIid draw;
- __DRIdrawable *pdraw;
__DRInativeDisplay *dpy;
+ union
+ {
+ __DRIdrawable *pdraw;
+ void *ptr;
+ } p;
- if (drmHashFirst(drawHash, &draw, (void **)&pdraw)) {
+ if (drmHashFirst(drawHash, &draw, &p.ptr)) {
do {
- __DRIdrawablePrivate *pdp = (__DRIdrawablePrivate *)pdraw->private;
+ __DRIdrawablePrivate *pdp = (__DRIdrawablePrivate *)p.pdraw->private;
dpy = pdp->driScreenPriv->display;
if (! (*window_exists)(dpy, draw)) {
/* Destroy the local drawable data in the hash table, if the
drawable no longer exists in the Xserver */
- __driRemoveDrawable(drawHash, pdraw);
- (*pdraw->destroyDrawable)(dpy, pdraw->private);
- _mesa_free(pdraw);
+ __driRemoveDrawable(drawHash, p.pdraw);
+ (*p.pdraw->destroyDrawable)(dpy, p.pdraw->private);
+ _mesa_free(p.pdraw);
}
- } while (drmHashNext(drawHash, &draw, (void **)&pdraw));
+ } while (drmHashNext(drawHash, &draw, &p.ptr));
}
}
_mesa_free(pdp);
return NULL;
#else
- pdp->getInfo = XF86DRIGetDrawableInfo;
+ pdp->getInfo = (PFNGLXGETDRAWABLEINFOPROC) XF86DRIGetDrawableInfo;
#endif /* DRI_NEW_INTERFACE_ONLY */
}
pctx->bindContext3 = driBindContext3;
pctx->unbindContext3 = driUnbindContext3;
#else
- pctx->bindContext = driBindContext;
- pctx->unbindContext = driUnbindContext;
+ pctx->bindContext = (void *)driBindContext;
+ pctx->unbindContext = (void *)driUnbindContext;
if ( driCompareGLXAPIVersion( 20030606 ) >= 0 ) {
- pctx->bindContext2 = driBindContext2;
- pctx->unbindContext2 = driUnbindContext2;
+ pctx->bindContext2 = (void *)driBindContext2;
+ pctx->unbindContext2 = (void *)driUnbindContext2;
}
if ( driCompareGLXAPIVersion( 20040415 ) >= 0 ) {
- pctx->bindContext3 = driBindContext3;
- pctx->unbindContext3 = driUnbindContext3;
+ pctx->bindContext3 = (void *)driBindContext3;
+ pctx->unbindContext3 = (void *)driUnbindContext3;
}
#endif