mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-02 00:04:53 -04:00
Trying to fix #10164 (crash on zoom in/out)
This happens due to infinite recursion when syncing extent between map canvas and map renderer. Not entirely sure why, seems to happen only on 32bit systems.
This commit is contained in:
parent
32ddb2084f
commit
e6b337e323
@ -89,6 +89,7 @@ QgsMapCanvasRendererSync::QgsMapCanvasRendererSync( QgsMapCanvas* canvas, QgsMap
|
||||
: QObject( canvas )
|
||||
, mCanvas( canvas )
|
||||
, mRenderer( renderer )
|
||||
, mSyncingExtent( false )
|
||||
{
|
||||
connect( mCanvas, SIGNAL( extentsChanged() ), this, SLOT( onExtentC2R() ) );
|
||||
connect( mRenderer, SIGNAL( extentsChanged() ), this, SLOT( onExtentR2C() ) );
|
||||
@ -109,12 +110,24 @@ QgsMapCanvasRendererSync::QgsMapCanvasRendererSync( QgsMapCanvas* canvas, QgsMap
|
||||
|
||||
void QgsMapCanvasRendererSync::onExtentC2R()
|
||||
{
|
||||
// protection against possible bounce back
|
||||
if ( mSyncingExtent )
|
||||
return;
|
||||
|
||||
mSyncingExtent = true;
|
||||
mRenderer->setExtent( mCanvas->mapSettings().extent() );
|
||||
mSyncingExtent = false;
|
||||
}
|
||||
|
||||
void QgsMapCanvasRendererSync::onExtentR2C()
|
||||
{
|
||||
// protection against possible bounce back
|
||||
if ( mSyncingExtent )
|
||||
return;
|
||||
|
||||
mSyncingExtent = true;
|
||||
mCanvas->setExtent( mRenderer->extent() );
|
||||
mSyncingExtent = false;
|
||||
}
|
||||
|
||||
void QgsMapCanvasRendererSync::onMapUnitsC2R()
|
||||
|
@ -662,6 +662,8 @@ class QgsMapCanvasRendererSync : public QObject
|
||||
protected:
|
||||
QgsMapCanvas* mCanvas;
|
||||
QgsMapRenderer* mRenderer;
|
||||
|
||||
bool mSyncingExtent;
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user