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

Side by Side Diff: Source/core/svg/animation/SVGSMILElement.cpp

Issue 308793003: SVG: Add comment to |loopbreaker| local static var that it is safe (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 1229 matching lines...) Expand 10 before | Expand all | Expand 10 after
1240 smilEndEventSender().dispatchEventSoon(this); 1240 smilEndEventSender().dispatchEventSoon(this);
1241 } 1241 }
1242 1242
1243 m_nextProgressTime = calculateNextProgressTime(elapsed); 1243 m_nextProgressTime = calculateNextProgressTime(elapsed);
1244 return animationIsContributing; 1244 return animationIsContributing;
1245 } 1245 }
1246 1246
1247 void SVGSMILElement::notifyDependentsIntervalChanged() 1247 void SVGSMILElement::notifyDependentsIntervalChanged()
1248 { 1248 {
1249 ASSERT(m_intervalBegin.isFinite()); 1249 ASSERT(m_intervalBegin.isFinite());
1250 // |loopbreaker| is used to avoid infinite recursions which may be caused fr om:
haraken 2014/05/30 01:39:45 loopBreaker
1251 // |notifyDependentsIntervalChanged| -> |createInstanceTimesFromSyncbase| -> |add{Begin,End}Time| -> |{begin,end}TimeChanged| -> |notifyDependentsIntervalCh anged|
1252 // |loopbreaker| is defined as a Persistent<HeapHashSet<Member<SVGSMILElemen t> > >. This is safe because it is guaranteed to be empty after the root |notify DependentsIntervalChanged| has exit.
haraken 2014/05/30 01:39:45 this is safe => this won't cause leaks has exit =>
1250 DEFINE_STATIC_LOCAL(OwnPtrWillBePersistent<WillBeHeapHashSet<RawPtrWillBeMem ber<SVGSMILElement> > >, loopBreaker, (adoptPtrWillBeNoop(new WillBeHeapHashSet< RawPtrWillBeMember<SVGSMILElement> >()))); 1253 DEFINE_STATIC_LOCAL(OwnPtrWillBePersistent<WillBeHeapHashSet<RawPtrWillBeMem ber<SVGSMILElement> > >, loopBreaker, (adoptPtrWillBeNoop(new WillBeHeapHashSet< RawPtrWillBeMember<SVGSMILElement> >())));
1251 if (!loopBreaker->add(this).isNewEntry) 1254 if (!loopBreaker->add(this).isNewEntry)
1252 return; 1255 return;
1253 1256
1254 TimeDependentSet::iterator end = m_syncBaseDependents.end(); 1257 TimeDependentSet::iterator end = m_syncBaseDependents.end();
1255 for (TimeDependentSet::iterator it = m_syncBaseDependents.begin(); it != end ; ++it) { 1258 for (TimeDependentSet::iterator it = m_syncBaseDependents.begin(); it != end ; ++it) {
1256 SVGSMILElement* dependent = *it; 1259 SVGSMILElement* dependent = *it;
1257 dependent->createInstanceTimesFromSyncbase(this); 1260 dependent->createInstanceTimesFromSyncbase(this);
1258 } 1261 }
1259 1262
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
1352 void SVGSMILElement::trace(Visitor* visitor) 1355 void SVGSMILElement::trace(Visitor* visitor)
1353 { 1356 {
1354 visitor->trace(m_targetElement); 1357 visitor->trace(m_targetElement);
1355 visitor->trace(m_timeContainer); 1358 visitor->trace(m_timeContainer);
1356 visitor->trace(m_conditions); 1359 visitor->trace(m_conditions);
1357 visitor->trace(m_syncBaseDependents); 1360 visitor->trace(m_syncBaseDependents);
1358 SVGElement::trace(visitor); 1361 SVGElement::trace(visitor);
1359 } 1362 }
1360 1363
1361 } 1364 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698