1
0
mirror of https://github.com/d47081/qBittorrent.git synced 2025-03-09 11:51:03 +00:00

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;

View File

@ -682,7 +682,7 @@ bool TorrentImpl::connectPeer(const PeerAddress &peerAddress)
bool TorrentImpl::needSaveResumeData() const
{
return m_nativeHandle.need_save_resume_data();
return m_nativeStatus.need_save_resume;
}
void TorrentImpl::saveResumeData()
@ -2006,8 +2006,7 @@ void TorrentImpl::handleFileErrorAlert(const lt::file_error_alert *p)
#ifdef QBT_USES_LIBTORRENT2
void TorrentImpl::handleFilePrioAlert(const lt::file_prio_alert *)
{
if (m_nativeHandle.need_save_resume_data())
m_session->handleTorrentNeedSaveResumeData(this);
m_session->handleTorrentNeedSaveResumeData(this);
}
#endif