diff options
author | jamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-11 06:13:53 +0000 |
---|---|---|
committer | jamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-11 06:13:53 +0000 |
commit | b774a889c9702468729ec2fbe6a4206e20181ef4 (patch) | |
tree | 3af7f35898af1ea6bdf439eecac32b3d09476cb6 | |
parent | 227dbe34b4dfab240cd2a60cc3f5c02365b94b72 (diff) | |
download | chromium_src-b774a889c9702468729ec2fbe6a4206e20181ef4.zip chromium_src-b774a889c9702468729ec2fbe6a4206e20181ef4.tar.gz chromium_src-b774a889c9702468729ec2fbe6a4206e20181ef4.tar.bz2 |
Revert 176271
> Make RenderWidget responsible for the composited view's lifetime
>
> Chromium side of https://bugs.webkit.org/show_bug.cgi?id=105071.
> content::RenderWidget constructs a WebLayerTreeView when WebKit
> asks it and then retains ownership. This has to be destroyed
> before the WebWidget is closed since the WLTVClient is (currently)
> a WebKit object.
>
> BUG=156175
>
> Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=175303
>
> Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=175827
>
> Review URL: https://codereview.chromium.org/11575049
TBR=jamesr@chromium.org
Review URL: https://codereview.chromium.org/11852009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@176276 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | content/content_renderer.gypi | 1 | ||||
-rw-r--r-- | content/renderer/render_view_impl.cc | 2 | ||||
-rw-r--r-- | content/renderer/render_widget.cc | 65 | ||||
-rw-r--r-- | content/renderer/render_widget.h | 9 | ||||
-rw-r--r-- | webkit/compositor_bindings/web_layer_tree_view_impl.cc | 5 | ||||
-rw-r--r-- | webkit/compositor_bindings/web_layer_tree_view_impl.h | 2 |
6 files changed, 9 insertions, 75 deletions
diff --git a/content/content_renderer.gypi b/content/content_renderer.gypi index 11c6c20..83bfc59 100644 --- a/content/content_renderer.gypi +++ b/content/content_renderer.gypi @@ -16,7 +16,6 @@ '../ui/native_theme/native_theme.gyp:native_theme', '../ui/surface/surface.gyp:surface', '../v8/tools/gyp/v8.gyp:v8', - '../webkit/compositor_bindings/compositor_bindings.gyp:webkit_compositor_bindings', '../webkit/support/webkit_support.gyp:glue', '../webkit/support/webkit_support.gyp:webkit_media', '../webkit/support/webkit_support.gyp:webkit_gpu', diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc index 8fa6fec..d2b9103 100644 --- a/content/renderer/render_view_impl.cc +++ b/content/renderer/render_view_impl.cc @@ -5730,8 +5730,6 @@ void RenderViewImpl::OnClearFocusedNode() { void RenderViewImpl::OnSetBackground(const SkBitmap& background) { if (webview()) webview()->setIsTransparent(!background.empty()); - if (web_layer_tree_view_) - web_layer_tree_view_->setHasTransparentBackground(!background.empty()); SetBackground(background); } diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc index e8f94e2..f97d0fc 100644 --- a/content/renderer/render_widget.cc +++ b/content/renderer/render_widget.cc @@ -14,13 +14,9 @@ #include "base/stl_util.h" #include "base/utf_string_conversions.h" #include "build/build_config.h" -#include "cc/layer_tree_host.h" -#include "cc/thread.h" -#include "cc/thread_impl.h" #include "content/common/swapped_out_messages.h" #include "content/common/view_messages.h" #include "content/public/common/content_switches.h" -#include "content/renderer/gpu/compositor_thread.h" #include "content/renderer/render_process.h" #include "content/renderer/render_thread_impl.h" #include "content/renderer/renderer_webkitplatformsupport_impl.h" @@ -247,11 +243,10 @@ void RenderWidget::CompleteInit() { init_complete_ = true; - if (webwidget_ && is_threaded_compositing_enabled_) { - webwidget_->enterForceCompositingMode(true); - } - if (web_layer_tree_view_) { - web_layer_tree_view_->setSurfaceReady(); + if (webwidget_) { + webwidget_->setCompositorSurfaceReady(); + if (is_threaded_compositing_enabled_) + webwidget_->enterForceCompositingMode(true); } DoDeferredUpdate(); @@ -670,16 +665,10 @@ void RenderWidget::OnHandleInputEvent(const WebKit::WebInputEvent* input_event, input_event->type == WebInputEvent::MouseMove || input_event->type == WebInputEvent::MouseWheel || WebInputEvent::isTouchEventType(input_event->type); - - bool frame_pending = paint_aggregator_.HasPendingUpdate(); - if (is_accelerated_compositing_active_) { - frame_pending = web_layer_tree_view_ && - web_layer_tree_view_->commitRequested(); - } - bool is_input_throttled = throttle_input_events_ && - frame_pending; + ((webwidget_ ? webwidget_->isInputThrottled() : false) || + paint_aggregator_.HasPendingUpdate()); if (event_type_gets_rate_limited && is_input_throttled && !is_hidden_) { // We want to rate limit the input events in this case, so we'll wait for @@ -917,12 +906,7 @@ void RenderWidget::AnimateIfNeeded() { animation_timer_.Start(FROM_HERE, animationInterval, this, &RenderWidget::AnimationCallback); animation_update_pending_ = false; - if (is_accelerated_compositing_active_ && web_layer_tree_view_) { - web_layer_tree_view_->layer_tree_host()->updateAnimations( - base::TimeTicks::Now()); - } else { - webwidget_->animate(0.0); - } + webwidget_->animate(0.0); return; } TRACE_EVENT0("renderer", "EarlyOut_AnimatedTooRecently"); @@ -1309,33 +1293,6 @@ void RenderWidget::didDeactivateCompositor() { webwidget_->enterForceCompositingMode(false); } -void RenderWidget::initializeLayerTreeView( - WebKit::WebLayerTreeViewClient* client, - const WebKit::WebLayer& root_layer, - const WebKit::WebLayerTreeView::Settings& settings) { - DCHECK(!web_layer_tree_view_); - web_layer_tree_view_.reset(new WebKit::WebLayerTreeViewImpl(client)); - - scoped_ptr<cc::Thread> impl_thread; - CompositorThread* compositor_thread = - RenderThreadImpl::current()->compositor_thread(); - if (compositor_thread) - impl_thread = cc::ThreadImpl::createForDifferentThread( - compositor_thread->message_loop()->message_loop_proxy()); - if (!web_layer_tree_view_->initialize(settings, impl_thread.Pass())) { - web_layer_tree_view_.reset(); - return; - } - web_layer_tree_view_->setRootLayer(root_layer); - if (init_complete_) { - web_layer_tree_view_->setSurfaceReady(); - } -} - -WebKit::WebLayerTreeView* RenderWidget::layerTreeView() { - return web_layer_tree_view_.get(); -} - void RenderWidget::willBeginCompositorFrame() { TRACE_EVENT0("gpu", "RenderWidget::willBeginCompositorFrame"); @@ -1486,8 +1443,6 @@ void RenderWidget::closeWidgetSoon() { void RenderWidget::Close() { if (webwidget_) { - webwidget_->willCloseLayerTreeView(); - web_layer_tree_view_.reset(); webwidget_->close(); webwidget_ = NULL; } @@ -1702,8 +1657,7 @@ void RenderWidget::OnRepaint(const gfx::Size& size_to_paint) { set_next_paint_is_repaint_ack(); if (is_accelerated_compositing_active_) { - if (web_layer_tree_view_) - web_layer_tree_view_->setNeedsRedraw(); + webwidget_->setNeedsRedraw(); scheduleComposite(); } else { gfx::Rect repaint_rect(size_to_paint.width(), size_to_paint.height()); @@ -2037,8 +1991,7 @@ void RenderWidget::CleanupWindowInPluginMoves(gfx::PluginWindowHandle window) { void RenderWidget::GetRenderingStats( WebKit::WebRenderingStatsImpl& stats) const { - if (web_layer_tree_view_) - web_layer_tree_view_->renderingStats(stats); + webwidget()->renderingStats(stats); stats.rendering_stats.numAnimationFrames += software_stats_.numAnimationFrames; diff --git a/content/renderer/render_widget.h b/content/renderer/render_widget.h index c0cbd1e..02b03b1 100644 --- a/content/renderer/render_widget.h +++ b/content/renderer/render_widget.h @@ -32,7 +32,6 @@ #include "ui/gfx/rect.h" #include "ui/gfx/vector2d.h" #include "ui/surface/transport_dib.h" -#include "webkit/compositor_bindings/web_layer_tree_view_impl.h" #include "webkit/glue/webcursor.h" struct ViewHostMsg_UpdateRect_Params; @@ -122,11 +121,6 @@ class CONTENT_EXPORT RenderWidget virtual void didAutoResize(const WebKit::WebSize& new_size); virtual void didActivateCompositor(int input_handler_identifier); virtual void didDeactivateCompositor(); - virtual void initializeLayerTreeView( - WebKit::WebLayerTreeViewClient* client, - const WebKit::WebLayer& root_layer, - const WebKit::WebLayerTreeView::Settings& settings); - virtual WebKit::WebLayerTreeView* layerTreeView(); virtual void didBecomeReadyForAdditionalInput(); virtual void didCommitAndDrawCompositorFrame(); virtual void didCompleteSwapBuffers(); @@ -456,9 +450,6 @@ class CONTENT_EXPORT RenderWidget // We are responsible for destroying this object via its Close method. WebKit::WebWidget* webwidget_; - // This is lazily constructed and must not outlive webwidget_. - scoped_ptr<WebKit::WebLayerTreeViewImpl> web_layer_tree_view_; - // Set to the ID of the view that initiated creating this view, if any. When // the view was initiated by the browser (the common case), this will be // MSG_ROUTING_NONE. This is used in determining ownership when opening diff --git a/webkit/compositor_bindings/web_layer_tree_view_impl.cc b/webkit/compositor_bindings/web_layer_tree_view_impl.cc index 44884c1c..e42a3c7 100644 --- a/webkit/compositor_bindings/web_layer_tree_view_impl.cc +++ b/webkit/compositor_bindings/web_layer_tree_view_impl.cc @@ -57,11 +57,6 @@ bool WebLayerTreeViewImpl::initialize(const WebLayerTreeView::Settings& webSetti return true; } -cc::LayerTreeHost* WebLayerTreeViewImpl::layer_tree_host() const -{ - return m_layerTreeHost.get(); -} - void WebLayerTreeViewImpl::setSurfaceReady() { m_layerTreeHost->setSurfaceReady(); diff --git a/webkit/compositor_bindings/web_layer_tree_view_impl.h b/webkit/compositor_bindings/web_layer_tree_view_impl.h index c69ccbe..4817221 100644 --- a/webkit/compositor_bindings/web_layer_tree_view_impl.h +++ b/webkit/compositor_bindings/web_layer_tree_view_impl.h @@ -30,8 +30,6 @@ public: WEBKIT_COMPOSITOR_BINDINGS_EXPORT bool initialize( const Settings&, scoped_ptr<cc::Thread> implThread); - WEBKIT_COMPOSITOR_BINDINGS_EXPORT cc::LayerTreeHost* layer_tree_host() const; - // WebLayerTreeView implementation. virtual void setSurfaceReady() OVERRIDE; virtual void setRootLayer(const WebLayer&) OVERRIDE; |