diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2019-08-15 14:42:12 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2019-08-17 09:51:29 +0200 |
commit | cb3e1e551f340ce1e6280123d8b5411b3c1c96d8 (patch) | |
tree | 01e5a381ed47ee55702055a25ed0f62b641c5c0e /src/widgets/kernel/qwidgetbackingstore_p.h | |
parent | 3e79151fa2552edd2e58c246d136f1fd0b2a4c86 (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.h | 35 |
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) |