Skip to content

Commit 01e8ed8

Browse files
committedDec 4, 2017
More flexible API for preview job determination
1 parent 16a1bd7 commit 01e8ed8

File tree

4 files changed

+25
-4
lines changed

4 files changed

+25
-4
lines changed
 

‎python/core/qgsdataprovider.sip

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,7 @@ Current time stamp of data source
380380
.. versionadded:: 3.0
381381
%End
382382

383+
383384
signals:
384385

385386
void fullExtentCalculated();

‎src/core/qgsdataprovider.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ void QgsDataProvider::setListening( bool isListening )
4242
Q_UNUSED( isListening );
4343
}
4444

45-
bool QgsDataProvider::renderInPreview( double lastRenderingTimeMS, double maxRenderingTimeMS )
45+
bool QgsDataProvider::renderInPreview( QgsDataProvider::PreviewContext context )
4646
{
47-
return lastRenderingTimeMS <= maxRenderingTimeMS;
47+
return context.lastRenderingTimeMs <= context.maxRenderingTimeMs;
4848
}

‎src/core/qgsdataprovider.h

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -461,6 +461,23 @@ class CORE_EXPORT QgsDataProvider : public QObject
461461
*/
462462
virtual void setListening( bool isListening );
463463

464+
#ifndef SIP_RUN
465+
466+
/**
467+
* Stores settings related to the context in which a preview job runs.
468+
* \note Not available in Python bindings
469+
* \since QGIS 3.0
470+
*/
471+
struct PreviewContext
472+
{
473+
//! Previous rendering time for the layer, in ms
474+
double lastRenderingTimeMs = -1;
475+
476+
//! Default maximum allowable render time, in ms
477+
double maxRenderingTimeMs = MAXIMUM_LAYER_PREVIEW_TIME_MS;
478+
};
479+
#endif
480+
464481
/**
465482
* Returns whether the layer must be rendered in preview jobs.
466483
*
@@ -474,7 +491,7 @@ class CORE_EXPORT QgsDataProvider : public QObject
474491
*
475492
* \note not available in Python bindings
476493
*/
477-
virtual bool renderInPreview( double lastRenderingTimeMS, double maxRenderingTimeMS ); // SIP_SKIP
494+
virtual bool renderInPreview( QgsDataProvider::PreviewContext context ); // SIP_SKIP
478495

479496
signals:
480497

‎src/gui/qgsmapcanvas.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2273,9 +2273,12 @@ void QgsMapCanvas::startPreviewJob( int number )
22732273
// truncate preview layers to fast layers
22742274
const QList<QgsMapLayer *> layers = jobSettings.layers();
22752275
QList< QgsMapLayer * > previewLayers;
2276+
QgsDataProvider::PreviewContext context;
2277+
context.maxRenderingTimeMs = MAXIMUM_LAYER_PREVIEW_TIME_MS;
22762278
for ( QgsMapLayer *layer : layers )
22772279
{
2278-
if ( !layer->dataProvider()->renderInPreview( mLastLayerRenderTime.value( layer->id() ), MAXIMUM_LAYER_PREVIEW_TIME_MS ) )
2280+
context.lastRenderingTimeMs = mLastLayerRenderTime.value( layer->id() );
2281+
if ( !layer->dataProvider()->renderInPreview( context ) )
22792282
{
22802283
QgsDebugMsgLevel( QString( "Layer %1 not rendered because it does not match the renderInPreview criterion %2" ).arg( layer->id() ).arg( mLastLayerRenderTime.value( layer->id() ) ), 3 );
22812284
continue;

0 commit comments

Comments
 (0)
Please sign in to comment.