Index: ui/gl/gl_surface_egl.cc |
diff --git a/ui/gl/gl_surface_egl.cc b/ui/gl/gl_surface_egl.cc |
index 107330447b2d2a0156fae1a65bcd8af9bb0fbf03..84efbc61764e7211326b3814901c33e2e81c3be6 100644 |
--- a/ui/gl/gl_surface_egl.cc |
+++ b/ui/gl/gl_surface_egl.cc |
@@ -16,6 +16,7 @@ |
#include "ui/gl/gl_context.h" |
#include "ui/gl/gl_implementation.h" |
#include "ui/gl/gl_surface_stub.h" |
+#include "ui/gl/scoped_make_current.h" |
#if defined(USE_X11) |
extern "C" { |
@@ -410,20 +411,23 @@ bool NativeViewGLSurfaceEGL::Resize(const gfx::Size& size) { |
if (size == GetSize()) |
return true; |
+ scoped_ptr<ui::ScopedMakeCurrent> scoped_make_current; |
GLContext* current_context = GLContext::GetCurrent(); |
- bool was_current = current_context && current_context->IsCurrent(this); |
- if (was_current) |
+ bool was_current = |
+ current_context && current_context->IsCurrent(this); |
+ if (was_current) { |
+ scoped_make_current.reset( |
+ new ui::ScopedMakeCurrent(current_context, this)); |
current_context->ReleaseCurrent(this); |
+ } |
Destroy(); |
if (!Initialize()) { |
- LOG(ERROR) << "Failed to resize pbuffer."; |
+ LOG(ERROR) << "Failed to resize window."; |
return false; |
} |
- if (was_current) |
- return current_context->MakeCurrent(this); |
return true; |
} |
@@ -554,8 +558,14 @@ bool PbufferGLSurfaceEGL::Resize(const gfx::Size& size) { |
if (size == size_) |
return true; |
+ scoped_ptr<ui::ScopedMakeCurrent> scoped_make_current; |
GLContext* current_context = GLContext::GetCurrent(); |
- bool was_current = current_context && current_context->IsCurrent(this); |
+ bool was_current = |
+ current_context && current_context->IsCurrent(this); |
+ if (was_current) { |
+ scoped_make_current.reset( |
+ new ui::ScopedMakeCurrent(current_context, this)); |
+ } |
size_ = size; |
@@ -564,9 +574,6 @@ bool PbufferGLSurfaceEGL::Resize(const gfx::Size& size) { |
return false; |
} |
- if (was_current) |
- return current_context->MakeCurrent(this); |
- |
return true; |
} |