summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gui/painting/qpainter.cpp27
-rw-r--r--src/gui/painting/qpainter_p.h2
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
};