diff --git a/src/core/raster/qgsrasterdataprovider.cpp b/src/core/raster/qgsrasterdataprovider.cpp index 855d6f6bd2a..e40b03fbe4c 100644 --- a/src/core/raster/qgsrasterdataprovider.cpp +++ b/src/core/raster/qgsrasterdataprovider.cpp @@ -341,13 +341,21 @@ QString QgsRasterDataProvider::lastErrorFormat() return "text/plain"; } -typedef QList > pyramidResamplingMethods_t(); +typedef QList > *pyramidResamplingMethods_t(); QList > QgsRasterDataProvider::pyramidResamplingMethods( QString providerKey ) { pyramidResamplingMethods_t *pPyramidResamplingMethods = ( pyramidResamplingMethods_t * ) cast_to_fptr( QgsProviderRegistry::instance()->function( providerKey, "pyramidResamplingMethods" ) ); if ( pPyramidResamplingMethods ) { - return pPyramidResamplingMethods(); + QList > *methods = pPyramidResamplingMethods(); + if ( !methods ) + { + QgsDebugMsg( "provider pyramidResamplingMethods returned no methods" ); + } + else + { + return *methods; + } } else { diff --git a/src/providers/gdal/qgsgdalprovider.cpp b/src/providers/gdal/qgsgdalprovider.cpp index ac4118dc2b8..cd99c3e3db9 100644 --- a/src/providers/gdal/qgsgdalprovider.cpp +++ b/src/providers/gdal/qgsgdalprovider.cpp @@ -2753,16 +2753,19 @@ QString QgsGdalProvider::validatePyramidsCreationOptions( RasterPyramidsFormat p // by running one of the other resampling strategies below. // see ticket #284 -QGISEXTERN QList > pyramidResamplingMethods() +QGISEXTERN QList > *pyramidResamplingMethods() { - QList > methods; - methods.append( QPair( "NEAREST", QObject::tr( "Nearest Neighbour" ) ) ); - methods.append( QPair( "AVERAGE", QObject::tr( "Average" ) ) ); - methods.append( QPair( "GAUSS", QObject::tr( "Gauss" ) ) ); - methods.append( QPair( "CUBIC", QObject::tr( "Cubic" ) ) ); - methods.append( QPair( "MODE", QObject::tr( "Mode" ) ) ); - methods.append( QPair( "NONE", QObject::tr( "None" ) ) ); + static QList > methods; - return methods; + if ( methods.isEmpty() ) + { + methods.append( QPair( "NEAREST", QObject::tr( "Nearest Neighbour" ) ) ); + methods.append( QPair( "AVERAGE", QObject::tr( "Average" ) ) ); + methods.append( QPair( "GAUSS", QObject::tr( "Gauss" ) ) ); + methods.append( QPair( "CUBIC", QObject::tr( "Cubic" ) ) ); + methods.append( QPair( "MODE", QObject::tr( "Mode" ) ) ); + methods.append( QPair( "NONE", QObject::tr( "None" ) ) ); + } + + return &methods; } -