From 2ad1c569334294f0977902ea5a9f6dcb60b0bc81 Mon Sep 17 00:00:00 2001 From: Christophe Dumez Date: Sun, 22 Jul 2007 15:18:09 +0000 Subject: [PATCH] - Create urlstream for subdownloadthreads only --- TODO | 1 + src/downloadThread.h | 21 +++++++++++++-------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/TODO b/TODO index 48c98c7b4..c86591633 100644 --- a/TODO +++ b/TODO @@ -44,6 +44,7 @@ * beta3 - Windows port (Chris - Peerkoel) - Translations update + - .ico support? * beta2 - Wait for some bug fixes in libtorrent : - upload/download limit per torrent diff --git a/src/downloadThread.h b/src/downloadThread.h index 0a688d70c..9a0afcf72 100644 --- a/src/downloadThread.h +++ b/src/downloadThread.h @@ -45,7 +45,7 @@ class downloadThread : public QThread { QMutex mutex; QWaitCondition condition; bool abort; - URLStream url_stream; + URLStream *url_stream; QList subThreads; bool subThread; @@ -61,6 +61,7 @@ class downloadThread : public QThread { qDebug("Creating downloadThread"); abort = false; this->subThread = subThread; + url_stream = 0; qDebug("downloadThread created"); } @@ -69,10 +70,14 @@ class downloadThread : public QThread { abort = true; condition.wakeOne(); mutex.unlock(); + if(url_stream != 0) + delete url_stream; wait(); } void downloadUrl(QString url){ + if(subThread && url_stream == 0) + url_stream = new URLStream(); QMutexLocker locker(&mutex); url_list << url; if(!isRunning()){ @@ -139,31 +144,31 @@ class downloadThread : public QThread { std::cerr << "Error: could't create temporary file: " << (const char*)filePath.toUtf8() << '\n'; continue; } - URLStream::Error status = url_stream.get((const char*)url.toUtf8()); + URLStream::Error status = url_stream->get((const char*)url.toUtf8()); if(status){ // Failure QString error_msg = errorCodeToString(status); qDebug("Download failed for %s, reason: %s", (const char*)url.toUtf8(), (const char*)error_msg.toUtf8()); - url_stream.close(); + url_stream->close(); emit downloadFailureST(this, url, error_msg); continue; } qDebug("Downloading %s...", (const char*)url.toUtf8()); char cbuf[1024]; int len; - while(!url_stream.eof()) { - url_stream.read(cbuf, sizeof(cbuf)); - len = url_stream.gcount(); + while(!url_stream->eof()) { + url_stream->read(cbuf, sizeof(cbuf)); + len = url_stream->gcount(); if(len > 0) dest_file.write(cbuf, len); if(abort){ dest_file.close(); - url_stream.close(); + url_stream->close(); return; } } dest_file.close(); - url_stream.close(); + url_stream->close(); emit downloadFinishedST(this, url, filePath); qDebug("download completed here: %s", (const char*)filePath.toUtf8()); }else{