Index: content/renderer/gpu/render_widget_compositor.cc |
diff --git a/content/renderer/gpu/render_widget_compositor.cc b/content/renderer/gpu/render_widget_compositor.cc |
index 4eb81d9d52744bbd1286918bb28c0b2c6b05a6c3..8bcc8e208b39f97232653bfc45dea941c3b2f650 100644 |
--- a/content/renderer/gpu/render_widget_compositor.cc |
+++ b/content/renderer/gpu/render_widget_compositor.cc |
@@ -470,10 +470,14 @@ RenderWidgetCompositor::OffscreenContextProviderForMainThread() { |
class RenderWidgetCompositor::CompositorThreadContextProvider |
: public cc::ContextProvider { |
public: |
- CompositorThreadContextProvider() : destroyed_(false) {} |
+ CompositorThreadContextProvider() : initialized_(false), destroyed_(false) {} |
virtual bool InitializeOnMainThread() OVERRIDE { |
- return WebKit::WebSharedGraphicsContext3D::createCompositorThreadContext(); |
+ if (!initialized_) { |
+ initialized_ = |
+ WebKit::WebSharedGraphicsContext3D::createCompositorThreadContext(); |
+ } |
+ return initialized_; |
} |
virtual bool BindToCurrentThread() OVERRIDE { |
return Context3d()->makeContextCurrent(); |
@@ -501,6 +505,8 @@ class RenderWidgetCompositor::CompositorThreadContextProvider |
virtual ~CompositorThreadContextProvider() {} |
private: |
+ bool initialized_; |
+ |
base::Lock destroyed_lock_; |
bool destroyed_; |
}; |