Skip to content

Commit

Permalink
Add layerRendered signal to QgsMapRendererJob
Browse files Browse the repository at this point in the history
Can be used to provide progress feedback on map render jobs
  • Loading branch information
nyalldawson committed Dec 31, 2021
1 parent cc404c9 commit 79d5065
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 0 deletions.
11 changes: 11 additions & 0 deletions python/core/auto_generated/maprenderer/qgsmaprendererjob.sip.in
Expand Up @@ -189,6 +189,17 @@ Rendering labels is not yet done. If the fully rendered layer including labels i
:py:func:`~QgsMapRendererJob.finished` instead.

.. versionadded:: 3.0
%End

void layerRendered( const QString &layerId );
%Docstring
Emitted when a layer has completed rendering.

.. note::

the :py:class:`QgsMapRendererParallelJob` subclass does not emit this signal.

.. versionadded:: 3.24
%End

void finished();
Expand Down
1 change: 1 addition & 0 deletions src/core/maprenderer/qgsmaprenderercustompainterjob.cpp
Expand Up @@ -326,6 +326,7 @@ void QgsMapRendererCustomPainterJob::doRender()
mPainter->setOpacity( 1.0 );
}

emit layerRendered( job.layerId );
}

QgsDebugMsgLevel( QStringLiteral( "Done rendering map layers" ), 5 );
Expand Down
9 changes: 9 additions & 0 deletions src/core/maprenderer/qgsmaprendererjob.h
Expand Up @@ -431,6 +431,15 @@ class CORE_EXPORT QgsMapRendererJob : public QObject SIP_ABSTRACT
*/
void renderingLayersFinished();

/**
* Emitted when a layer has completed rendering.
*
* \note the QgsMapRendererParallelJob subclass does not emit this signal.
*
* \since QGIS 3.24
*/
void layerRendered( const QString &layerId );

//! emitted when asynchronous rendering is finished (or canceled).
void finished();

Expand Down
1 change: 1 addition & 0 deletions src/core/maprenderer/qgsmaprenderersequentialjob.cpp
Expand Up @@ -70,6 +70,7 @@ void QgsMapRendererSequentialJob::startPrivate()
mInternalJob->setCache( mCache );

connect( mInternalJob, &QgsMapRendererJob::finished, this, &QgsMapRendererSequentialJob::internalFinished );
connect( mInternalJob, &QgsMapRendererJob::layerRendered, this, &QgsMapRendererSequentialJob::layerRendered );

mInternalJob->start();
}
Expand Down
2 changes: 2 additions & 0 deletions src/core/maprenderer/qgsmaprendererstagedrenderjob.cpp
Expand Up @@ -128,6 +128,8 @@ bool QgsMapRendererStagedRenderJob::renderCurrentPart( QPainter *painter )
painter->setOpacity( 1.0 );
}
job.context()->setPainter( nullptr );

emit layerRendered( job.layerId );
}
else
{
Expand Down

0 comments on commit 79d5065

Please sign in to comment.