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 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
164 void LayoutSVGResourceContainer::removeClient(LayoutObject* client) | 164 void LayoutSVGResourceContainer::removeClient(LayoutObject* client) |
165 { | 165 { |
166 ASSERT(client); | 166 ASSERT(client); |
167 removeClientFromCache(client, false); | 167 removeClientFromCache(client, false); |
168 m_clients.remove(client); | 168 m_clients.remove(client); |
169 } | 169 } |
170 | 170 |
171 void LayoutSVGResourceContainer::addClientLayer(Node* node) | 171 void LayoutSVGResourceContainer::addClientLayer(Node* node) |
172 { | 172 { |
173 ASSERT(node); | 173 ASSERT(node); |
174 if (!node->renderer() || !node->renderer()->hasLayer()) | 174 if (!node->layoutObject() || !node->layoutObject()->hasLayer()) |
175 return; | 175 return; |
176 m_clientLayers.add(toLayoutBoxModelObject(node->renderer())->layer()); | 176 m_clientLayers.add(toLayoutBoxModelObject(node->layoutObject())->layer()); |
177 clearInvalidationMask(); | 177 clearInvalidationMask(); |
178 } | 178 } |
179 | 179 |
180 void LayoutSVGResourceContainer::addClientLayer(Layer* client) | 180 void LayoutSVGResourceContainer::addClientLayer(Layer* client) |
181 { | 181 { |
182 ASSERT(client); | 182 ASSERT(client); |
183 m_clientLayers.add(client); | 183 m_clientLayers.add(client); |
184 clearInvalidationMask(); | 184 clearInvalidationMask(); |
185 } | 185 } |
186 | 186 |
(...skipping 25 matching lines...) Expand all Loading... |
212 OwnPtrWillBeRawPtr<SVGDocumentExtensions::SVGPendingElements> clients(extens
ions.removePendingResource(m_id)); | 212 OwnPtrWillBeRawPtr<SVGDocumentExtensions::SVGPendingElements> clients(extens
ions.removePendingResource(m_id)); |
213 | 213 |
214 // Cache us with the new id. | 214 // Cache us with the new id. |
215 extensions.addResource(m_id, this); | 215 extensions.addResource(m_id, this); |
216 | 216 |
217 // Update cached resources of pending clients. | 217 // Update cached resources of pending clients. |
218 const SVGDocumentExtensions::SVGPendingElements::const_iterator end = client
s->end(); | 218 const SVGDocumentExtensions::SVGPendingElements::const_iterator end = client
s->end(); |
219 for (SVGDocumentExtensions::SVGPendingElements::const_iterator it = clients-
>begin(); it != end; ++it) { | 219 for (SVGDocumentExtensions::SVGPendingElements::const_iterator it = clients-
>begin(); it != end; ++it) { |
220 ASSERT((*it)->hasPendingResources()); | 220 ASSERT((*it)->hasPendingResources()); |
221 extensions.clearHasPendingResourcesIfPossible(*it); | 221 extensions.clearHasPendingResourcesIfPossible(*it); |
222 LayoutObject* renderer = (*it)->renderer(); | 222 LayoutObject* renderer = (*it)->layoutObject(); |
223 if (!renderer) | 223 if (!renderer) |
224 continue; | 224 continue; |
225 | 225 |
226 StyleDifference diff; | 226 StyleDifference diff; |
227 diff.setNeedsFullLayout(); | 227 diff.setNeedsFullLayout(); |
228 SVGResourcesCache::clientStyleChanged(renderer, diff, renderer->styleRef
()); | 228 SVGResourcesCache::clientStyleChanged(renderer, diff, renderer->styleRef
()); |
229 renderer->setNeedsLayoutAndFullPaintInvalidation(); | 229 renderer->setNeedsLayoutAndFullPaintInvalidation(); |
230 } | 230 } |
231 } | 231 } |
232 | 232 |
(...skipping 19 matching lines...) Expand all Loading... |
252 | 252 |
253 // We allow cycles in SVGDocumentExtensions reference sets in order to avoid
expensive | 253 // We allow cycles in SVGDocumentExtensions reference sets in order to avoid
expensive |
254 // reference graph adjustments on changes, so we need to break possible cycl
es here. | 254 // reference graph adjustments on changes, so we need to break possible cycl
es here. |
255 // This strong reference is safe, as it is guaranteed that this set will be
emptied | 255 // This strong reference is safe, as it is guaranteed that this set will be
emptied |
256 // at the end of recursion. | 256 // at the end of recursion. |
257 typedef WillBeHeapHashSet<RawPtrWillBeMember<SVGElement>> SVGElementSet; | 257 typedef WillBeHeapHashSet<RawPtrWillBeMember<SVGElement>> SVGElementSet; |
258 DEFINE_STATIC_LOCAL(OwnPtrWillBePersistent<SVGElementSet>, invalidatingDepen
dencies, (adoptPtrWillBeNoop(new SVGElementSet))); | 258 DEFINE_STATIC_LOCAL(OwnPtrWillBePersistent<SVGElementSet>, invalidatingDepen
dencies, (adoptPtrWillBeNoop(new SVGElementSet))); |
259 | 259 |
260 SVGElementSet::iterator end = dependencies->end(); | 260 SVGElementSet::iterator end = dependencies->end(); |
261 for (SVGElementSet::iterator it = dependencies->begin(); it != end; ++it) { | 261 for (SVGElementSet::iterator it = dependencies->begin(); it != end; ++it) { |
262 if (LayoutObject* renderer = (*it)->renderer()) { | 262 if (LayoutObject* renderer = (*it)->layoutObject()) { |
263 if (UNLIKELY(!invalidatingDependencies->add(*it).isNewEntry)) { | 263 if (UNLIKELY(!invalidatingDependencies->add(*it).isNewEntry)) { |
264 // Reference cycle: we are in process of invalidating this depen
dant. | 264 // Reference cycle: we are in process of invalidating this depen
dant. |
265 continue; | 265 continue; |
266 } | 266 } |
267 | 267 |
268 LayoutSVGResourceContainer::markForLayoutAndParentResourceInvalidati
on(renderer, needsLayout); | 268 LayoutSVGResourceContainer::markForLayoutAndParentResourceInvalidati
on(renderer, needsLayout); |
269 invalidatingDependencies->remove(*it); | 269 invalidatingDependencies->remove(*it); |
270 } | 270 } |
271 } | 271 } |
272 } | 272 } |
(...skipping 17 matching lines...) Expand all Loading... |
290 // This will process the rest of the ancestors. | 290 // This will process the rest of the ancestors. |
291 toLayoutSVGResourceContainer(current)->removeAllClientsFromCache(); | 291 toLayoutSVGResourceContainer(current)->removeAllClientsFromCache(); |
292 break; | 292 break; |
293 } | 293 } |
294 | 294 |
295 current = current->parent(); | 295 current = current->parent(); |
296 } | 296 } |
297 } | 297 } |
298 | 298 |
299 } | 299 } |
OLD | NEW |