| Index: webkit/compositor_bindings/web_compositor_support_impl.cc
|
| diff --git a/webkit/compositor_bindings/web_compositor_support_impl.cc b/webkit/compositor_bindings/web_compositor_support_impl.cc
|
| index 6d237be7755e04f0cdf5d1ac6f6c45eb96759312..5e5a4d49e7ba8888704d6dc0eb86a8af80e32445 100644
|
| --- a/webkit/compositor_bindings/web_compositor_support_impl.cc
|
| +++ b/webkit/compositor_bindings/web_compositor_support_impl.cc
|
| @@ -7,9 +7,10 @@
|
|
|
| #include "base/debug/trace_event.h"
|
| #include "base/memory/scoped_ptr.h"
|
| +#include "base/message_loop_proxy.h"
|
| #include "cc/settings.h"
|
| +#include "cc/thread_impl.h"
|
| #include "webkit/compositor_bindings/web_animation_impl.h"
|
| -#include "webkit/compositor_bindings/web_compositor_impl.h"
|
| #include "webkit/compositor_bindings/web_content_layer_impl.h"
|
| #include "webkit/compositor_bindings/web_delegated_renderer_layer_impl.h"
|
| #include "webkit/compositor_bindings/web_external_texture_layer_impl.h"
|
| @@ -22,6 +23,7 @@
|
| #include "webkit/compositor_bindings/web_solid_color_layer_impl.h"
|
| #include "webkit/compositor_bindings/web_transform_animation_curve_impl.h"
|
| #include "webkit/compositor_bindings/web_video_layer_impl.h"
|
| +#include "webkit/glue/webthread_impl.h"
|
|
|
| using WebKit::WebAnimation;
|
| using WebKit::WebAnimationCurve;
|
| @@ -46,29 +48,36 @@ using WebKit::WebTransformAnimationCurve;
|
| using WebKit::WebVideoFrameProvider;
|
| using WebKit::WebVideoLayer;
|
|
|
| -using WebKit::WebCompositorImpl;
|
| -
|
| namespace webkit {
|
|
|
| -WebCompositorSupportImpl::WebCompositorSupportImpl() {
|
| +WebCompositorSupportImpl::WebCompositorSupportImpl()
|
| + : initialized_(false) {
|
| }
|
|
|
| WebCompositorSupportImpl::~WebCompositorSupportImpl() {
|
| }
|
|
|
| -void WebCompositorSupportImpl::initialize(WebKit::WebThread* thread) {
|
| - if (thread) {
|
| +void WebCompositorSupportImpl::initialize(WebKit::WebThread* impl_thread) {
|
| + DCHECK(!initialized_);
|
| + initialized_ = true;
|
| + if (impl_thread) {
|
| TRACE_EVENT_INSTANT0("test_gpu", "ThreadedCompositingInitialization");
|
| + impl_thread_message_loop_proxy_ =
|
| + static_cast<webkit_glue::WebThreadImpl*>(impl_thread)->
|
| + message_loop()->message_loop_proxy();
|
| + } else {
|
| + impl_thread_message_loop_proxy_ = NULL;
|
| }
|
| - WebCompositorImpl::initialize(thread);
|
| }
|
|
|
| bool WebCompositorSupportImpl::isThreadingEnabled() {
|
| - return WebCompositorImpl::isThreadingEnabled();
|
| + return impl_thread_message_loop_proxy_;
|
| }
|
|
|
| void WebCompositorSupportImpl::shutdown() {
|
| - WebCompositorImpl::shutdown();
|
| + DCHECK(initialized_);
|
| + initialized_ = false;
|
| + impl_thread_message_loop_proxy_ = NULL;
|
| }
|
|
|
| void WebCompositorSupportImpl::setPerTilePaintingEnabled(bool enabled) {
|
| @@ -90,9 +99,14 @@ void WebCompositorSupportImpl::setPageScalePinchZoomEnabled(bool enabled) {
|
| WebLayerTreeView* WebCompositorSupportImpl::createLayerTreeView(
|
| WebLayerTreeViewClient* client, const WebLayer& root,
|
| const WebLayerTreeView::Settings& settings) {
|
| + DCHECK(initialized_);
|
| scoped_ptr<WebKit::WebLayerTreeViewImpl> layerTreeViewImpl(
|
| new WebKit::WebLayerTreeViewImpl(client));
|
| - if (!layerTreeViewImpl->initialize(settings))
|
| + scoped_ptr<cc::Thread> impl_thread;
|
| + if (impl_thread_message_loop_proxy_)
|
| + impl_thread = cc::ThreadImpl::createForDifferentThread(
|
| + impl_thread_message_loop_proxy_);
|
| + if (!layerTreeViewImpl->initialize(settings, impl_thread.Pass()))
|
| return NULL;
|
| layerTreeViewImpl->setRootLayer(root);
|
| return layerTreeViewImpl.release();
|
|
|