From 6951619c04a068f1132c6ab6f5c9a1c25053a128 Mon Sep 17 00:00:00 2001 From: Christophe Dumez Date: Sun, 29 Jul 2007 15:17:50 +0000 Subject: [PATCH] - Improved updateDlList code - Added some ASSERTS --- src/FinishedTorrents.cpp | 2 +- src/GUI.cpp | 25 +++++++++++++++---------- src/GUI.h | 1 + 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/FinishedTorrents.cpp b/src/FinishedTorrents.cpp index d270be2ed..b07628a49 100644 --- a/src/FinishedTorrents.cpp +++ b/src/FinishedTorrents.cpp @@ -164,7 +164,7 @@ void FinishedTorrents::on_actionSet_upload_limit_triggered(){ } void FinishedTorrents::updateFinishedList(){ -// qDebug("Updating finished list"); + Q_ASSERT((GUI*)parent->getCurrentTabIndex() == 1); QString hash; foreach(hash, finishedSHAs){ torrent_handle h = BTSession->getTorrentHandle(hash); diff --git a/src/GUI.cpp b/src/GUI.cpp index 38f663428..46e08f400 100644 --- a/src/GUI.cpp +++ b/src/GUI.cpp @@ -565,7 +565,7 @@ void GUI::updateDlList(bool force){ finishedTorrentTab->updateFinishedList(); return; } -// qDebug("Updating download list"); + Q_ASSERT(tabs->currentIndex() == 0); LCD_UpSpeed->display(tmp); // UP LCD LCD_DownSpeed->display(tmp2); // DL LCD // browse handles @@ -577,7 +577,15 @@ void GUI::updateDlList(bool force){ try{ torrent_status torrentStatus = h.status(); QString fileHash = QString(misc::toString(h.info_hash()).c_str()); + // If this is a finished torrent, no need to refresh it here + if(finishedSHAs.indexOf(fileHash) != -1) continue; int row = getRowFromHash(fileHash); + if(row == -1){ + qDebug("Info: Could not find filename in download list, adding it..."); + restoreInDownloadList(h); + row = getRowFromHash(fileHash); + } + Q_ASSERT(row != -1); if(BTSession->getTorrentsToPauseAfterChecking().indexOf(fileHash) != -1){ // Pause torrent if it finished checking and it is was supposed to be paused. // This is a trick to see the progress of the pause torrents on startup @@ -595,21 +603,15 @@ void GUI::updateDlList(bool force){ BTSession->setTorrentFinishedChecking(fileHash); } } - row = getRowFromHash(fileHash); // List may have been sorted in the meantime + // No need to update a paused torrent if(h.is_paused()) continue; - if(finishedSHAs.indexOf(fileHash) != -1) continue; - if(row == -1){ - qDebug("Info: Could not find filename in download list, adding it..."); - restoreInDownloadList(h); - row = getRowFromHash(fileHash); - } // Parse download state torrent_info ti = h.get_torrent_info(); // Setting download state switch(torrentStatus.state){ case torrent_status::finished: case torrent_status::seeding: - qDebug("Warning: this shouldn't happen, no finished torrents in download tab, moving it"); + qDebug("Not good: no finished torrents in download tab, moving it"); finishedTorrent(h); continue; case torrent_status::checking_files: @@ -659,7 +661,10 @@ void GUI::updateDlList(bool force){ continue; } } -// qDebug("Updated Download list"); +} + +unsigned int GUI::getCurrentTabIndex() const{ + return tabs->currentIndex(); } void GUI::restoreInDownloadList(torrent_handle h){ diff --git a/src/GUI.h b/src/GUI.h index 086fd220f..ffc92f3c1 100644 --- a/src/GUI.h +++ b/src/GUI.h @@ -187,6 +187,7 @@ class GUI : public QMainWindow, private Ui::MainWindow{ ~GUI(); // Methods int getRowFromHash(QString hash) const; + unsigned int getCurrentTabIndex() const; QPoint screenCenter(); };