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

Unified Diff: content/renderer/render_view_impl.cc

Issue 9225050: Defer render_widget draw until host window is available (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: aura sets host_window_ to NULL, so check for set-ness instead of null-ness Created 8 years, 10 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 | « content/renderer/render_view_impl.h ('k') | content/renderer/render_widget.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/render_view_impl.cc
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index a23022d868b4d50e97c987b672a53812c5d68694..817fdc0fb9c6cc464801e9f310991319bc98182c 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -408,6 +408,8 @@ RenderViewImpl::RenderViewImpl(
cached_is_main_frame_pinned_to_right_(false),
cached_has_main_frame_horizontal_scrollbar_(false),
cached_has_main_frame_vertical_scrollbar_(false),
+ context_has_swapbuffers_complete_callback_(false),
+ queried_for_swapbuffers_complete_callback_(false),
ALLOW_THIS_IN_INITIALIZER_LIST(cookie_jar_(this)),
geolocation_dispatcher_(NULL),
speech_input_dispatcher_(NULL),
@@ -4520,14 +4522,20 @@ bool RenderViewImpl::SupportsAsynchronousSwapBuffers() {
if (WebWidgetHandlesCompositorScheduling())
return false;
+ if (queried_for_swapbuffers_complete_callback_)
+ return context_has_swapbuffers_complete_callback_;
+
+ queried_for_swapbuffers_complete_callback_ = true;
+
WebKit::WebGraphicsContext3D* context = webview()->graphicsContext3D();
- if (!context)
- return false;
- if (!context->makeContextCurrent())
- return false;
- std::string extensions(context->getRequestableExtensionsCHROMIUM().utf8());
- return extensions.find("GL_CHROMIUM_swapbuffers_complete_callback") !=
- std::string::npos;
+ if (context && context->makeContextCurrent()) {
+ std::string extensions(context->getRequestableExtensionsCHROMIUM().utf8());
+ context_has_swapbuffers_complete_callback_ =
+ extensions.find("GL_CHROMIUM_swapbuffers_complete_callback")
+ != std::string::npos;
+ }
+
+ return context_has_swapbuffers_complete_callback_;
}
void RenderViewImpl::OnSetFocus(bool enable) {
« no previous file with comments | « content/renderer/render_view_impl.h ('k') | content/renderer/render_widget.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698