Implemented reset status.
TRAC #18607
Signed-off-by: Daniel Koch
Authors: Shannon Woods, Nicolas Capens
git-svn-id: https://angleproject.googlecode.com/svn/trunk@847 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Context.cpp b/src/libGLESv2/Context.cpp
index 37cc8f7..bae4479 100644
--- a/src/libGLESv2/Context.cpp
+++ b/src/libGLESv2/Context.cpp
@@ -159,6 +159,7 @@
mHasBeenCurrent = false;
mContextLost = false;
+ mResetStatus = GL_NO_ERROR;
mSupportsDXT1Textures = false;
mSupportsDXT3Textures = false;
@@ -392,6 +393,7 @@
void Context::markContextLost()
{
+ mResetStatus = GL_UNKNOWN_CONTEXT_RESET_EXT;
mContextLost = true;
}
@@ -3003,6 +3005,31 @@
return GL_NO_ERROR;
}
+GLenum Context::getResetStatus()
+{
+ if (mResetStatus == GL_NO_ERROR)
+ {
+ bool lost = mDisplay->testDeviceLost();
+
+ if (lost)
+ {
+ mDisplay->notifyDeviceLost(); // Sets mResetStatus
+ }
+ }
+
+ GLenum status = mResetStatus;
+
+ if (mResetStatus != GL_NO_ERROR)
+ {
+ if (mDisplay->testDeviceResettable())
+ {
+ mResetStatus = GL_NO_ERROR;
+ }
+ }
+
+ return status;
+}
+
bool Context::supportsShaderModel3() const
{
return mSupportsShaderModel3;