Index: content/renderer/render_view_impl.cc |
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc |
index b76e2a8a26c6df7b90b193639497dd4a0a1f6333..64f294a5a9ef076c28987e153eb29a127dca9177 100644 |
--- a/content/renderer/render_view_impl.cc |
+++ b/content/renderer/render_view_impl.cc |
@@ -4495,12 +4495,21 @@ bool RenderViewImpl::SupportsAsynchronousSwapBuffers() { |
if (WebWidgetHandlesCompositorScheduling()) |
return false; |
+ if (queried_for_swapbuffers_complete_callback_) |
+ return context_has_swapbuffers_complete_callback_; |
piman
2012/01/30 18:10:23
I'm not sure caching this is a valid thing to do.
|
+ |
+ queried_for_swapbuffers_complete_callback_ = true; |
+ |
WebKit::WebGraphicsContext3D* context = webview()->graphicsContext3D(); |
- if (!context) |
- 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) { |