Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(419)

Unified Diff: ui/gl/gl_surface_egl.cc

Issue 15928002: GPU: Keep track of the last real context and real surface made current. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Use ScopedMakeCurrent. Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/gl/gl_surface_egl.cc
diff --git a/ui/gl/gl_surface_egl.cc b/ui/gl/gl_surface_egl.cc
index d8741f701b09eb51a7c0bac4b6921620868e3e99..c650ebc525f01cb1fcc88833670e8fd1c3bc028e 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;
- 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);
+ }
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;
- GLContext* current_context = GLContext::GetCurrent();
- bool was_current = current_context && current_context->IsCurrent(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));
+ }
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;
}
« ui/gl/gl_context.cc ('K') | « ui/gl/gl_surface.cc ('k') | ui/gl/gl_surface_osmesa.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698