Commit af93a429 by Nicolas Capens

Refactor process/thread attach/detach.

These functions looked too much like EGL entry functions. Change-Id: I29dda78a34d3eb53aad002bec83ea7a77cfac1c8 Reviewed-on: https://swiftshader-review.googlesource.com/5580Reviewed-by: 's avatarAlexis Hétu <sugoi@google.com> Tested-by: 's avatarNicolas Capens <capn@google.com> Reviewed-by: 's avatarNicolas Capens <capn@google.com>
parent 5da2d3fc
......@@ -37,11 +37,13 @@ static sw::Thread::LocalStorageKey currentTLS = TLS_OUT_OF_INDEXES;
#define DESTRUCTOR
#endif
static void eglAttachThread()
namespace egl
{
void attachThread()
{
TRACE("()");
egl::Current *current = new egl::Current;
Current *current = new Current;
if(current)
{
......@@ -56,19 +58,14 @@ static void eglAttachThread()
}
}
static void eglDetachThread()
void detachThread()
{
TRACE("()");
egl::Current *current = (egl::Current*)sw::Thread::getLocalStorage(currentTLS);
if(current)
{
delete current;
}
delete (Current*)sw::Thread::getLocalStorage(currentTLS);
}
CONSTRUCTOR static void eglAttachProcess()
CONSTRUCTOR void attachProcess()
{
TRACE("()");
......@@ -90,16 +87,17 @@ CONSTRUCTOR static void eglAttachProcess()
return;
}
eglAttachThread();
attachThread();
}
DESTRUCTOR static void eglDetachProcess()
DESTRUCTOR void detachProcess()
{
TRACE("()");
eglDetachThread();
detachThread();
sw::Thread::freeLocalStorageKey(currentTLS);
}
}
#if defined(_WIN32)
static INT_PTR CALLBACK DebuggerWaitDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
......@@ -147,16 +145,16 @@ extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved
#ifndef NDEBUG
WaitForDebugger(instance);
#endif
eglAttachProcess();
egl::attachProcess();
break;
case DLL_THREAD_ATTACH:
eglAttachThread();
egl::attachThread();
break;
case DLL_THREAD_DETACH:
eglDetachThread();
egl::detachThread();
break;
case DLL_PROCESS_DETACH:
eglDetachProcess();
egl::detachProcess();
break;
default:
break;
......@@ -168,13 +166,13 @@ extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved
namespace egl
{
static Current *eglGetCurrent(void)
static Current *getCurrent(void)
{
Current *current = (Current*)sw::Thread::getLocalStorage(currentTLS);
if(!current)
{
eglAttachThread();
attachThread();
}
return (Current*)sw::Thread::getLocalStorage(currentTLS);
......@@ -182,49 +180,49 @@ static Current *eglGetCurrent(void)
void setCurrentError(EGLint error)
{
Current *current = eglGetCurrent();
Current *current = getCurrent();
current->error = error;
}
EGLint getCurrentError()
{
Current *current = eglGetCurrent();
Current *current = getCurrent();
return current->error;
}
void setCurrentAPI(EGLenum API)
{
Current *current = eglGetCurrent();
Current *current = getCurrent();
current->API = API;
}
EGLenum getCurrentAPI()
{
Current *current = eglGetCurrent();
Current *current = getCurrent();
return current->API;
}
void setCurrentDisplay(EGLDisplay dpy)
{
Current *current = eglGetCurrent();
Current *current = getCurrent();
current->display = dpy;
}
EGLDisplay getCurrentDisplay()
{
Current *current = eglGetCurrent();
Current *current = getCurrent();
return current->display;
}
void setCurrentContext(egl::Context *ctx)
{
Current *current = eglGetCurrent();
Current *current = getCurrent();
if(ctx)
{
......@@ -241,14 +239,14 @@ void setCurrentContext(egl::Context *ctx)
egl::Context *getCurrentContext()
{
Current *current = eglGetCurrent();
Current *current = getCurrent();
return current->context;
}
void setCurrentDrawSurface(egl::Surface *surface)
{
Current *current = eglGetCurrent();
Current *current = getCurrent();
if(surface)
{
......@@ -265,14 +263,14 @@ void setCurrentDrawSurface(egl::Surface *surface)
egl::Surface *getCurrentDrawSurface()
{
Current *current = eglGetCurrent();
Current *current = getCurrent();
return current->drawSurface;
}
void setCurrentReadSurface(egl::Surface *surface)
{
Current *current = eglGetCurrent();
Current *current = getCurrent();
if(surface)
{
......@@ -289,7 +287,7 @@ void setCurrentReadSurface(egl::Surface *surface)
egl::Surface *getCurrentReadSurface()
{
Current *current = eglGetCurrent();
Current *current = getCurrent();
return current->readSurface;
}
......
......@@ -39,6 +39,8 @@ namespace egl
Surface *readSurface;
};
void detachThread();
void setCurrentError(EGLint error);
EGLint getCurrentError();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment