Index: cc/trees/layer_tree_host_impl.cc |
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc |
index efcc5295465539f182d6628e1092abb1ea3989fe..fbbb0388b8b771499b5109df0d74aea0366404a4 100644 |
--- a/cc/trees/layer_tree_host_impl.cc |
+++ b/cc/trees/layer_tree_host_impl.cc |
@@ -159,6 +159,7 @@ LayerTreeHostImpl::LayerTreeHostImpl( |
RenderingStatsInstrumentation* rendering_stats_instrumentation) |
: client_(client), |
proxy_(proxy), |
+ input_handler_client_(NULL), |
did_lock_scrolling_layer_(false), |
should_bubble_scrolls_(false), |
wheel_scrolling_(false), |
@@ -208,6 +209,11 @@ LayerTreeHostImpl::~LayerTreeHostImpl() { |
TRACE_EVENT0("cc", "LayerTreeHostImpl::~LayerTreeHostImpl()"); |
TRACE_EVENT_OBJECT_DELETED_WITH_ID("cc.debug", "cc::LayerTreeHostImpl", this); |
+ if (input_handler_client_) { |
+ input_handler_client_->WillShutdown(); |
+ input_handler_client_ = NULL; |
+ } |
+ |
if (active_tree_->root_layer()) { |
ClearRenderSurfaces(); |
// The layer trees must be destroyed before the layer tree host. We've |
@@ -275,6 +281,8 @@ bool LayerTreeHostImpl::CanDraw() { |
void LayerTreeHostImpl::Animate(base::TimeTicks monotonic_time, |
base::Time wall_clock_time) { |
+ if (input_handler_client_) |
+ input_handler_client_->Animate(monotonic_time); |
AnimatePageScale(monotonic_time); |
AnimateLayers(monotonic_time, wall_clock_time); |
AnimateScrollbars(monotonic_time); |
@@ -721,6 +729,11 @@ bool LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) { |
return draw_frame; |
} |
+void LayerTreeHostImpl::MainThreadHasStoppedFlinging() { |
+ if (input_handler_client_) |
+ input_handler_client_->MainThreadHasStoppedFlinging(); |
+} |
+ |
void LayerTreeHostImpl::UpdateBackgroundAnimateTicking( |
bool should_background_tick) { |
bool enabled = should_background_tick && |
@@ -1475,6 +1488,11 @@ bool LayerTreeHostImpl::EnsureRenderSurfaceLayerList() { |
return !active_tree_->RenderSurfaceLayerList().empty(); |
} |
+void LayerTreeHostImpl::BindToClient(InputHandlerClient* client) { |
+ DCHECK(input_handler_client_ == NULL); |
+ input_handler_client_ = client; |
+} |
+ |
InputHandler::ScrollStatus LayerTreeHostImpl::ScrollBegin( |
gfx::Point viewport_point, InputHandler::ScrollInputType type) { |
TRACE_EVENT0("cc", "LayerTreeHostImpl::ScrollBegin"); |