| 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;
|
| }
|
|
|
|
|