diff options
Diffstat (limited to 'Source/ThirdParty/ANGLE/src/libGLESv2/main.cpp')
-rw-r--r-- | Source/ThirdParty/ANGLE/src/libGLESv2/main.cpp | 43 |
1 files changed, 38 insertions, 5 deletions
diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/main.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/main.cpp index a99ec44..154d277 100644 --- a/Source/ThirdParty/ANGLE/src/libGLESv2/main.cpp +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/main.cpp @@ -7,6 +7,7 @@ // main.cpp: DLL entry point and management of thread-local data. #include "libGLESv2/main.h" +#include "libGLESv2/utilities.h" #include "common/debug.h" #include "libEGL/Surface.h" @@ -93,6 +94,25 @@ Context *getContext() return current->context; } +Context *getNonLostContext() +{ + Context *context = getContext(); + + if (context) + { + if (context->isContextLost()) + { + error(GL_OUT_OF_MEMORY); + return NULL; + } + else + { + return context; + } + } + return NULL; +} + egl::Display *getDisplay() { Current *current = (Current*)TlsGetValue(currentTLS); @@ -106,6 +126,19 @@ IDirect3DDevice9 *getDevice() return display->getDevice(); } + +bool checkDeviceLost(HRESULT errorCode) +{ + egl::Display *display = NULL; + + if (isDeviceLostError(errorCode)) + { + display = gl::getDisplay(); + display->notifyDeviceLost(); + return true; + } + return false; +} } // Records an error code @@ -119,23 +152,23 @@ void error(GLenum errorCode) { case GL_INVALID_ENUM: context->recordInvalidEnum(); - gl::trace("\t! Error generated: invalid enum\n"); + TRACE("\t! Error generated: invalid enum\n"); break; case GL_INVALID_VALUE: context->recordInvalidValue(); - gl::trace("\t! Error generated: invalid value\n"); + TRACE("\t! Error generated: invalid value\n"); break; case GL_INVALID_OPERATION: context->recordInvalidOperation(); - gl::trace("\t! Error generated: invalid operation\n"); + TRACE("\t! Error generated: invalid operation\n"); break; case GL_OUT_OF_MEMORY: context->recordOutOfMemory(); - gl::trace("\t! Error generated: out of memory\n"); + TRACE("\t! Error generated: out of memory\n"); break; case GL_INVALID_FRAMEBUFFER_OPERATION: context->recordInvalidFramebufferOperation(); - gl::trace("\t! Error generated: invalid framebuffer operation\n"); + TRACE("\t! Error generated: invalid framebuffer operation\n"); break; default: UNREACHABLE(); } |