summaryrefslogtreecommitdiffstats
path: root/src/manager-lib/asynchronoustask.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/manager-lib/asynchronoustask.cpp')
-rw-r--r--src/manager-lib/asynchronoustask.cpp23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/manager-lib/asynchronoustask.cpp b/src/manager-lib/asynchronoustask.cpp
index 17871da8..d750946f 100644
--- a/src/manager-lib/asynchronoustask.cpp
+++ b/src/manager-lib/asynchronoustask.cpp
@@ -25,29 +25,29 @@ QString AsynchronousTask::id() const
AsynchronousTask::TaskState AsynchronousTask::state() const
{
+ QMutexLocker locker(&m_mutex);
return m_state;
}
void AsynchronousTask::setState(AsynchronousTask::TaskState state)
{
+ QMutexLocker locker(&m_mutex);
if (m_state != state) {
m_state = state;
- emit stateChanged(m_state);
+ locker.unlock();
+ emit stateChanged(state);
}
}
-bool AsynchronousTask::hasFailed() const
-{
- return (m_state == Failed);
-}
-
Error AsynchronousTask::errorCode() const
{
+ QMutexLocker locker(&m_mutex);
return m_errorCode;
}
QString AsynchronousTask::errorString() const
{
+ QMutexLocker locker(&m_mutex);
return m_errorString;
}
@@ -59,7 +59,7 @@ bool AsynchronousTask::cancel()
bool AsynchronousTask::forceCancel()
{
- if (m_state == Queued) {
+ if (state() == Queued) {
setError(Error::Canceled, qSL("canceled"));
return true;
}
@@ -68,6 +68,7 @@ bool AsynchronousTask::forceCancel()
QString AsynchronousTask::packageId() const
{
+ QMutexLocker locker(&m_mutex);
return m_packageId;
}
@@ -83,8 +84,12 @@ bool AsynchronousTask::postExecute()
void AsynchronousTask::setError(Error errorCode, const QString &errorString)
{
- m_errorCode = errorCode;
- m_errorString = errorString;
+ {
+ // setState() also locks
+ QMutexLocker locker(&m_mutex);
+ m_errorCode = errorCode;
+ m_errorString = errorString;
+ }
setState(Failed);
}