Avoid blocking call when save resume data

PR #17755.
This commit is contained in:
Vladimir Golovnev 2022-09-25 16:40:16 +03:00 committed by GitHub
parent caa30e41d8
commit 0a4ee60ea0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 4 deletions

View file

@ -2854,7 +2854,12 @@ void SessionImpl::saveResumeData()
if (isQueueingSystemEnabled())
saveTorrentsQueue();
generateResumeData();
for (const TorrentImpl *torrent : asConst(m_torrents))
{
torrent->nativeHandle().save_resume_data(lt::torrent_handle::only_if_modified);
++m_numResumeData;
}
while (m_numResumeData > 0)
{
@ -2871,6 +2876,8 @@ void SessionImpl::saveResumeData()
switch (a->type())
{
case lt::save_resume_data_failed_alert::alert_type:
--m_numResumeData;
break;
case lt::save_resume_data_alert::alert_type:
dispatchTorrentAlert(static_cast<const lt::torrent_alert *>(a));
break;