aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-05-25 19:27:22 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-05-25 19:27:22 +0000
commitdf5422ee06ec484c25fcc35fb9d5cd0d19b1cf66 (patch)
tree591b8bf42cf77fe63c8e842fcf71273802900b85
parenta0f344006568f24283bd75bd0f8155f5661823cd (diff)
downloadqmmp-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.cpp32
-rw-r--r--src/qmmp/filetag.cpp2
-rw-r--r--src/qmmp/filetag.h2
-rw-r--r--src/qmmp/streamreader.cpp2
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;