summaryrefslogtreecommitdiffstats
path: root/Source/ThirdParty/ANGLE/src/libGLESv2/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/ThirdParty/ANGLE/src/libGLESv2/main.cpp')
-rw-r--r--Source/ThirdParty/ANGLE/src/libGLESv2/main.cpp43
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();
}