Chromium Code Reviews| 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) { |