diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/painting/qpainter.cpp | 27 | ||||
-rw-r--r-- | src/gui/painting/qpainter_p.h | 2 |
2 files changed, 8 insertions, 21 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); diff --git a/src/gui/painting/qpainter_p.h b/src/gui/painting/qpainter_p.h index c369922756..09de84f2b2 100644 --- a/src/gui/painting/qpainter_p.h +++ b/src/gui/painting/qpainter_p.h @@ -272,7 +272,7 @@ public: }; std::unique_ptr<QPaintEngine, QPaintEngineDestructor> engine; - QEmulationPaintEngine *emulationEngine = nullptr; + std::unique_ptr<QEmulationPaintEngine> emulationEngine; QPaintEngineEx *extended = nullptr; QBrush colorBrush; // for fill with solid color }; |