void RenderNamedFlowThread::addRegionToThread(RenderRegion* renderRegion) { ASSERT(renderRegion); if (m_regionList.isEmpty()) m_regionList.add(renderRegion); else { // Find the first region "greater" than renderRegion. RenderRegionList::iterator it = m_regionList.begin(); while (it != m_regionList.end() && !compareRenderRegions(renderRegion, *it)) ++it; m_regionList.insertBefore(it, renderRegion); } resetMarkForDestruction(); ASSERT(!renderRegion->isValid()); if (renderRegion->parentNamedFlowThread()) { if (renderRegion->parentNamedFlowThread()->dependsOn(this)) { // Register ourself to get a notification when the state changes. renderRegion->parentNamedFlowThread()->m_observerThreadsSet.add(this); return; } addDependencyOnFlowThread(renderRegion->parentNamedFlowThread()); } renderRegion->setIsValid(true); invalidateRegions(); }
// This helper function adds a region to a list preserving the order property of the list. static void addRegionToList(RenderRegionList& regionList, RenderRegion* renderRegion) { if (regionList.isEmpty()) regionList.add(renderRegion); else { // Find the first region "greater" than renderRegion. RenderRegionList::iterator it = regionList.begin(); while (it != regionList.end() && !compareRenderRegions(renderRegion, *it)) ++it; regionList.insertBefore(it, renderRegion); } }