@@ -285,12 +285,6 @@ LayerRenderJobs QgsMapRendererJob::prepareJobs( QPainter *painter, QgsLabelingEn
285285 LayerRenderJob &job = layerJobs.last ();
286286 job.cached = false ;
287287 job.img = nullptr ;
288- job.blendMode = ml->blendMode ();
289- job.opacity = 1.0 ;
290- if ( QgsVectorLayer *vl = qobject_cast<QgsVectorLayer *>( ml ) )
291- {
292- job.opacity = vl->opacity ();
293- }
294288 job.layer = ml;
295289 job.renderingTime = -1 ;
296290
@@ -304,9 +298,23 @@ LayerRenderJobs QgsMapRendererJob::prepareJobs( QPainter *painter, QgsLabelingEn
304298 if ( mFeatureFilterProvider )
305299 job.context .setFeatureFilterProvider ( mFeatureFilterProvider );
306300
301+ bool hasStyleOverride = mSettings .layerStyleOverrides ().contains ( ml->id () );
302+ if ( hasStyleOverride )
303+ ml->styleManager ()->setOverrideStyle ( mSettings .layerStyleOverrides ().value ( ml->id () ) );
304+
305+ job.blendMode = ml->blendMode ();
306+ job.opacity = 1.0 ;
307+ if ( QgsVectorLayer *vl = qobject_cast<QgsVectorLayer *>( ml ) )
308+ {
309+ job.opacity = vl->opacity ();
310+ }
311+
307312 // if we can use the cache, let's do it and avoid rendering!
308313 if ( mCache && mCache ->hasCacheImage ( ml->id () ) )
309314 {
315+ if ( hasStyleOverride )
316+ ml->styleManager ()->restoreOverrideStyle ();
317+
310318 job.cached = true ;
311319 job.imageInitialized = true ;
312320 job.img = new QImage ( mCache ->cacheImage ( ml->id () ) );
@@ -327,6 +335,9 @@ LayerRenderJobs QgsMapRendererJob::prepareJobs( QPainter *painter, QgsLabelingEn
327335 mSettings .outputImageFormat () );
328336 if ( mypFlattenedImage->isNull () )
329337 {
338+ if ( hasStyleOverride )
339+ ml->styleManager ()->restoreOverrideStyle ();
340+
330341 mErrors .append ( Error ( ml->id (), tr ( " Insufficient memory for image %1x%2" ).arg ( mSettings .outputSize ().width () ).arg ( mSettings .outputSize ().height () ) ) );
331342 delete mypFlattenedImage;
332343 layerJobs.removeLast ();
@@ -339,18 +350,13 @@ LayerRenderJobs QgsMapRendererJob::prepareJobs( QPainter *painter, QgsLabelingEn
339350 job.context .setPainter ( mypPainter );
340351 }
341352
342- bool hasStyleOverride = mSettings .layerStyleOverrides ().contains ( ml->id () );
343- if ( hasStyleOverride )
344- ml->styleManager ()->setOverrideStyle ( mSettings .layerStyleOverrides ().value ( ml->id () ) );
345-
346353 QTime layerTime;
347354 layerTime.start ();
348355 job.renderer = ml->createMapRenderer ( job.context );
349356 job.renderingTime = layerTime.elapsed (); // include job preparation time in layer rendering time
350357
351358 if ( hasStyleOverride )
352359 ml->styleManager ()->restoreOverrideStyle ();
353-
354360 } // while (li.hasPrevious())
355361
356362 return layerJobs;
0 commit comments