@@ -84,17 +84,6 @@ QgsMapCanvas::QgsMapCanvas( QWidget * parent, const char *name )
84
84
, mAntiAliasing( false )
85
85
{
86
86
setObjectName ( name );
87
-
88
- QSettings settings;
89
- bool enableBackbuffer = settings.value ( " /Map/enableBackbuffer" , 1 ).toBool ();
90
- // disable the update that leads to the resize crash
91
- if ( viewport () && !enableBackbuffer )
92
- {
93
- #ifndef ANDROID
94
- viewport ()->setAttribute ( Qt::WA_PaintOnScreen, true );
95
- #endif // ANDROID
96
- }
97
-
98
87
mScene = new QGraphicsScene ();
99
88
setScene ( mScene );
100
89
setHorizontalScrollBarPolicy ( Qt::ScrollBarAlwaysOff );
@@ -105,6 +94,7 @@ QgsMapCanvas::QgsMapCanvas( QWidget * parent, const char *name )
105
94
mMapTool = NULL ;
106
95
mLastNonZoomMapTool = NULL ;
107
96
97
+ mBackbufferEnabled = true ;
108
98
mDrawing = false ;
109
99
mFrozen = false ;
110
100
mDirty = true ;
@@ -380,6 +370,30 @@ void QgsMapCanvas::refresh()
380
370
if ( mDrawing )
381
371
return ;
382
372
373
+ QSettings settings;
374
+ bool enableBackbufferSetting = settings.value ( " /Map/enableBackbuffer" , 1 ).toBool ();
375
+
376
+
377
+ // disable the update that leads to the resize crash
378
+ if ( viewport () )
379
+ {
380
+ #ifndef ANDROID
381
+ if ( enableBackbufferSetting != mBackbufferEnabled )
382
+ {
383
+ qDebug () << " Enable back buffering: " << enableBackbufferSetting;
384
+ if ( enableBackbufferSetting )
385
+ {
386
+ viewport ()->setAttribute ( Qt::WA_PaintOnScreen, false );
387
+ }
388
+ else
389
+ {
390
+ viewport ()->setAttribute ( Qt::WA_PaintOnScreen, true );
391
+ }
392
+ mBackbufferEnabled = enableBackbufferSetting;
393
+ }
394
+ #endif // ANDROID
395
+ }
396
+
383
397
mDrawing = true ;
384
398
385
399
if ( mRenderFlag && !mFrozen )
0 commit comments