diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-05-25 19:27:22 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-05-25 19:27:22 +0000 |
| commit | df5422ee06ec484c25fcc35fb9d5cd0d19b1cf66 (patch) | |
| tree | 591b8bf42cf77fe63c8e842fcf71273802900b85 | |
| parent | a0f344006568f24283bd75bd0f8155f5661823cd (diff) | |
| download | qmmp-df5422ee06ec484c25fcc35fb9d5cd0d19b1cf66.tar.gz qmmp-df5422ee06ec484c25fcc35fb9d5cd0d19b1cf66.tar.bz2 qmmp-df5422ee06ec484c25fcc35fb9d5cd0d19b1cf66.zip | |
stream reader: play stream buffer after disconnect
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@383 90c681e8-e032-0410-971d-27865f9a5e38
| -rw-r--r-- | src/qmmp/downloader.cpp | 32 | ||||
| -rw-r--r-- | src/qmmp/filetag.cpp | 2 | ||||
| -rw-r--r-- | src/qmmp/filetag.h | 2 | ||||
| -rw-r--r-- | src/qmmp/streamreader.cpp | 2 |
4 files changed, 20 insertions, 18 deletions
diff --git a/src/qmmp/downloader.cpp b/src/qmmp/downloader.cpp index 362e2861f..731241f44 100644 --- a/src/qmmp/downloader.cpp +++ b/src/qmmp/downloader.cpp @@ -89,6 +89,10 @@ static size_t curl_header(void *data, size_t size, size_t nmemb, int curl_progress(void *pointer, double dltotal, double dlnow, double ultotal, double ulnow) { + Q_UNUSED(dltotal); + Q_UNUSED(dlnow); + Q_UNUSED(ultotal); + Q_UNUSED(ulnow); Downloader *dl = (Downloader *)pointer; dl->mutex()->lock (); bool aborted = dl->stream()->aborted; @@ -117,6 +121,12 @@ Downloader::~Downloader() { abort(); curl_global_cleanup(); + m_stream.aborted = TRUE; + m_stream.buf_fill = 0; + if (m_stream.buf) + delete m_stream.buf; + + m_stream.buf = 0; } @@ -208,14 +218,14 @@ void Downloader::run() if (settings.value ("Proxy/use_proxy", FALSE).toBool()) curl_easy_setopt(m_handle, CURLOPT_PROXY, strdup((settings.value("Proxy/host").toString()+":"+ - settings.value("Proxy/port").toString()). - toLatin1 ().constData ())); + settings.value("Proxy/port").toString()). + toLatin1 ().constData ())); if (settings.value ("Proxy/authentication", FALSE).toBool()) curl_easy_setopt(m_handle, CURLOPT_PROXYUSERPWD, strdup((settings.value("Proxy/user").toString()+":"+ - settings.value("Proxy/passw").toString()). - toLatin1 ().constData ())); + settings.value("Proxy/passw").toString()). + toLatin1 ().constData ())); // Set url to download curl_easy_setopt(m_handle, CURLOPT_URL, strdup(m_url.toAscii().constData())); @@ -260,15 +270,7 @@ void Downloader::run() m_mutex.unlock(); return_code = curl_easy_perform(m_handle); qDebug("curl_easy_perform %d", return_code); - - m_mutex.lock(); - m_stream.aborted = TRUE; - m_stream.buf_fill = 0; - if (m_stream.buf) - delete m_stream.buf; - m_stream.buf = 0; - m_mutex.unlock(); - qDebug("Downloader: thread exited"); + qDebug("Downloader: thread finished"); } qint64 Downloader::readBuffer(char* data, qint64 maxlen) @@ -291,7 +293,7 @@ const QString &Downloader::title() const void Downloader::checkBuffer() { - if(m_stream.buf_fill > BUFFER_SIZE && !m_ready) + if (m_stream.buf_fill > BUFFER_SIZE && !m_ready) { m_ready = TRUE; qDebug("Downloader: ready"); @@ -344,7 +346,7 @@ void Downloader::parseICYMetaData(char *data) { line = line.right(line.size() - line.indexOf("=") - 1).trimmed(); m_title = line.remove("'"); - if(!m_title.isEmpty()) + if (!m_title.isEmpty()) emit titleChanged (); break; } diff --git a/src/qmmp/filetag.cpp b/src/qmmp/filetag.cpp index 3ce3b505a..27cc27c18 100644 --- a/src/qmmp/filetag.cpp +++ b/src/qmmp/filetag.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006 by Ilya Kotov * + * Copyright (C) 2007-2008 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/qmmp/filetag.h b/src/qmmp/filetag.h index f75facfa0..3501a61ad 100644 --- a/src/qmmp/filetag.h +++ b/src/qmmp/filetag.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006 by Ilya Kotov * + * Copyright (C) 2007-2008 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/qmmp/streamreader.cpp b/src/qmmp/streamreader.cpp index 095181662..68746fcea 100644 --- a/src/qmmp/streamreader.cpp +++ b/src/qmmp/streamreader.cpp @@ -74,7 +74,7 @@ bool StreamReader::open ( OpenMode mode ) return FALSE; //downloadFile(); setOpenMode(QIODevice::ReadOnly); - if (m_downloader->isRunning() && m_downloader->isReady()) + if (m_downloader->isReady()) return TRUE; else return FALSE; |
