mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-25 00:58:06 -05:00
In some cases canceling render jobs can take a long time. Eg when using database layers over a sloooooow connection, canceling a job can be blocked by minutes while waiting for the first batch of feature fetching to finish. (Since eg postgres features are fetched in batches of 2000 with no opportunity to abort mid-way through this). This meant that while the first render allows the GUI to remain responsive, any subsequent render operations which occured before the first render completes locks up the whole ui until the first render can finish cancellation. With this change, the render cancelation happens with blocking. It means that you can pan and zoom around a map over of slow connection without any ui locks.
36 lines
916 B
Plaintext
36 lines
916 B
Plaintext
|
|
|
|
/** Job implementation that renders everything sequentially in one thread.
|
|
*
|
|
* The resulting map image can be retrieved with renderedImage() function.
|
|
* It is safe to call that function while rendering is active to see preview of the map.
|
|
*
|
|
* @note added in 2.4
|
|
*/
|
|
class QgsMapRendererSequentialJob : QgsMapRendererQImageJob
|
|
{
|
|
%TypeHeaderCode
|
|
#include <qgsmaprenderersequentialjob.h>
|
|
%End
|
|
|
|
public:
|
|
QgsMapRendererSequentialJob( const QgsMapSettings& settings );
|
|
~QgsMapRendererSequentialJob();
|
|
|
|
virtual void start();
|
|
virtual void cancel();
|
|
virtual void cancelWithoutBlocking();
|
|
virtual void waitForFinished();
|
|
virtual bool isActive() const;
|
|
virtual bool usedCachedLabels() const;
|
|
|
|
virtual QgsLabelingResults* takeLabelingResults() /Transfer/;
|
|
|
|
// from QgsMapRendererJobWithPreview
|
|
virtual QImage renderedImage();
|
|
|
|
public slots:
|
|
|
|
void internalFinished();
|
|
};
|