Index: ui/gl/gl_surface_osmesa.cc |
diff --git a/ui/gl/gl_surface_osmesa.cc b/ui/gl/gl_surface_osmesa.cc |
index 7994eec379187df5b0838ab1f7749615d8fff3ae..5080c29a9475cc1741bc2080f61e5377a71e2ee9 100644 |
--- a/ui/gl/gl_surface_osmesa.cc |
+++ b/ui/gl/gl_surface_osmesa.cc |
@@ -6,6 +6,7 @@ |
#include "ui/gl/gl_bindings.h" |
#include "ui/gl/gl_context.h" |
#include "ui/gl/gl_surface_osmesa.h" |
+#include "ui/gl/scoped_make_current.h" |
namespace gfx { |
@@ -23,10 +24,15 @@ void GLSurfaceOSMesa::Destroy() { |
} |
bool GLSurfaceOSMesa::Resize(const gfx::Size& new_size) { |
- GLContext* current_context = GLContext::GetCurrent(); |
- bool was_current = current_context && current_context->IsCurrent(this); |
- if (was_current) |
- current_context->ReleaseCurrent(this); |
+ scoped_ptr<ui::ScopedMakeCurrent> scoped_make_current; |
+ GLContext* current_real_context = GLContext::GetRealCurrent(); |
+ bool was_current = |
+ current_real_context && current_real_context->IsCurrent(this); |
+ if (was_current) { |
+ scoped_make_current.reset( |
+ new ui::ScopedMakeCurrent(current_real_context, this)); |
+ current_real_context->ReleaseCurrent(this); |
+ } |
// Preserve the old buffer. |
scoped_ptr<int32[]> old_buffer(buffer_.release()); |
@@ -48,9 +54,6 @@ bool GLSurfaceOSMesa::Resize(const gfx::Size& new_size) { |
size_ = new_size; |
- if (was_current) |
- return current_context->MakeCurrent(this); |
- |
return true; |
} |