OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "config.h" | 5 #include "config.h" |
6 | 6 |
7 #include "cc/layer_tree_host.h" | 7 #include "cc/layer_tree_host.h" |
8 | 8 |
9 #include "Region.h" | 9 #include "Region.h" |
10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
216 if (m_rendererInitialized) | 216 if (m_rendererInitialized) |
217 m_contentsTextureManager->clearAllMemory(resourceProvider); | 217 m_contentsTextureManager->clearAllMemory(resourceProvider); |
218 } | 218 } |
219 | 219 |
220 void LayerTreeHost::acquireLayerTextures() | 220 void LayerTreeHost::acquireLayerTextures() |
221 { | 221 { |
222 DCHECK(Proxy::isMainThread()); | 222 DCHECK(Proxy::isMainThread()); |
223 m_proxy->acquireLayerTextures(); | 223 m_proxy->acquireLayerTextures(); |
224 } | 224 } |
225 | 225 |
226 void LayerTreeHost::updateAnimations(double monotonicFrameBeginTime) | 226 void LayerTreeHost::updateAnimations(base::TimeTicks frameBeginTime) |
227 { | 227 { |
228 m_animating = true; | 228 m_animating = true; |
229 m_client->animate(monotonicFrameBeginTime); | 229 m_client->animate((frameBeginTime - base::TimeTicks()).InSecondsF()); |
230 animateLayers(monotonicFrameBeginTime); | 230 animateLayers(frameBeginTime); |
231 m_animating = false; | 231 m_animating = false; |
232 | 232 |
233 m_renderingStats.numAnimationFrames++; | 233 m_renderingStats.numAnimationFrames++; |
234 } | 234 } |
235 | 235 |
236 void LayerTreeHost::layout() | 236 void LayerTreeHost::layout() |
237 { | 237 { |
238 m_client->layout(); | 238 m_client->layout(); |
239 } | 239 } |
240 | 240 |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
385 m_proxy->setNeedsRedraw(); | 385 m_proxy->setNeedsRedraw(); |
386 if (!ThreadProxy::implThread()) | 386 if (!ThreadProxy::implThread()) |
387 m_client->scheduleComposite(); | 387 m_client->scheduleComposite(); |
388 } | 388 } |
389 | 389 |
390 bool LayerTreeHost::commitRequested() const | 390 bool LayerTreeHost::commitRequested() const |
391 { | 391 { |
392 return m_proxy->commitRequested(); | 392 return m_proxy->commitRequested(); |
393 } | 393 } |
394 | 394 |
395 void LayerTreeHost::setAnimationEvents(scoped_ptr<AnimationEventsVector> events,
double wallClockTime) | 395 void LayerTreeHost::setAnimationEvents(scoped_ptr<AnimationEventsVector> events,
base::Time wallClockTime) |
396 { | 396 { |
397 DCHECK(ThreadProxy::isMainThread()); | 397 DCHECK(ThreadProxy::isMainThread()); |
398 setAnimationEventsRecursive(*events.get(), m_rootLayer.get(), wallClockTime)
; | 398 setAnimationEventsRecursive(*events.get(), m_rootLayer.get(), wallClockTime)
; |
399 } | 399 } |
400 | 400 |
401 void LayerTreeHost::didAddAnimation() | 401 void LayerTreeHost::didAddAnimation() |
402 { | 402 { |
403 m_needsAnimateLayers = true; | 403 m_needsAnimateLayers = true; |
404 m_proxy->didAddAnimation(); | 404 m_proxy->didAddAnimation(); |
405 } | 405 } |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
444 } | 444 } |
445 | 445 |
446 void LayerTreeHost::setVisible(bool visible) | 446 void LayerTreeHost::setVisible(bool visible) |
447 { | 447 { |
448 if (m_visible == visible) | 448 if (m_visible == visible) |
449 return; | 449 return; |
450 m_visible = visible; | 450 m_visible = visible; |
451 m_proxy->setVisible(visible); | 451 m_proxy->setVisible(visible); |
452 } | 452 } |
453 | 453 |
454 void LayerTreeHost::startPageScaleAnimation(const IntSize& targetPosition, bool
useAnchor, float scale, double durationSec) | 454 void LayerTreeHost::startPageScaleAnimation(const IntSize& targetPosition, bool
useAnchor, float scale, base::TimeDelta duration) |
455 { | 455 { |
456 m_proxy->startPageScaleAnimation(targetPosition, useAnchor, scale, durationS
ec); | 456 m_proxy->startPageScaleAnimation(targetPosition, useAnchor, scale, duration)
; |
457 } | 457 } |
458 | 458 |
459 void LayerTreeHost::loseContext(int numTimes) | 459 void LayerTreeHost::loseContext(int numTimes) |
460 { | 460 { |
461 TRACE_EVENT1("cc", "LayerTreeHost::loseCompositorContext", "numTimes", numTi
mes); | 461 TRACE_EVENT1("cc", "LayerTreeHost::loseCompositorContext", "numTimes", numTi
mes); |
462 m_numTimesRecreateShouldFail = numTimes - 1; | 462 m_numTimesRecreateShouldFail = numTimes - 1; |
463 m_proxy->loseContext(); | 463 m_proxy->loseContext(); |
464 } | 464 } |
465 | 465 |
466 PrioritizedTextureManager* LayerTreeHost::contentsTextureManager() const | 466 PrioritizedTextureManager* LayerTreeHost::contentsTextureManager() const |
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
762 | 762 |
763 void LayerTreeHost::setDeviceScaleFactor(float deviceScaleFactor) | 763 void LayerTreeHost::setDeviceScaleFactor(float deviceScaleFactor) |
764 { | 764 { |
765 if (deviceScaleFactor == m_deviceScaleFactor) | 765 if (deviceScaleFactor == m_deviceScaleFactor) |
766 return; | 766 return; |
767 m_deviceScaleFactor = deviceScaleFactor; | 767 m_deviceScaleFactor = deviceScaleFactor; |
768 | 768 |
769 setNeedsCommit(); | 769 setNeedsCommit(); |
770 } | 770 } |
771 | 771 |
772 void LayerTreeHost::animateLayers(double monotonicTime) | 772 void LayerTreeHost::animateLayers(base::TimeTicks time) |
773 { | 773 { |
774 if (!Settings::acceleratedAnimationEnabled() || !m_needsAnimateLayers) | 774 if (!Settings::acceleratedAnimationEnabled() || !m_needsAnimateLayers) |
775 return; | 775 return; |
776 | 776 |
777 TRACE_EVENT0("cc", "LayerTreeHostImpl::animateLayers"); | 777 TRACE_EVENT0("cc", "LayerTreeHostImpl::animateLayers"); |
778 m_needsAnimateLayers = animateLayersRecursive(m_rootLayer.get(), monotonicTi
me); | 778 m_needsAnimateLayers = animateLayersRecursive(m_rootLayer.get(), time); |
779 } | 779 } |
780 | 780 |
781 bool LayerTreeHost::animateLayersRecursive(Layer* current, double monotonicTime) | 781 bool LayerTreeHost::animateLayersRecursive(Layer* current, base::TimeTicks time) |
782 { | 782 { |
783 if (!current) | 783 if (!current) |
784 return false; | 784 return false; |
785 | 785 |
786 bool subtreeNeedsAnimateLayers = false; | 786 bool subtreeNeedsAnimateLayers = false; |
787 LayerAnimationController* currentController = current->layerAnimationControl
ler(); | 787 LayerAnimationController* currentController = current->layerAnimationControl
ler(); |
| 788 double monotonicTime = (time - base::TimeTicks()).InSecondsF(); |
788 currentController->animate(monotonicTime, 0); | 789 currentController->animate(monotonicTime, 0); |
789 | 790 |
790 // If the current controller still has an active animation, we must continue
animating layers. | 791 // If the current controller still has an active animation, we must continue
animating layers. |
791 if (currentController->hasActiveAnimation()) | 792 if (currentController->hasActiveAnimation()) |
792 subtreeNeedsAnimateLayers = true; | 793 subtreeNeedsAnimateLayers = true; |
793 | 794 |
794 for (size_t i = 0; i < current->children().size(); ++i) { | 795 for (size_t i = 0; i < current->children().size(); ++i) { |
795 if (animateLayersRecursive(current->children()[i].get(), monotonicTime)) | 796 if (animateLayersRecursive(current->children()[i].get(), time)) |
796 subtreeNeedsAnimateLayers = true; | 797 subtreeNeedsAnimateLayers = true; |
797 } | 798 } |
798 | 799 |
799 return subtreeNeedsAnimateLayers; | 800 return subtreeNeedsAnimateLayers; |
800 } | 801 } |
801 | 802 |
802 void LayerTreeHost::setAnimationEventsRecursive(const AnimationEventsVector& eve
nts, Layer* layer, double wallClockTime) | 803 void LayerTreeHost::setAnimationEventsRecursive(const AnimationEventsVector& eve
nts, Layer* layer, base::Time wallClockTime) |
803 { | 804 { |
804 if (!layer) | 805 if (!layer) |
805 return; | 806 return; |
806 | 807 |
807 for (size_t eventIndex = 0; eventIndex < events.size(); ++eventIndex) { | 808 for (size_t eventIndex = 0; eventIndex < events.size(); ++eventIndex) { |
808 if (layer->id() == events[eventIndex].layerId) { | 809 if (layer->id() == events[eventIndex].layerId) { |
809 if (events[eventIndex].type == AnimationEvent::Started) | 810 if (events[eventIndex].type == AnimationEvent::Started) |
810 layer->notifyAnimationStarted(events[eventIndex], wallClockTime)
; | 811 layer->notifyAnimationStarted(events[eventIndex], wallClockTime.
ToDoubleT()); |
811 else | 812 else |
812 layer->notifyAnimationFinished(wallClockTime); | 813 layer->notifyAnimationFinished(wallClockTime.ToDoubleT()); |
813 } | 814 } |
814 } | 815 } |
815 | 816 |
816 for (size_t childIndex = 0; childIndex < layer->children().size(); ++childIn
dex) | 817 for (size_t childIndex = 0; childIndex < layer->children().size(); ++childIn
dex) |
817 setAnimationEventsRecursive(events, layer->children()[childIndex].get(),
wallClockTime); | 818 setAnimationEventsRecursive(events, layer->children()[childIndex].get(),
wallClockTime); |
818 } | 819 } |
819 | 820 |
820 } // namespace cc | 821 } // namespace cc |
OLD | NEW |