summaryrefslogtreecommitdiffstats
path: root/src/widgets/kernel/qwidgetbackingstore_p.h
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2019-08-15 14:42:12 +0200
committerMarc Mutz <marc.mutz@kdab.com>2019-08-17 09:51:29 +0200
commitcb3e1e551f340ce1e6280123d8b5411b3c1c96d8 (patch)
tree01e5a381ed47ee55702055a25ed0f62b641c5c0e /src/widgets/kernel/qwidgetbackingstore_p.h
parent3e79151fa2552edd2e58c246d136f1fd0b2a4c86 (diff)
QWidgetBackingStore: clean up around dirtyOnScreenWidgets
The QVector dirtyOnScreenWidgets was aggregated by pointer, which makes no sense, as a QVector is just as large as a pointer (and even in Qt 6, when it will be larger, it's not going to be horrible). But this complicated the code quite a bit. Aggregate by value instead (it's just one of three such vectors now). Drive-by fixes: - use QVector::removeAll() instead of rolling your own - port two indexed loops to ranged ones. In the first case, it's safe, as the loop body clearly doesn't touch the iteratee (it's just a std::accumulate). In the second, the question no longer applies, as we're now using a consume loop. Change-Id: Icd4ac13bb4a6f9a783f0adf2fb6a5bdfacd1f91a Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'src/widgets/kernel/qwidgetbackingstore_p.h')
-rw-r--r--src/widgets/kernel/qwidgetbackingstore_p.h35
1 files changed, 3 insertions, 32 deletions
diff --git a/src/widgets/kernel/qwidgetbackingstore_p.h b/src/widgets/kernel/qwidgetbackingstore_p.h
index 9409ba7832..08042445bf 100644
--- a/src/widgets/kernel/qwidgetbackingstore_p.h
+++ b/src/widgets/kernel/qwidgetbackingstore_p.h
@@ -129,7 +129,7 @@ private:
QRegion dirtyFromPreviousSync;
QVector<QWidget *> dirtyWidgets;
QVector<QWidget *> dirtyRenderToTextureWidgets;
- QVector<QWidget *> *dirtyOnScreenWidgets;
+ QVector<QWidget *> dirtyOnScreenWidgets;
QList<QWidget *> staticWidgets;
QBackingStore *store;
uint updateRequestSent : 1;
@@ -190,17 +190,6 @@ private:
}
}
- inline void dirtyWidgetsRemoveAll(QWidget *widget)
- {
- int i = 0;
- while (i < dirtyWidgets.size()) {
- if (dirtyWidgets.at(i) == widget)
- dirtyWidgets.remove(i);
- else
- ++i;
- }
- }
-
inline void addStaticWidget(QWidget *widget)
{
if (!widget)
@@ -246,26 +235,8 @@ private:
if (!widget)
return;
- if (!dirtyOnScreenWidgets) {
- dirtyOnScreenWidgets = new QVector<QWidget *>;
- dirtyOnScreenWidgets->append(widget);
- } else if (!dirtyOnScreenWidgets->contains(widget)) {
- dirtyOnScreenWidgets->append(widget);
- }
- }
-
- inline void dirtyOnScreenWidgetsRemoveAll(QWidget *widget)
- {
- if (!widget || !dirtyOnScreenWidgets)
- return;
-
- int i = 0;
- while (i < dirtyOnScreenWidgets->size()) {
- if (dirtyOnScreenWidgets->at(i) == widget)
- dirtyOnScreenWidgets->remove(i);
- else
- ++i;
- }
+ if (!dirtyOnScreenWidgets.contains(widget))
+ dirtyOnScreenWidgets.append(widget);
}
inline void resetWidget(QWidget *widget)