1
0
mirror of https://github.com/d47081/qBittorrent.git synced 2025-01-11 15:27:54 +00:00

Cache pieces info

PR #16238.
This commit is contained in:
Vladimir Golovnev 2022-01-25 06:05:16 +03:00 committed by GitHub
parent 0cc318664d
commit 26352c9eb4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 6 deletions

View File

@ -44,7 +44,6 @@
#include <libtorrent/info_hash.hpp> #include <libtorrent/info_hash.hpp>
#endif #endif
#include <QBitArray>
#include <QDebug> #include <QDebug>
#include <QDir> #include <QDir>
#include <QFile> #include <QFile>
@ -1250,13 +1249,17 @@ QVector<PeerInfo> TorrentImpl::peers() const
QBitArray TorrentImpl::pieces() const QBitArray TorrentImpl::pieces() const
{ {
QBitArray result(m_nativeStatus.pieces.size()); if (m_pieces.isEmpty())
for (int i = 0; i < result.size(); ++i)
{ {
if (m_nativeStatus.pieces[lt::piece_index_t {i}]) m_pieces.resize(m_nativeStatus.pieces.size());
result.setBit(i, true); for (int i = 0; i < m_pieces.size(); ++i)
{
if (m_nativeStatus.pieces[lt::piece_index_t(i)])
m_pieces.setBit(i, true);
} }
return result; }
return m_pieces;
} }
QBitArray TorrentImpl::downloadingPieces() const QBitArray TorrentImpl::downloadingPieces() const
@ -2094,6 +2097,7 @@ void TorrentImpl::updateStatus()
void TorrentImpl::updateStatus(const lt::torrent_status &nativeStatus) void TorrentImpl::updateStatus(const lt::torrent_status &nativeStatus)
{ {
m_pieces.clear();
m_nativeStatus = nativeStatus; m_nativeStatus = nativeStatus;
updateState(); updateState();

View File

@ -37,6 +37,7 @@
#include <libtorrent/torrent_handle.hpp> #include <libtorrent/torrent_handle.hpp>
#include <libtorrent/torrent_status.hpp> #include <libtorrent/torrent_status.hpp>
#include <QBitArray>
#include <QDateTime> #include <QDateTime>
#include <QHash> #include <QHash>
#include <QMap> #include <QMap>
@ -320,5 +321,7 @@ namespace BitTorrent
bool m_unchecked = false; bool m_unchecked = false;
lt::add_torrent_params m_ltAddTorrentParams; lt::add_torrent_params m_ltAddTorrentParams;
mutable QBitArray m_pieces;
}; };
} }