/** * Disposes all memory and resources allocated for the given OGLContext. */ static void GLXGC_DestroyOGLContext(OGLContext *oglc) { GLXCtxInfo *ctxinfo; J2dTraceLn(J2D_TRACE_INFO, "GLXGC_DestroyOGLContext"); if (oglc == NULL) { J2dRlsTraceLn(J2D_TRACE_ERROR, "GLXGC_DestroyOGLContext: context is null"); return; } // at this point, this context will be current to its scratch surface // so the following GL/GLX operations should be safe... OGLContext_DestroyContextResources(oglc); ctxinfo = (GLXCtxInfo *)oglc->ctxInfo; if (ctxinfo != NULL) { // release the current context before we continue j2d_glXMakeContextCurrent(awt_display, None, None, NULL); if (ctxinfo->context != 0) { j2d_glXDestroyContext(awt_display, ctxinfo->context); } if (ctxinfo->scratchSurface != 0) { j2d_glXDestroyPbuffer(awt_display, ctxinfo->scratchSurface); } free(ctxinfo); } free(oglc); }
/** * Disposes all memory and resources allocated for the given OGLContext. */ static void WGLGC_DestroyOGLContext(OGLContext *oglc) { WGLCtxInfo *ctxinfo; J2dTraceLn(J2D_TRACE_INFO, "WGLGC_DestroyOGLContext"); if (oglc == NULL) { J2dRlsTraceLn(J2D_TRACE_ERROR, "WGLGC_DestroyOGLContext: context is null"); return; } // at this point, this context will be current to its scratch surface, // so the following operations should be safe... OGLContext_DestroyContextResources(oglc); ctxinfo = (WGLCtxInfo *)oglc->ctxInfo; if (ctxinfo != NULL) { // release the current context before we continue j2d_wglMakeCurrent(NULL, NULL); if (ctxinfo->context != 0) { j2d_wglDeleteContext(ctxinfo->context); } if (ctxinfo->scratchSurface != 0) { if (ctxinfo->scratchSurfaceDC != 0) { j2d_wglReleasePbufferDCARB(ctxinfo->scratchSurface, ctxinfo->scratchSurfaceDC); } j2d_wglDestroyPbufferARB(ctxinfo->scratchSurface); } free(ctxinfo); } free(oglc); }