diff options
Diffstat (limited to 'src/quick/items/qquickwindow.cpp')
-rw-r--r-- | src/quick/items/qquickwindow.cpp | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp index bc8558e1d8..7f62267859 100644 --- a/src/quick/items/qquickwindow.cpp +++ b/src/quick/items/qquickwindow.cpp @@ -258,23 +258,16 @@ void QQuickWindowPrivate::polishItems() { int maxPolishCycles = 100000; - int removedItems; - do { - removedItems = 0; + while (!itemsToPolish.isEmpty() && --maxPolishCycles > 0) { QSet<QQuickItem *> itms = itemsToPolish; + itemsToPolish.clear(); for (QSet<QQuickItem *>::iterator it = itms.begin(); it != itms.end(); ++it) { QQuickItem *item = *it; - QQuickItemPrivate *itemPrivate = QQuickItemPrivate::get(item); - - if (item->isVisible() || (itemPrivate->extra.isAllocated() && itemPrivate->extra->effectRefCount>0)) { - itemPrivate->polishScheduled = false; - itemsToPolish.remove(item); - item->updatePolish(); - ++removedItems; - } + QQuickItemPrivate::get(item)->polishScheduled = false; + item->updatePolish(); } - } while (removedItems > 0 && --maxPolishCycles > 0); + } if (maxPolishCycles == 0) qWarning("QQuickWindow: possible QQuickItem::polish() loop"); |