OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2008 Apple 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 | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 1136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1147 connectSyncBaseConditions(); | 1147 connectSyncBaseConditions(); |
1148 | 1148 |
1149 if (!m_interval.begin.isFinite()) { | 1149 if (!m_interval.begin.isFinite()) { |
1150 ASSERT(m_activeState == Inactive); | 1150 ASSERT(m_activeState == Inactive); |
1151 m_nextProgressTime = SMILTime::unresolved(); | 1151 m_nextProgressTime = SMILTime::unresolved(); |
1152 return false; | 1152 return false; |
1153 } | 1153 } |
1154 | 1154 |
1155 if (elapsed < m_interval.begin) { | 1155 if (elapsed < m_interval.begin) { |
1156 ASSERT(m_activeState != Active); | 1156 ASSERT(m_activeState != Active); |
1157 if (m_activeState == Frozen) { | 1157 bool isFrozen = (m_activeState == Frozen); |
| 1158 if (isFrozen) { |
1158 if (this == resultElement) | 1159 if (this == resultElement) |
1159 resetAnimatedType(); | 1160 resetAnimatedType(); |
1160 updateAnimation(m_lastPercent, m_lastRepeat, resultElement); | 1161 updateAnimation(m_lastPercent, m_lastRepeat, resultElement); |
1161 } | 1162 } |
1162 m_nextProgressTime = m_interval.begin; | 1163 m_nextProgressTime = m_interval.begin; |
1163 return false; | 1164 // If the animation is frozen, it's still contributing. |
| 1165 return isFrozen; |
1164 } | 1166 } |
1165 | 1167 |
1166 m_previousIntervalBegin = m_interval.begin; | 1168 m_previousIntervalBegin = m_interval.begin; |
1167 | 1169 |
1168 if (m_isWaitingForFirstInterval) { | 1170 if (m_isWaitingForFirstInterval) { |
1169 m_isWaitingForFirstInterval = false; | 1171 m_isWaitingForFirstInterval = false; |
1170 resolveFirstInterval(); | 1172 resolveFirstInterval(); |
1171 } | 1173 } |
1172 | 1174 |
1173 // This call may obtain a new interval -- never call calculateAnimationPerce
ntAndRepeat() before! | 1175 // This call may obtain a new interval -- never call calculateAnimationPerce
ntAndRepeat() before! |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1344 void SVGSMILElement::trace(Visitor* visitor) | 1346 void SVGSMILElement::trace(Visitor* visitor) |
1345 { | 1347 { |
1346 visitor->trace(m_targetElement); | 1348 visitor->trace(m_targetElement); |
1347 visitor->trace(m_timeContainer); | 1349 visitor->trace(m_timeContainer); |
1348 visitor->trace(m_conditions); | 1350 visitor->trace(m_conditions); |
1349 visitor->trace(m_syncBaseDependents); | 1351 visitor->trace(m_syncBaseDependents); |
1350 SVGElement::trace(visitor); | 1352 SVGElement::trace(visitor); |
1351 } | 1353 } |
1352 | 1354 |
1353 } | 1355 } |
OLD | NEW |