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)