Browse Source

Fix issues when marking a file as "not downloaded" causes the torrent to complete

adaptive-webui-19844
Christophe Dumez 14 years ago
parent
commit
64f0adc813
  1. 5
      src/qtlibtorrent/qbtsession.cpp
  2. 9
      src/qtlibtorrent/qtorrenthandle.cpp

5
src/qtlibtorrent/qbtsession.cpp

@ -2004,12 +2004,14 @@ void QBtSession::readAlerts() {
QTorrentHandle h(p->handle); QTorrentHandle h(p->handle);
if(h.is_valid()) { if(h.is_valid()) {
const QString hash = h.hash(); const QString hash = h.hash();
qDebug("Got a torrent finished alert for %s", qPrintable(h.name()));
#if LIBTORRENT_VERSION_MINOR > 14 #if LIBTORRENT_VERSION_MINOR > 14
// Remove .!qB extension if necessary // Remove .!qB extension if necessary
if(appendqBExtension) if(appendqBExtension)
appendqBextensionToTorrent(h, false); appendqBextensionToTorrent(h, false);
#endif #endif
const bool was_already_seeded = TorrentPersistentData::isSeed(hash); const bool was_already_seeded = TorrentPersistentData::isSeed(hash);
qDebug("Was already seeded: %d", was_already_seeded);
if(!was_already_seeded) { if(!was_already_seeded) {
h.save_resume_data(); h.save_resume_data();
qDebug("Checking if the torrent contains torrent files to download"); qDebug("Checking if the torrent contains torrent files to download");
@ -2040,15 +2042,18 @@ void QBtSession::readAlerts() {
const QDir current_dir(h.save_path()); const QDir current_dir(h.save_path());
const QDir save_dir(getSavePath(hash)); const QDir save_dir(getSavePath(hash));
if(current_dir != save_dir) { if(current_dir != save_dir) {
qDebug("Moving torrent from the temp folder");
h.move_storage(save_dir.absolutePath()); h.move_storage(save_dir.absolutePath());
} }
} }
// Remember finished state // Remember finished state
qDebug("Saving seed status");
TorrentPersistentData::saveSeedStatus(h); TorrentPersistentData::saveSeedStatus(h);
// Recheck if the user asked to // Recheck if the user asked to
if(Preferences::recheckTorrentsOnCompletion()) { if(Preferences::recheckTorrentsOnCompletion()) {
h.force_recheck(); h.force_recheck();
} }
qDebug("Emitting finishedTorrent() signal");
emit finishedTorrent(h); emit finishedTorrent(h);
qDebug("Received finished alert for %s", qPrintable(h.name())); qDebug("Received finished alert for %s", qPrintable(h.name()));
bool will_shutdown = (Preferences::shutdownWhenDownloadsComplete() || Preferences::shutdownqBTWhenDownloadsComplete()) bool will_shutdown = (Preferences::shutdownWhenDownloadsComplete() || Preferences::shutdownqBTWhenDownloadsComplete())

9
src/qtlibtorrent/qtorrenthandle.cpp

@ -584,9 +584,12 @@ void QTorrentHandle::prioritize_files(const std::vector<int> &v) {
Q_ASSERT(h.is_valid()); Q_ASSERT(h.is_valid());
if(v.size() != (unsigned int)h.get_torrent_info().num_files()) if(v.size() != (unsigned int)h.get_torrent_info().num_files())
return; return;
bool was_seed = is_seed();
h.prioritize_files(v); h.prioritize_files(v);
// Save seed status if(was_seed && !is_seed()) {
TorrentPersistentData::saveSeedStatus(*this); // Reset seed status
TorrentPersistentData::saveSeedStatus(*this);
}
} }
void QTorrentHandle::set_ratio(float ratio) const { void QTorrentHandle::set_ratio(float ratio) const {
@ -622,7 +625,7 @@ void QTorrentHandle::queue_position_top() const {
void QTorrentHandle::queue_position_bottom() const { void QTorrentHandle::queue_position_bottom() const {
Q_ASSERT(h.is_valid()); Q_ASSERT(h.is_valid());
h.queue_position_bottom(); h.queue_position_bottom();
} }
void QTorrentHandle::force_reannounce() { void QTorrentHandle::force_reannounce() {

Loading…
Cancel
Save