| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) Research In Motion Limited 2010. All rights reserved. | 2 * Copyright (C) Research In Motion Limited 2010. All rights reserved. |
| 3 * | 3 * |
| 4 * This library is free software; you can redistribute it and/or | 4 * This library is free software; you can redistribute it and/or |
| 5 * modify it under the terms of the GNU Library General Public | 5 * modify it under the terms of the GNU Library General Public |
| 6 * License as published by the Free Software Foundation; either | 6 * License as published by the Free Software Foundation; either |
| 7 * version 2 of the License, or (at your option) any later version. | 7 * version 2 of the License, or (at your option) any later version. |
| 8 * | 8 * |
| 9 * This library is distributed in the hope that it will be useful, | 9 * This library is distributed in the hope that it will be useful, |
| 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| (...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 290 | 290 |
| 291 // We allow cycles in SVGDocumentExtensions reference sets in order to avoid
expensive | 291 // We allow cycles in SVGDocumentExtensions reference sets in order to avoid
expensive |
| 292 // reference graph adjustments on changes, so we need to break possible cycl
es here. | 292 // reference graph adjustments on changes, so we need to break possible cycl
es here. |
| 293 // This strong reference is safe, as it is guaranteed that this set will be
emptied | 293 // This strong reference is safe, as it is guaranteed that this set will be
emptied |
| 294 // at the end of recursion. | 294 // at the end of recursion. |
| 295 DEFINE_STATIC_LOCAL(OwnPtrWillBePersistent<SVGElementSet>, invalidatingDepen
dencies, (adoptPtrWillBeNoop(new SVGElementSet))); | 295 DEFINE_STATIC_LOCAL(OwnPtrWillBePersistent<SVGElementSet>, invalidatingDepen
dencies, (adoptPtrWillBeNoop(new SVGElementSet))); |
| 296 | 296 |
| 297 for (SVGElement* element : *dependencies) { | 297 for (SVGElement* element : *dependencies) { |
| 298 if (LayoutObject* layoutObject = element->layoutObject()) { | 298 if (LayoutObject* layoutObject = element->layoutObject()) { |
| 299 if (UNLIKELY(!invalidatingDependencies->add(element).isNewEntry)) { | 299 if (UNLIKELY(!invalidatingDependencies->add(element).isNewEntry)) { |
| 300 // Reference cycle: we are in process of invalidating this depen
dant. | 300 // Reference cycle: we are in process of invalidating this depen
dent. |
| 301 continue; | 301 continue; |
| 302 } | 302 } |
| 303 | 303 |
| 304 LayoutSVGResourceContainer::markForLayoutAndParentResourceInvalidati
on(layoutObject, needsLayout); | 304 LayoutSVGResourceContainer::markForLayoutAndParentResourceInvalidati
on(layoutObject, needsLayout); |
| 305 invalidatingDependencies->remove(element); | 305 invalidatingDependencies->remove(element); |
| 306 } | 306 } |
| 307 } | 307 } |
| 308 } | 308 } |
| 309 | 309 |
| 310 void LayoutSVGResourceContainer::markForLayoutAndParentResourceInvalidation(Layo
utObject* object, bool needsLayout) | 310 void LayoutSVGResourceContainer::markForLayoutAndParentResourceInvalidation(Layo
utObject* object, bool needsLayout) |
| (...skipping 15 matching lines...) Expand all Loading... |
| 326 // This will process the rest of the ancestors. | 326 // This will process the rest of the ancestors. |
| 327 toLayoutSVGResourceContainer(current)->removeAllClientsFromCache(); | 327 toLayoutSVGResourceContainer(current)->removeAllClientsFromCache(); |
| 328 break; | 328 break; |
| 329 } | 329 } |
| 330 | 330 |
| 331 current = current->parent(); | 331 current = current->parent(); |
| 332 } | 332 } |
| 333 } | 333 } |
| 334 | 334 |
| 335 } | 335 } |
| OLD | NEW |