| Index: cc/layer_tree_host_impl.cc
|
| diff --git a/cc/layer_tree_host_impl.cc b/cc/layer_tree_host_impl.cc
|
| index 55f6452ded8bc55344b72f71dc08478de00335a7..96b1bd6ac613e50e2e152e59ed2c4e6acfe48449 100644
|
| --- a/cc/layer_tree_host_impl.cc
|
| +++ b/cc/layer_tree_host_impl.cc
|
| @@ -317,6 +317,7 @@ OutputSurface* LayerTreeHostImpl::outputSurface() const
|
|
|
| void LayerTreeHostImpl::animate(base::TimeTicks monotonicTime, base::Time wallClockTime)
|
| {
|
| + setLatencyInfo(LatencyInfo());
|
| animatePageScale(monotonicTime);
|
| animateLayers(monotonicTime, wallClockTime);
|
| animateScrollbars(monotonicTime);
|
| @@ -938,10 +939,29 @@ bool LayerTreeHostImpl::swapBuffers()
|
| {
|
| DCHECK(m_renderer);
|
|
|
| + m_createdFrame = false;
|
| + TRACE_EVENT_ASYNC_END2("cc", "Frame", this, "implFrameNumber", m_latencyInfo.rendererImplFrameNumber, "mainFrameNumber", m_latencyInfo.rendererMainFrameNumber);
|
| + TRACE_EVENT_INSTANT1("cc", "Frame", "inputNumber", m_latencyInfo.inputNumber);
|
| m_fpsCounter->markEndOfFrame();
|
| return m_renderer->swapBuffers();
|
| }
|
|
|
| +void LayerTreeHostImpl::setLatencyInfo(const LatencyInfo& latency_info) {
|
| + m_latencyInfo.rendererMainFrameNumber = std::max(latency_info.rendererMainFrameNumber, m_latencyInfo.rendererMainFrameNumber);
|
| + m_latencyInfo.rendererImplFrameNumber = std::max(latency_info.rendererImplFrameNumber, m_latencyInfo.rendererImplFrameNumber);
|
| + m_latencyInfo.inputNumber = std::max(latency_info.inputNumber, m_latencyInfo.inputNumber);
|
| + if (!m_createdFrame) {
|
| + m_createdFrame = true;
|
| + m_latencyInfo.rendererImplFrameNumber++;
|
| + TRACE_EVENT_ASYNC_BEGIN2("cc", "Frame", this, "implFrameNumber", m_latencyInfo.rendererImplFrameNumber, "mainFrameNumber", m_latencyInfo.rendererMainFrameNumber);
|
| + }
|
| + m_outputSurface->SetLatencyInfo(m_latencyInfo);
|
| +}
|
| +
|
| +void LayerTreeHostImpl::OnReceivedLatencyInfo(const LatencyInfo& latency_info) {
|
| + m_client->onReceivedLatencyInfo(latency_info);
|
| +}
|
| +
|
| const gfx::Size& LayerTreeHostImpl::deviceViewportSize() const
|
| {
|
| return m_deviceViewportSize;
|
| @@ -1332,7 +1352,8 @@ static gfx::Vector2dF scrollLayerWithLocalDelta(LayerImpl& layerImpl, gfx::Vecto
|
| return layerImpl.scrollDelta() - previousDelta;
|
| }
|
|
|
| -bool LayerTreeHostImpl::scrollBy(const gfx::Point& viewportPoint,
|
| +bool LayerTreeHostImpl::scrollBy(int64 input_number,
|
| + const gfx::Point& viewportPoint,
|
| const gfx::Vector2d& scrollDelta)
|
| {
|
| TRACE_EVENT0("cc", "LayerTreeHostImpl::scrollBy");
|
| @@ -1380,6 +1401,9 @@ bool LayerTreeHostImpl::scrollBy(const gfx::Point& viewportPoint,
|
| }
|
|
|
| if (didScroll) {
|
| + LatencyInfo latency_info;
|
| + latency_info.inputNumber = input_number;
|
| + setLatencyInfo(latency_info);
|
| m_client->setNeedsCommitOnImplThread();
|
| m_client->setNeedsRedrawOnImplThread();
|
| setNeedsUpdateDrawProperties();
|
|
|