Browse Source

- Fixed bad assert

- Little checking before saving url seeds list
- Little optimization to make fastresume data saving faster
adaptive-webui-19844
Christophe Dumez 17 years ago
parent
commit
04352cce3c
  1. 14
      src/bittorrent.cpp
  2. 4
      src/properties_imp.cpp

14
src/bittorrent.cpp

@ -692,7 +692,7 @@ void bittorrent::saveFastResumeAndRatioData(){
if(! torrentBackup.exists()){ if(! torrentBackup.exists()){
torrentBackup.mkpath(torrentBackup.path()); torrentBackup.mkpath(torrentBackup.path());
} }
// Write fast resume data // Pause torrents
std::vector<torrent_handle> handles = s->get_torrents(); std::vector<torrent_handle> handles = s->get_torrents();
for(unsigned int i=0; i<handles.size(); ++i){ for(unsigned int i=0; i<handles.size(); ++i){
torrent_handle &h = handles[i]; torrent_handle &h = handles[i];
@ -702,11 +702,19 @@ void bittorrent::saveFastResumeAndRatioData(){
} }
// Pause download (needed before fast resume writing) // Pause download (needed before fast resume writing)
h.pause(); h.pause();
}
// Write fast resume data
for(unsigned int i=0; i<handles.size(); ++i){
torrent_handle &h = handles[i];
if(!h.is_valid()){
qDebug("/!\\ Error: Invalid handle");
continue;
}
QString fileHash = QString(misc::toString(h.info_hash()).c_str()); QString fileHash = QString(misc::toString(h.info_hash()).c_str());
while(!receivedPausedAlert(fileHash)){ while(!receivedPausedAlert(fileHash)){
//qDebug("Sleeping while waiting that %s is paused", misc::toString(h.info_hash()).c_str()); //qDebug("Sleeping while waiting that %s is paused", misc::toString(h.info_hash()).c_str());
//printPausedTorrents(); //printPausedTorrents();
SleeperThread::msleep(500); SleeperThread::msleep(300);
readAlerts(); readAlerts();
} }
// Extracting resume data // Extracting resume data
@ -1042,7 +1050,7 @@ void bittorrent::reloadTorrent(const torrent_handle &h){
} }
// Write fast resume data // Write fast resume data
// Torrent is already paused // Torrent is already paused
Q_ASSERT(pausedTorrents.indexOf(fileHash) != 1); Q_ASSERT(pausedTorrents.indexOf(fileHash) != -1);
// Extracting resume data // Extracting resume data
if (h.has_metadata()){ if (h.has_metadata()){
// get fast resume data // get fast resume data

4
src/properties_imp.cpp

@ -365,18 +365,22 @@ void properties::deleteSelectedUrlSeeds(){
QList<QListWidgetItem *> selectedItems; QList<QListWidgetItem *> selectedItems;
selectedItems = listWebSeeds->selectedItems(); selectedItems = listWebSeeds->selectedItems();
QListWidgetItem *item; QListWidgetItem *item;
bool change = false;
foreach(item, selectedItems){ foreach(item, selectedItems){
QString url_seed = item->text(); QString url_seed = item->text();
int index = urlSeeds.indexOf(url_seed); int index = urlSeeds.indexOf(url_seed);
Q_ASSERT(index != -1); Q_ASSERT(index != -1);
urlSeeds.removeAt(index); urlSeeds.removeAt(index);
h.remove_url_seed(misc::toString((const char*)url_seed.toUtf8())); h.remove_url_seed(misc::toString((const char*)url_seed.toUtf8()));
change = true;
} }
if(change){
// Save them to disk // Save them to disk
saveWebSeeds(); saveWebSeeds();
// Refresh list // Refresh list
loadWebSeeds(); loadWebSeeds();
} }
}
void properties::deleteSelectedTrackers(){ void properties::deleteSelectedTrackers(){
std::vector<announce_entry> trackers = h.trackers(); std::vector<announce_entry> trackers = h.trackers();

Loading…
Cancel
Save