Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(45)

Side by Side Diff: Source/core/animation/AnimationPlayer.cpp

Issue 946323002: Animations: Introduce compositor AnimationPlayer and AnimationTimeline. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fix the order. Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 21 matching lines...) Expand all
32 #include "core/animation/AnimationPlayer.h" 32 #include "core/animation/AnimationPlayer.h"
33 33
34 #include "core/animation/Animation.h" 34 #include "core/animation/Animation.h"
35 #include "core/animation/AnimationTimeline.h" 35 #include "core/animation/AnimationTimeline.h"
36 #include "core/dom/Document.h" 36 #include "core/dom/Document.h"
37 #include "core/dom/ExceptionCode.h" 37 #include "core/dom/ExceptionCode.h"
38 #include "core/events/AnimationPlayerEvent.h" 38 #include "core/events/AnimationPlayerEvent.h"
39 #include "core/frame/UseCounter.h" 39 #include "core/frame/UseCounter.h"
40 #include "core/inspector/InspectorInstrumentation.h" 40 #include "core/inspector/InspectorInstrumentation.h"
41 #include "core/inspector/InspectorTraceEvents.h" 41 #include "core/inspector/InspectorTraceEvents.h"
42 #include "platform/RuntimeEnabledFeatures.h"
42 #include "platform/TraceEvent.h" 43 #include "platform/TraceEvent.h"
44 #include "public/platform/Platform.h"
45 #include "public/platform/WebCompositorAnimationPlayer.h"
46 #include "public/platform/WebCompositorSupport.h"
43 #include "wtf/MathExtras.h" 47 #include "wtf/MathExtras.h"
44 48
45 namespace blink { 49 namespace blink {
46 50
47 namespace { 51 namespace {
48 52
49 static unsigned nextSequenceNumber() 53 static unsigned nextSequenceNumber()
50 { 54 {
51 static unsigned next = 0; 55 static unsigned next = 0;
52 return ++next; 56 return ++next;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 , m_held(true) 88 , m_held(true)
85 , m_isPausedForTesting(false) 89 , m_isPausedForTesting(false)
86 , m_outdated(false) 90 , m_outdated(false)
87 , m_finished(true) 91 , m_finished(true)
88 , m_compositorState(nullptr) 92 , m_compositorState(nullptr)
89 , m_compositorPending(false) 93 , m_compositorPending(false)
90 , m_compositorGroup(0) 94 , m_compositorGroup(0)
91 , m_currentTimePending(false) 95 , m_currentTimePending(false)
92 , m_stateIsBeingUpdated(false) 96 , m_stateIsBeingUpdated(false)
93 { 97 {
98 createCompositorPlayer();
99
94 if (m_content) { 100 if (m_content) {
95 if (m_content->player()) { 101 if (m_content->player()) {
96 m_content->player()->cancel(); 102 m_content->player()->cancel();
97 m_content->player()->setSource(0); 103 m_content->player()->setSource(0);
98 } 104 }
99 m_content->attach(this); 105 m_content->attach(this);
100 } 106 }
101 } 107 }
102 108
103 AnimationPlayer::~AnimationPlayer() 109 AnimationPlayer::~AnimationPlayer()
104 { 110 {
105 #if !ENABLE(OILPAN) 111 #if !ENABLE(OILPAN)
106 if (m_content) 112 if (m_content)
107 m_content->detach(); 113 m_content->detach();
108 if (m_timeline) 114 if (m_timeline)
109 m_timeline->playerDestroyed(this); 115 m_timeline->playerDestroyed(this);
110 #endif 116 #endif
117
118 destroyCompositorPlayer();
111 } 119 }
112 120
113 double AnimationPlayer::sourceEnd() const 121 double AnimationPlayer::sourceEnd() const
114 { 122 {
115 return m_content ? m_content->endTimeInternal() : 0; 123 return m_content ? m_content->endTimeInternal() : 0;
116 } 124 }
117 125
118 bool AnimationPlayer::limited(double currentTime) const 126 bool AnimationPlayer::limited(double currentTime) const
119 { 127 {
120 return (m_playbackRate < 0 && currentTime <= 0) || (m_playbackRate > 0 && cu rrentTime >= sourceEnd()); 128 return (m_playbackRate < 0 && currentTime <= 0) || (m_playbackRate > 0 && cu rrentTime >= sourceEnd());
(...skipping 702 matching lines...) Expand 10 before | Expand all | Expand 10 after
823 ASSERT(!m_stateIsBeingUpdated); 831 ASSERT(!m_stateIsBeingUpdated);
824 m_stateIsBeingUpdated = true; 832 m_stateIsBeingUpdated = true;
825 } 833 }
826 834
827 void AnimationPlayer::endUpdatingState() 835 void AnimationPlayer::endUpdatingState()
828 { 836 {
829 ASSERT(m_stateIsBeingUpdated); 837 ASSERT(m_stateIsBeingUpdated);
830 m_stateIsBeingUpdated = false; 838 m_stateIsBeingUpdated = false;
831 } 839 }
832 840
841 void AnimationPlayer::createCompositorPlayer()
842 {
843 if (Platform::current()->compositorSupport() && RuntimeEnabledFeatures::comp ositorAnimationTimelinesEnabled()) {
dstockwell 2015/03/16 00:11:27 For consistency I think it's best to check the run
loyso (OOO) 2015/03/18 06:59:43 Done.
844 m_compositorPlayer = adoptPtr(Platform::current()->compositorSupport()-> createAnimationPlayer());
845 if (m_compositorPlayer)
dstockwell 2015/03/16 00:11:27 How can this be null?
loyso (OOO) 2015/03/18 06:59:43 If chromium side isn't landed and we run with --en
dstockwell 2015/03/18 07:17:18 Yes it sounds like an invalid configuration, just
loyso (OOO) 2015/03/19 02:32:24 Done.
loyso (OOO) 2015/03/24 02:50:56 I recall now! In webkit_unit_tests it crashes. We
loyso (OOO) 2015/03/24 02:55:17 UPDATE: It's ok since we have a flag now :)
846 m_compositorPlayer->setAnimationDelegate(this);
847 }
848 }
849
850 void AnimationPlayer::destroyCompositorPlayer()
851 {
852 if (m_compositorPlayer)
853 m_compositorPlayer->setAnimationDelegate(nullptr);
854 m_compositorPlayer.clear();
855 }
856
857 void AnimationPlayer::notifyAnimationStarted(double monotonicTime, int group)
858 {
859 timeline()->document()->compositorPendingAnimations().notifyCompositorAnimat ionStarted(monotonicTime, group);
dstockwell 2015/03/16 00:11:27 ASSERT compositorAnimationTimelinesEnabled()
loyso (OOO) 2015/03/18 06:59:43 Done.
860 }
861
833 AnimationPlayer::PlayStateUpdateScope::PlayStateUpdateScope(AnimationPlayer& pla yer, TimingUpdateReason reason, CompositorPendingChange compositorPendingChange) 862 AnimationPlayer::PlayStateUpdateScope::PlayStateUpdateScope(AnimationPlayer& pla yer, TimingUpdateReason reason, CompositorPendingChange compositorPendingChange)
834 : m_player(player) 863 : m_player(player)
835 , m_initialPlayState(m_player->playStateInternal()) 864 , m_initialPlayState(m_player->playStateInternal())
836 , m_compositorPendingChange(compositorPendingChange) 865 , m_compositorPendingChange(compositorPendingChange)
837 { 866 {
838 m_player->beginUpdatingState(); 867 m_player->beginUpdatingState();
839 m_player->updateCurrentTimingState(reason); 868 m_player->updateCurrentTimingState(reason);
840 } 869 }
841 870
842 AnimationPlayer::PlayStateUpdateScope::~PlayStateUpdateScope() 871 AnimationPlayer::PlayStateUpdateScope::~PlayStateUpdateScope()
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
936 visitor->trace(m_content); 965 visitor->trace(m_content);
937 visitor->trace(m_timeline); 966 visitor->trace(m_timeline);
938 visitor->trace(m_pendingFinishedEvent); 967 visitor->trace(m_pendingFinishedEvent);
939 visitor->trace(m_finishedPromise); 968 visitor->trace(m_finishedPromise);
940 visitor->trace(m_readyPromise); 969 visitor->trace(m_readyPromise);
941 EventTargetWithInlineData::trace(visitor); 970 EventTargetWithInlineData::trace(visitor);
942 ActiveDOMObject::trace(visitor); 971 ActiveDOMObject::trace(visitor);
943 } 972 }
944 973
945 } // namespace 974 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698