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

Unified Diff: ui/gl/gl_gl_api_implementation.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: Nix unnecessary changes. Created 7 years, 6 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
« no previous file with comments | « ui/gl/gl_context_wgl.cc ('k') | ui/gl/gl_surface_egl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 94166eed457f039623a47d1f85329b871cd61ba0..65f29c6bf3d73151c0071ce1df893d057497a845 100644
--- a/ui/gl/gl_gl_api_implementation.cc
+++ b/ui/gl/gl_gl_api_implementation.cc
@@ -254,22 +254,19 @@ bool VirtualGLApi::MakeCurrent(GLContext* virtual_context, GLSurface* surface) {
bool switched_contexts = g_current_gl_context != this;
GLSurface* current_surface = GLSurface::GetCurrent();
if (switched_contexts || surface != current_surface) {
- if (!switched_contexts && current_surface &&
- virtual_context->IsCurrent(surface)) {
- // MakeCurrent 'lite' path that avoids potentially expensive MakeCurrent()
- // calls if the GLSurface uses the same underlying surface or renders to
- // an FBO.
- if (!surface->OnMakeCurrent(real_context_)) {
- LOG(ERROR) << "Could not make GLSurface current.";
+ // MakeCurrent 'lite' path that avoids potentially expensive MakeCurrent()
+ // calls if the GLSurface uses the same underlying surface or renders to
+ // an FBO.
+ if (switched_contexts || !current_surface ||
+ !virtual_context->IsCurrent(surface)) {
+ if (!real_context_->MakeCurrent(surface)) {
return false;
}
- } else if (!real_context_->MakeCurrent(surface)) {
- return false;
}
}
- DCHECK(GLSurface::GetCurrent());
- DCHECK(real_context_->IsCurrent(GLSurface::GetCurrent()));
+ DCHECK_EQ(real_context_, GLContext::GetRealCurrent());
+ DCHECK(real_context_->IsCurrent(NULL));
DCHECK(virtual_context->IsCurrent(surface));
if (switched_contexts || virtual_context != current_context_) {
@@ -290,6 +287,12 @@ bool VirtualGLApi::MakeCurrent(GLContext* virtual_context, GLSurface* surface) {
SetGLApi(temp);
}
SetGLApi(this);
+
+ virtual_context->SetCurrent(surface);
+ if (!surface->OnMakeCurrent(virtual_context)) {
+ LOG(ERROR) << "Could not make GLSurface current.";
+ return false;
+ }
return true;
}
« no previous file with comments | « ui/gl/gl_context_wgl.cc ('k') | ui/gl/gl_surface_egl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698