/* ** Free a context. */ GLboolean __glXFreeContext(__GLXcontext * cx) { if (cx->idExists || cx->isCurrent) return GL_FALSE; free(cx->feedbackBuf); free(cx->selectBuf); free(cx->real_ids); free(cx->real_vids); if (cx->pGlxPixmap) { /* ** The previous drawable was a glx pixmap, release it. */ cx->pGlxPixmap->refcnt--; __glXFreeGLXPixmap(cx->pGlxPixmap); cx->pGlxPixmap = 0; } if (cx->pGlxReadPixmap) { /* ** The previous drawable was a glx pixmap, release it. */ cx->pGlxReadPixmap->refcnt--; __glXFreeGLXPixmap(cx->pGlxReadPixmap); cx->pGlxReadPixmap = 0; } if (cx->pGlxWindow) { /* ** The previous drawable was a glx window, release it. */ cx->pGlxWindow->refcnt--; __glXFreeGLXWindow(cx->pGlxWindow); cx->pGlxWindow = 0; } if (cx->pGlxReadWindow) { /* ** The previous drawable was a glx window, release it. */ cx->pGlxReadWindow->refcnt--; __glXFreeGLXWindow(cx->pGlxReadWindow); cx->pGlxReadWindow = 0; } free(cx); if (cx == __glXLastContext) { __glXFlushContextCache(); } return GL_TRUE; }
static int PixmapGone(__GLXpixmap *pGlxPixmap, XID id) { pGlxPixmap->idExists = False; __glXFreeGLXPixmap( pGlxPixmap ); return True; }