diff --git a/src/modules/partition/core/PartitionCoreModule.cpp b/src/modules/partition/core/PartitionCoreModule.cpp index a5e661156..57cf9f5bb 100644 --- a/src/modules/partition/core/PartitionCoreModule.cpp +++ b/src/modules/partition/core/PartitionCoreModule.cpp @@ -49,7 +49,8 @@ #include #include #include -#include +#include +#include static bool hasRootPartition( Device* device ) @@ -531,11 +532,16 @@ PartitionCoreModule::revertDevice( Device* dev ) void PartitionCoreModule::asyncRevertDevice( Device* dev, std::function< void() > callback ) { - QTimer::singleShot( 0, this, [=] + QFutureWatcher< void >* watcher = new QFutureWatcher< void >(); + connect( watcher, &QFutureWatcher< void >::finished, + this, [ watcher, callback ] { - revertDevice( dev ); - QTimer::singleShot( 0, callback ); + callback(); + watcher->deleteLater(); } ); + + QFuture< void > future = QtConcurrent::run( this, &PartitionCoreModule::revertDevice, dev ); + watcher->setFuture( future ); }