void CRendererVTB::AfterRenderHook(int idx) { YUVBUFFER &buf = m_buffers[idx]; VTB::CVideoBufferVTB *vb = dynamic_cast<VTB::CVideoBufferVTB*>(buf.videoBuffer); if (!vb) { return; } if (vb->m_fence && glIsFenceAPPLE(vb->m_fence)) { glDeleteFencesAPPLE(1, &vb->m_fence); } glGenFencesAPPLE(1, &vb->m_fence); glSetFenceAPPLE(vb->m_fence); }
CGLMQuery::~CGLMQuery() { GLMPRINTF(("-A-> ~CGLMQuery")); // make sure query has completed (might not be necessary) // delete the name(s) m_ctx->MakeCurrent(); switch(m_params.m_type) { case EOcclusion: { // do a finish occlusion query ? GLMPRINTF(("-A- ~CGLMQuery(OQ) deleting name %d", m_name)); glDeleteQueries(1, &m_name ); GLenum errorcode = GetQueryError(); if (errorcode) { const char *decodedStr = GLMDecode( eGL_ERROR, errorcode ); printf( "\nCGLMQuery::~CGLMQuery (OQ) saw %s error (%d) from glDeleteQueries", decodedStr, errorcode ); } } break; case EFence: { // do a finish fence ? GLMPRINTF(("-A- ~CGLMQuery(fence) deleting name %d", m_name)); glDeleteFencesAPPLE(1, &m_name ); GLenum errorcode = GetQueryError(); if (errorcode) { const char *decodedStr = GLMDecode( eGL_ERROR, errorcode ); printf( "\nCGLMQuery::~CGLMQuery (fence) saw %s error (%d) from glDeleteFencesAPPLE", decodedStr, errorcode ); } } break; } m_name = 0; GLMPRINTF(("-A-< ~CGLMQuery")); }
void CRendererVTB::ReleaseBuffer(int idx) { YUVBUFFER &buf = m_buffers[idx]; if (buf.videoBuffer) { VTB::CVideoBufferVTB *vb = dynamic_cast<VTB::CVideoBufferVTB*>(buf.videoBuffer); if (vb) { if (vb->m_fence && glIsFenceAPPLE(vb->m_fence)) { glDeleteFencesAPPLE(1, &vb->m_fence); vb->m_fence = 0; } } vb->Release(); buf.videoBuffer = nullptr; } }
void GFXGLAppleFence::zombify() { glDeleteFencesAPPLE(1, &mHandle); }
GFXGLAppleFence::~GFXGLAppleFence() { glDeleteFencesAPPLE(1, &mHandle); }