mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-04 00:30:59 -05:00
Fix qgstaskmanager waitforfinished so it waits that the task was
actually started
This commit is contained in:
parent
c7e7baaaa8
commit
42e22b7a68
@ -29,6 +29,7 @@ QgsTask::QgsTask( const QString &name, Flags flags )
|
||||
: mFlags( flags )
|
||||
, mDescription( name )
|
||||
{
|
||||
mNotStartedMutex.lock();
|
||||
}
|
||||
|
||||
QgsTask::~QgsTask()
|
||||
@ -41,6 +42,7 @@ QgsTask::~QgsTask()
|
||||
delete subTask.task;
|
||||
}
|
||||
mNotFinishedMutex.unlock();
|
||||
mNotStartedMutex.unlock();
|
||||
}
|
||||
|
||||
void QgsTask::setDescription( const QString &description )
|
||||
@ -55,6 +57,7 @@ qint64 QgsTask::elapsedTime() const
|
||||
|
||||
void QgsTask::start()
|
||||
{
|
||||
mNotStartedMutex.unlock();
|
||||
mNotFinishedMutex.lock();
|
||||
mStartCount++;
|
||||
Q_ASSERT( mStartCount == 1 );
|
||||
@ -152,6 +155,9 @@ QList<QgsMapLayer *> QgsTask::dependentLayers() const
|
||||
|
||||
bool QgsTask::waitForFinished( int timeout )
|
||||
{
|
||||
// We wait the task to be started
|
||||
mNotStartedMutex.lock();
|
||||
|
||||
bool rv = true;
|
||||
if ( mOverallStatus == Complete || mOverallStatus == Terminated )
|
||||
{
|
||||
|
@ -310,6 +310,7 @@ class CORE_EXPORT QgsTask : public QObject
|
||||
* it's used as a trigger for waitForFinished.
|
||||
*/
|
||||
QMutex mNotFinishedMutex;
|
||||
QMutex mNotStartedMutex;
|
||||
|
||||
//! Progress of this (parent) task alone
|
||||
double mProgress = 0.0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user