Skip to content

Commit 75c7bfe

Browse files
committed
[GRASS] raster identify: do not start info module until it is used
1 parent 483f3ee commit 75c7bfe

File tree

2 files changed

+25
-12
lines changed

2 files changed

+25
-12
lines changed

src/providers/grass/qgsgrassrasterprovider.cpp

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ QgsGrassRasterProvider::QgsGrassRasterProvider( QString const & uri )
9090

9191
mTimestamp = dataTimestamp();
9292

93-
mRasterValue.start( mGisdbase, mLocation, mMapset, mMapName );
93+
mRasterValue.set( mGisdbase, mLocation, mMapset, mMapName );
9494
//mValidNoDataValue = true;
9595

9696
QString error;
@@ -651,13 +651,13 @@ void QgsGrassRasterProvider::freeze()
651651
void QgsGrassRasterProvider::thaw()
652652
{
653653
QgsDebugMsg( "entered" );
654-
mRasterValue.start( mGisdbase, mLocation, mMapset, mMapName );
655654
mValid = true;
656655
}
657656

658657
//-------------------------------- QgsGrassRasterValue ----------------------------------------
659658

660-
QgsGrassRasterValue::QgsGrassRasterValue() : mProcess( 0 )
659+
QgsGrassRasterValue::QgsGrassRasterValue()
660+
: mProcess( 0 )
661661
{
662662
}
663663

@@ -666,18 +666,21 @@ QgsGrassRasterValue::~QgsGrassRasterValue()
666666
stop();
667667
}
668668

669-
void QgsGrassRasterValue::start( QString gisdbase, QString location,
670-
QString mapset, QString map )
669+
void QgsGrassRasterValue::set( const QString & gisdbase, const QString & location, const QString & mapset, const QString & map )
671670
{
672-
QgsDebugMsg( "entered" );
673-
if ( mProcess )
674-
{
675-
QgsDebugMsg( "alread running" );
676-
}
677671
mGisdbase = gisdbase;
678672
mLocation = location;
679673
mMapset = mapset;
680674
mMapName = map;
675+
}
676+
677+
void QgsGrassRasterValue::start()
678+
{
679+
QgsDebugMsg( "entered" );
680+
if ( mProcess )
681+
{
682+
QgsDebugMsg( "already running" );
683+
}
681684
// TODO: catch exceptions
682685
QString module = QgsGrass::qgisGrassModulePath() + "/qgis.g.info";
683686
QStringList arguments;
@@ -715,7 +718,15 @@ double QgsGrassRasterValue::value( double x, double y, bool *ok )
715718
*ok = false;
716719
double value = std::numeric_limits<double>::quiet_NaN();
717720

718-
if ( !mProcess ) return value;
721+
if ( !mProcess )
722+
{
723+
start();
724+
}
725+
726+
if ( !mProcess )
727+
{
728+
return value;
729+
}
719730

720731
QString coor = QString( "%1 %2\n" ).arg( QgsRasterBlock::printValue( x ),
721732
QgsRasterBlock::printValue( y ) );

src/providers/grass/qgsgrassrasterprovider.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,14 @@ class GRASS_LIB_EXPORT QgsGrassRasterValue
5656
public:
5757
QgsGrassRasterValue();
5858
~QgsGrassRasterValue();
59-
void start( QString gisdbase, QString location, QString mapset, QString map );
59+
60+
void set( const QString & gisdbase, const QString & location, const QString & mapset, const QString & map );
6061
void stop();
6162
// returns raster value, NaN for no data
6263
// ok is set to true if ok or false on error
6364
double value( double x, double y, bool *ok );
6465
private:
66+
void start();
6567
QString mGisdbase; // map gisdabase
6668
QString mLocation; // map location name (not path!)
6769
QString mMapset; // map mapset

0 commit comments

Comments
 (0)