X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=retrace%2Fglretrace_ws.cpp;h=ac03fcc97de6d56390f807a3b1661e6571d489c1;hb=48c661ea6c0f2bd9b76a3385cd946b7d07bc9b5f;hp=319a2cbe80e65cfbb6b701c8c0d1b3f23c5dcd9c;hpb=c63617dd4ea8a212e56b79e845917915e36776d2;p=apitrace diff --git a/retrace/glretrace_ws.cpp b/retrace/glretrace_ws.cpp index 319a2cb..ac03fcc 100644 --- a/retrace/glretrace_ws.cpp +++ b/retrace/glretrace_ws.cpp @@ -122,14 +122,23 @@ createContext(Context *shareContext) { } -static os::thread_specific_ptr +Context::~Context() +{ + //assert(this != getCurrentContext()); + if (this != getCurrentContext()) { + delete wsContext; + } +} + + +static thread_specific Context * currentContextPtr; bool makeCurrent(trace::Call &call, glws::Drawable *drawable, Context *context) { - Context *currentContext = currentContextPtr.release(); + Context *currentContext = currentContextPtr; glws::Drawable *currentDrawable = currentContext ? currentContext->drawable : NULL; if (drawable == currentDrawable && context == currentContext) { @@ -153,13 +162,10 @@ makeCurrent(trace::Call &call, glws::Drawable *drawable, Context *context) return false; } - if (currentContext) { - currentContext->drawable = NULL; - } + currentContextPtr = context; if (drawable && context) { context->drawable = drawable; - currentContextPtr.reset(context); if (!context->used) { initContext(); @@ -173,7 +179,7 @@ makeCurrent(trace::Call &call, glws::Drawable *drawable, Context *context) Context * getCurrentContext(void) { - return currentContextPtr.get(); + return currentContextPtr; }