@@ -285,12 +285,6 @@ LayerRenderJobs QgsMapRendererJob::prepareJobs( QPainter *painter, QgsLabelingEn
285
285
LayerRenderJob &job = layerJobs.last ();
286
286
job.cached = false ;
287
287
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
- }
294
288
job.layer = ml;
295
289
job.renderingTime = -1 ;
296
290
@@ -304,9 +298,23 @@ LayerRenderJobs QgsMapRendererJob::prepareJobs( QPainter *painter, QgsLabelingEn
304
298
if ( mFeatureFilterProvider )
305
299
job.context .setFeatureFilterProvider ( mFeatureFilterProvider );
306
300
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
+
307
312
// if we can use the cache, let's do it and avoid rendering!
308
313
if ( mCache && mCache ->hasCacheImage ( ml->id () ) )
309
314
{
315
+ if ( hasStyleOverride )
316
+ ml->styleManager ()->restoreOverrideStyle ();
317
+
310
318
job.cached = true ;
311
319
job.imageInitialized = true ;
312
320
job.img = new QImage ( mCache ->cacheImage ( ml->id () ) );
@@ -327,6 +335,9 @@ LayerRenderJobs QgsMapRendererJob::prepareJobs( QPainter *painter, QgsLabelingEn
327
335
mSettings .outputImageFormat () );
328
336
if ( mypFlattenedImage->isNull () )
329
337
{
338
+ if ( hasStyleOverride )
339
+ ml->styleManager ()->restoreOverrideStyle ();
340
+
330
341
mErrors .append ( Error ( ml->id (), tr ( " Insufficient memory for image %1x%2" ).arg ( mSettings .outputSize ().width () ).arg ( mSettings .outputSize ().height () ) ) );
331
342
delete mypFlattenedImage;
332
343
layerJobs.removeLast ();
@@ -339,18 +350,13 @@ LayerRenderJobs QgsMapRendererJob::prepareJobs( QPainter *painter, QgsLabelingEn
339
350
job.context .setPainter ( mypPainter );
340
351
}
341
352
342
- bool hasStyleOverride = mSettings .layerStyleOverrides ().contains ( ml->id () );
343
- if ( hasStyleOverride )
344
- ml->styleManager ()->setOverrideStyle ( mSettings .layerStyleOverrides ().value ( ml->id () ) );
345
-
346
353
QTime layerTime;
347
354
layerTime.start ();
348
355
job.renderer = ml->createMapRenderer ( job.context );
349
356
job.renderingTime = layerTime.elapsed (); // include job preparation time in layer rendering time
350
357
351
358
if ( hasStyleOverride )
352
359
ml->styleManager ()->restoreOverrideStyle ();
353
-
354
360
} // while (li.hasPrevious())
355
361
356
362
return layerJobs;
0 commit comments