From 9b33a7363188024381e83fe72788957bb0108ce1 Mon Sep 17 00:00:00 2001 From: tuxerr Date: Mon, 11 Jun 2018 10:22:30 -0700 Subject: [PATCH] bugfixes and gl driver removal of context data record on delete --- renderdoc/driver/gl/gl_driver.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/gl/gl_driver.cpp b/renderdoc/driver/gl/gl_driver.cpp index 59cb90610..1b91bf327 100644 --- a/renderdoc/driver/gl/gl_driver.cpp +++ b/renderdoc/driver/gl/gl_driver.cpp @@ -802,7 +802,7 @@ GLResourceRecord *WrappedOpenGL::GetContextRecord() } else { - ContextData dat = GetCtxData(); + ContextData &dat = GetCtxData(); dat.CreateResourceRecord(this, GetCtx().ctx); return dat.m_ContextDataRecord; } @@ -865,6 +865,14 @@ void WrappedOpenGL::DeleteContext(void *contextHandle) if(ctxdata.m_ClientMemoryIBO) glDeleteBuffers(1, &ctxdata.m_ClientMemoryIBO); + if(ctxdata.m_ContextDataRecord) + { + RDCASSERT(ctxdata.m_ContextDataRecord->GetRefCount() == 1); + ctxdata.m_ContextDataRecord->Delete(GetResourceManager()); + GetResourceManager()->ReleaseCurrentResource(ctxdata.m_ContextDataResourceID); + ctxdata.m_ContextDataRecord = NULL; + } + for(auto it = m_LastContexts.begin(); it != m_LastContexts.end(); ++it) { if(it->ctx == contextHandle)