forked from qt-creator/qt-creator
AsyncTask: Centralize setting global future synchronizer
Move the global FutureSynchronizer to Utils and use it by default for AsyncTask (if that is in the main thread). This way setting a synchronizer is less prone to be forgotten. Individual uses can still override this. Change-Id: I1a12bf4d7f4cb5be99668bf0a4797108c2fe6448 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
@@ -3,6 +3,9 @@
|
||||
|
||||
#include "futuresynchronizer.h"
|
||||
|
||||
#include "qtcassert.h"
|
||||
#include "threadutils.h"
|
||||
|
||||
/*!
|
||||
\class Utils::FutureSynchronizer
|
||||
\inmodule QtCreator
|
||||
@@ -62,4 +65,18 @@ void FutureSynchronizer::flushFinishedFutures()
|
||||
m_futures = newFutures;
|
||||
}
|
||||
|
||||
Q_GLOBAL_STATIC(FutureSynchronizer, s_futureSynchronizer);
|
||||
|
||||
/*!
|
||||
Returns a global FutureSynchronizer.
|
||||
The application should cancel and wait for the tasks in this synchronizer before actually
|
||||
unloading any libraries. This is for example done by the plugin manager in Qt Creator.
|
||||
May only be accessed by the main thread.
|
||||
*/
|
||||
FutureSynchronizer *futureSynchronizer()
|
||||
{
|
||||
QTC_ASSERT(isMainThread(), return nullptr);
|
||||
return s_futureSynchronizer;
|
||||
}
|
||||
|
||||
} // namespace Utils
|
||||
|
||||
Reference in New Issue
Block a user