diff --git a/src/modules/partition/gui/ChoicePage.cpp b/src/modules/partition/gui/ChoicePage.cpp index ed19eb2d9..9ca187af5 100644 --- a/src/modules/partition/gui/ChoicePage.cpp +++ b/src/modules/partition/gui/ChoicePage.cpp @@ -306,12 +306,29 @@ ChoicePage::applyDeviceChoice() if ( m_core->isDirty() ) { - m_core->revertAllDevices(); + ScanningDialog::run( QtConcurrent::run( [ = ] + { + QMutexLocker locker( &m_coreMutex ); + m_core->revertAllDevices(); + } ), + [ this ] + { + continueApplyDeviceChoice(); + }, + this ); } + else + { + continueApplyDeviceChoice(); + } +} + +void +ChoicePage::continueApplyDeviceChoice() +{ Device* currd = selectedDevice(); - // The device should only be nullptr immediately after a PCM reset. // applyDeviceChoice() will be called again momentarily as soon as we handle the // PartitionCoreModule::reverted signal. diff --git a/src/modules/partition/gui/ChoicePage.h b/src/modules/partition/gui/ChoicePage.h index 7dd6e024c..deff203c3 100644 --- a/src/modules/partition/gui/ChoicePage.h +++ b/src/modules/partition/gui/ChoicePage.h @@ -81,6 +81,7 @@ private: QComboBox* createBootloaderComboBox( QWidget* parentButton ); Device* selectedDevice(); void applyDeviceChoice(); + void continueApplyDeviceChoice(); void updateDeviceStatePreview(); void applyActionChoice( ChoicePage::Choice choice ); void updateActionChoicePreview( ChoicePage::Choice choice );