Browse Source

Merge pull request #12692 from Chocobo1/cleanup

Handle empty piece range properly
adaptive-webui-19844
Mike Tzou 5 years ago committed by GitHub
parent
commit
93e1e063b2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 9
      src/base/bittorrent/torrenthandleimpl.cpp
  2. 2
      src/gui/torrentcontentmodel.cpp
  3. 2
      src/gui/torrentcontentmodelfile.cpp

9
src/base/bittorrent/torrenthandleimpl.cpp

@ -2120,11 +2120,11 @@ void TorrentHandleImpl::prioritizeFiles(const QVector<DownloadPriority> &priorit @@ -2120,11 +2120,11 @@ void TorrentHandleImpl::prioritizeFiles(const QVector<DownloadPriority> &priorit
QVector<qreal> TorrentHandleImpl::availableFileFractions() const
{
const int filesCount = this->filesCount();
if (filesCount < 0) return {};
if (filesCount <= 0) return {};
const QVector<int> piecesAvailability = pieceAvailability();
// libtorrent returns empty array for seeding only torrents
if (piecesAvailability.empty()) return QVector<qreal>(filesCount, -1.);
if (piecesAvailability.empty()) return QVector<qreal>(filesCount, -1);
QVector<qreal> res;
res.reserve(filesCount);
@ -2136,7 +2136,10 @@ QVector<qreal> TorrentHandleImpl::availableFileFractions() const @@ -2136,7 +2136,10 @@ QVector<qreal> TorrentHandleImpl::availableFileFractions() const
for (const int piece : filePieces)
availablePieces += (piecesAvailability[piece] > 0) ? 1 : 0;
res.push_back(static_cast<qreal>(availablePieces) / filePieces.size());
const qreal availability = filePieces.isEmpty()
? 1 // the file has no pieces, so it is available by default
: static_cast<qreal>(availablePieces) / filePieces.size();
res.push_back(availability);
}
return res;
}

2
src/gui/torrentcontentmodel.cpp

@ -233,7 +233,7 @@ void TorrentContentModel::updateFilesAvailability(const QVector<qreal> &fa) @@ -233,7 +233,7 @@ void TorrentContentModel::updateFilesAvailability(const QVector<qreal> &fa)
if (m_filesIndex.size() != fa.size()) return;
emit layoutAboutToBeChanged();
for (int i = 0; i < fa.size(); ++i)
for (int i = 0; i < m_filesIndex.size(); ++i)
m_filesIndex[i]->setAvailability(fa[i]);
// Update folders progress in the tree
m_rootItem->recalculateProgress();

2
src/gui/torrentcontentmodelfile.cpp

@ -73,7 +73,7 @@ void TorrentContentModelFile::setProgress(qreal progress) @@ -73,7 +73,7 @@ void TorrentContentModelFile::setProgress(qreal progress)
Q_ASSERT(m_progress <= 1.);
}
void TorrentContentModelFile::setAvailability(qreal availability)
void TorrentContentModelFile::setAvailability(const qreal availability)
{
m_availability = availability;
Q_ASSERT(m_availability <= 1.);

Loading…
Cancel
Save