Fix resetting the current context on thread/process detach.
Bug 29540271
Change-Id: I0a5a63ad74339aec31e73b4a95c8978696e95782
Reviewed-on: https://swiftshader-review.googlesource.com/5670
Reviewed-by: Nicolas Capens <capn@google.com>
Tested-by: Nicolas Capens <capn@google.com>
diff --git a/src/OpenGL/libGL/main.cpp b/src/OpenGL/libGL/main.cpp
index 73daa9d..6a6e3da 100644
--- a/src/OpenGL/libGL/main.cpp
+++ b/src/OpenGL/libGL/main.cpp
@@ -42,10 +42,10 @@
{
sw::Thread::setLocalStorage(currentTLS, current);
- current->context = 0;
- current->display = 0;
- current->drawSurface = 0;
- current->readSurface = 0;
+ current->context = nullptr;
+ current->display = nullptr;
+ current->drawSurface = nullptr;
+ current->readSurface = nullptr;
}
}
@@ -53,12 +53,10 @@
{
TRACE("()");
- gl::Current *current = (gl::Current*)sw::Thread::getLocalStorage(currentTLS);
+ wglMakeCurrent(NULL, NULL);
- if(current)
- {
- delete current;
- }
+ delete (gl::Current*)sw::Thread::getLocalStorage(currentTLS);
+ sw::Thread::setLocalStorage(currentTLS, nullptr);
}
CONSTRUCTOR static bool glAttachProcess()
@@ -207,7 +205,7 @@
{
Context *context = getContext();
- return context ? context->getDevice() : 0;
+ return context ? context->getDevice() : nullptr;
}
void setCurrentDisplay(Display *dpy)