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;