Index: ui/gl/gl_gl_api_implementation.cc |
diff --git a/ui/gl/gl_gl_api_implementation.cc b/ui/gl/gl_gl_api_implementation.cc |
index a4baeb7dc8b72f0e95c42aafa8bae60287aea669..d859af855061a47530b146cd606ada05b508a3ce 100644 |
--- a/ui/gl/gl_gl_api_implementation.cc |
+++ b/ui/gl/gl_gl_api_implementation.cc |
@@ -309,17 +309,17 @@ bool VirtualGLApi::MakeCurrent(GLContext* virtual_context, GLSurface* surface) { |
// new context. |
DCHECK_EQ(glGetErrorFn(), static_cast<GLenum>(GL_NO_ERROR)); |
- current_context_ = virtual_context; |
// Set all state that is different from the real state |
- // NOTE: !!! This is a temporary implementation that just restores all |
- // state to let us test that it works. |
- // TODO: ASAP, change this to something that only restores the state |
- // needed for individual GL calls. |
GLApi* temp = GetCurrentGLApi(); |
SetGLToRealGLApi(); |
- if (virtual_context->GetGLStateRestorer()->IsInitialized()) |
- virtual_context->GetGLStateRestorer()->RestoreState(); |
+ if (virtual_context->GetGLStateRestorer()->IsInitialized()) { |
+ virtual_context->GetGLStateRestorer()->RestoreState( |
+ (current_context_ && !switched_contexts) |
+ ? current_context_->GetGLStateRestorer() |
+ : NULL); |
+ } |
SetGLApi(temp); |
+ current_context_ = virtual_context; |
} |
SetGLApi(this); |