diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2020-06-01 11:54:45 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2021-07-16 06:36:06 +0200 |
commit | ff1c12376ba2a99be50d34f0c6a7ac9afd725b10 (patch) | |
tree | b7c0dc08b2d3f248729b02be76a6073d42679f4c /src/gui/painting/qpainter.cpp | |
parent | e71b9fb4658991bd509c784b98410af221583dd5 (diff) |
QPainter: replace manual memory management [4/5]: emulationEngine
Use unique_ptr to indicate ownership.
The QPainter dtor is now empty, = default it.
As a drive-by, fix a non-sensical if (p) p = nullptr;
Change-Id: I5c811eb7de6abf8a9f279cf3630d5f86db6b3864
Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
Diffstat (limited to 'src/gui/painting/qpainter.cpp')
-rw-r--r-- | src/gui/painting/qpainter.cpp | 27 |
1 files changed, 7 insertions, 20 deletions
diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp index 6a0d431a50..82a96960a8 100644 --- a/src/gui/painting/qpainter.cpp +++ b/src/gui/painting/qpainter.cpp @@ -206,29 +206,24 @@ void QPainterPrivate::checkEmulation() return; if (doEmulation) { - if (extended != emulationEngine) { + if (extended != emulationEngine.get()) { if (!emulationEngine) - emulationEngine = new QEmulationPaintEngine(extended); - extended = emulationEngine; + emulationEngine = std::make_unique<QEmulationPaintEngine>(extended); + extended = emulationEngine.get(); extended->setState(state.get()); } - } else if (emulationEngine == extended) { + } else if (emulationEngine.get() == extended) { extended = emulationEngine->real_engine; } } - QPainterPrivate::QPainterPrivate(QPainter *painter) : q_ptr(painter), txinv(0), inDestructor(false) { - } QPainterPrivate::~QPainterPrivate() -{ - delete emulationEngine; -} - + = default; QTransform QPainterPrivate::viewTransform() const { @@ -346,7 +341,6 @@ void QPainterPrivate::detachPainterPrivate(QPainter *q) if (emulationEngine) { extended = emulationEngine->real_engine; - delete emulationEngine; emulationEngine = nullptr; } } @@ -1918,15 +1912,8 @@ bool QPainter::end() } d->engine.reset(); - - if (d->emulationEngine) { - delete d->emulationEngine; - d->emulationEngine = nullptr; - } - - if (d->extended) { - d->extended = nullptr; - } + d->emulationEngine = nullptr; + d->extended = nullptr; qt_cleanup_painter_state(d); |