@@ -161,13 +161,16 @@ void DisplayWidget::performDisplayRender()
161
161
this ->size (),
162
162
m_displayParameters,
163
163
m_displayRenderProgress);
164
- connect (&m_displayRenderWatcher, &QFutureWatcher<QImage>::finished, this , [this ]() {
165
- if (this ->m_displayRenderWatcher .isFinished ()) {
166
- this ->setDisplayResult (this ->m_displayRenderWatcher .result ());
164
+
165
+ m_displayRenderWatcher = QSharedPointer<QFutureWatcher<QSharedPointer<DisplayResult>>>(new QFutureWatcher<QSharedPointer<DisplayResult>>());
166
+
167
+ connect (m_displayRenderWatcher.data (), &QFutureWatcher<QImage>::finished, this , [this ]() {
168
+ if (this ->m_displayRenderWatcher ->isFinished ()) {
169
+ this ->setDisplayResult (this ->m_displayRenderWatcher ->result ());
167
170
}
168
171
});
169
172
170
- m_displayRenderWatcher. setFuture (future);
173
+ m_displayRenderWatcher-> setFuture (future);
171
174
}
172
175
else {
173
176
m_displayResult = m_display->renderDisplay (this ->size (), m_displayParameters, QSharedPointer<PluginActionProgress>());
@@ -196,8 +199,8 @@ void DisplayWidget::resetRendering()
196
199
m_displayRenderProgress->setCancelled (true );
197
200
disconnect (m_displayRenderProgress.data (), SIGNAL (progressUpdate (QString, QVariant)), this , SLOT (handleDisplayRenderPreview (QString, QVariant)));
198
201
}
199
- if (m_displayRenderWatcher.isRunning ()) {
200
- m_displayRenderWatcher. cancel ();
202
+ if (! m_displayRenderWatcher.isNull () && m_displayRenderWatcher-> isRunning ()) {
203
+ m_displayRenderWatcher-> cancel ();
201
204
}
202
205
}
203
206
0 commit comments