[partition] Reduce refreshes when reverting

This commit is contained in:
Adriaan de Groot 2019-02-11 19:03:09 -05:00
parent b9fa0398c0
commit dff5afe227
2 changed files with 11 additions and 5 deletions

View File

@ -880,7 +880,7 @@ PartitionCoreModule::revertAllDevices()
}
}
revertDevice( ( *it )->device.data() );
revertDevice( ( *it )->device.data(), false );
++it;
}
@ -889,7 +889,7 @@ PartitionCoreModule::revertAllDevices()
void
PartitionCoreModule::revertDevice( Device* dev )
PartitionCoreModule::revertDevice( Device* dev, bool individualRevert )
{
QMutexLocker locker( &m_revertMutex );
DeviceInfo* devInfo = infoForDevice( dev );
@ -915,6 +915,7 @@ PartitionCoreModule::revertDevice( Device* dev )
m_bootLoaderModel->init( devices );
if ( individualRevert )
refreshAfterModelChange();
emit deviceReverted( newDev );
}
@ -931,7 +932,7 @@ PartitionCoreModule::asyncRevertDevice( Device* dev, std::function< void() > cal
watcher->deleteLater();
} );
QFuture< void > future = QtConcurrent::run( this, &PartitionCoreModule::revertDevice, dev );
QFuture< void > future = QtConcurrent::run( this, &PartitionCoreModule::revertDevice, dev, true );
watcher->setFuture( future );
}

View File

@ -191,7 +191,12 @@ public:
void revert(); // full revert, thread safe, calls doInit
void revertAllDevices(); // convenience function, calls revertDevice
void revertDevice( Device* dev ); // rescans a single Device and updates DeviceInfo
/** @brief rescans a single Device and updates DeviceInfo
*
* When @p individualRevert is true, calls refreshAfterModelChange(),
* used to reduce number of refreshes when calling revertAllDevices().
*/
void revertDevice( Device* dev, bool individualRevert=true );
void asyncRevertDevice( Device* dev, std::function< void() > callback ); //like revertDevice, but asynchronous
void clearJobs(); // only clear jobs, the Device* states are preserved