diff options
author | Martin Jones <martin.jones@nokia.com> | 2012-01-18 16:21:50 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-01-20 00:30:09 +0100 |
commit | d9fd9ff55d4d8717cb35b7af39f9f5f39f9a3448 (patch) | |
tree | ff2f7725482a36506c1b5a34a7a69ff79ec10c67 /src/quick/items/qquickvisualdatamodel.cpp | |
parent | b1da5cb07922e786bd3223317651284b73159e82 (diff) |
Fix lockup in views due to endless polish loop.
It was possible to cause an endless polish loop in some rare cases.
Eliminate all calls to polish() within existing polish() code paths.
Cleanup delegate creation and cancelling in the cacheBuffer area.
Adjust first item position correctly when inserting/removing before
visibleItems list.
Change-Id: I508a2e6de8cb09d904466cbf5fb6b5dfd1e89c49
Reviewed-by: Bea Lam <bea.lam@nokia.com>
Diffstat (limited to 'src/quick/items/qquickvisualdatamodel.cpp')
-rw-r--r-- | src/quick/items/qquickvisualdatamodel.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/quick/items/qquickvisualdatamodel.cpp b/src/quick/items/qquickvisualdatamodel.cpp index 3de1e91f7f..d52aec0433 100644 --- a/src/quick/items/qquickvisualdatamodel.cpp +++ b/src/quick/items/qquickvisualdatamodel.cpp @@ -425,6 +425,10 @@ QQuickVisualDataModel::ReleaseFlags QQuickVisualDataModelPrivate::release(QObjec if (QQuickItem *item = qobject_cast<QQuickItem *>(object)) emitDestroyingItem(item); cacheItem->object = 0; + if (cacheItem->incubationTask) { + releaseIncubator(cacheItem->incubationTask); + cacheItem->incubationTask = 0; + } stat |= QQuickVisualModel::Destroyed; } else { stat |= QQuickVisualDataModel::Referenced; |