diff options
| -rw-r--r-- | src/plugins/Transports/http/downloader.cpp | 2 | ||||
| -rw-r--r-- | src/plugins/Transports/http/downloader.h | 2 | ||||
| -rw-r--r-- | src/plugins/Transports/http/httpinputsource.cpp | 7 | ||||
| -rw-r--r-- | src/plugins/Transports/http/httpinputsource.h | 3 | ||||
| -rw-r--r-- | src/plugins/Transports/http/streamreader.cpp | 50 | ||||
| -rw-r--r-- | src/plugins/Transports/http/streamreader.h | 20 | ||||
| -rw-r--r-- | src/plugins/Transports/mms/downloader.cpp | 2 | ||||
| -rw-r--r-- | src/plugins/Transports/mms/downloader.h | 2 | ||||
| -rw-r--r-- | src/plugins/Transports/mms/mmsinputsource.cpp | 7 | ||||
| -rw-r--r-- | src/plugins/Transports/mms/mmsinputsource.h | 3 | ||||
| -rw-r--r-- | src/plugins/Transports/mms/streamreader.cpp | 52 | ||||
| -rw-r--r-- | src/plugins/Transports/mms/streamreader.h | 23 | ||||
| -rw-r--r-- | src/qmmp/emptyinputsource.cpp | 2 | ||||
| -rw-r--r-- | src/qmmp/fileinputsource.cpp | 2 | ||||
| -rw-r--r-- | src/qmmp/inputsource.h | 9 | ||||
| -rw-r--r-- | src/qmmp/soundcore.cpp | 11 | ||||
| -rw-r--r-- | src/qmmp/soundcore.h | 2 |
17 files changed, 56 insertions, 143 deletions
diff --git a/src/plugins/Transports/http/downloader.cpp b/src/plugins/Transports/http/downloader.cpp index dafc9ea26..1befd2c59 100644 --- a/src/plugins/Transports/http/downloader.cpp +++ b/src/plugins/Transports/http/downloader.cpp @@ -325,7 +325,7 @@ void Downloader::checkBuffer() metaData.insert(Qmmp::URL, m_url); StateHandler::instance()->dispatch(metaData); } - emit readyRead(); + emit ready(); } else if (!m_ready) { diff --git a/src/plugins/Transports/http/downloader.h b/src/plugins/Transports/http/downloader.h index fd61486ba..9d0757cad 100644 --- a/src/plugins/Transports/http/downloader.h +++ b/src/plugins/Transports/http/downloader.h @@ -64,7 +64,7 @@ public: bool isReady(); signals: - void readyRead(); + void ready(); private: qint64 readBuffer(char* data, qint64 maxlen); diff --git a/src/plugins/Transports/http/httpinputsource.cpp b/src/plugins/Transports/http/httpinputsource.cpp index a28730ef9..0c6f841a8 100644 --- a/src/plugins/Transports/http/httpinputsource.cpp +++ b/src/plugins/Transports/http/httpinputsource.cpp @@ -24,7 +24,7 @@ HTTPInputSource::HTTPInputSource(const QString &url, QObject *parent) : InputSource(url,parent) { m_reader = new StreamReader(url, this); - connect(m_reader, SIGNAL(readyRead()),SLOT(open())); + connect(m_reader, SIGNAL(ready()),SIGNAL(ready())); } QIODevice *HTTPInputSource::ioDevice() @@ -48,8 +48,3 @@ QString HTTPInputSource::contentType() const return m_reader->contentType(); } -void HTTPInputSource::open() -{ - m_reader->open(QIODevice::ReadOnly); - emit(ready(this)); -} diff --git a/src/plugins/Transports/http/httpinputsource.h b/src/plugins/Transports/http/httpinputsource.h index 8032714a1..56988a6fe 100644 --- a/src/plugins/Transports/http/httpinputsource.h +++ b/src/plugins/Transports/http/httpinputsource.h @@ -39,9 +39,6 @@ public: bool isReady(); QString contentType() const; -private slots: - void open(); - private: StreamReader *m_reader; diff --git a/src/plugins/Transports/http/streamreader.cpp b/src/plugins/Transports/http/streamreader.cpp index 1d482259a..074b32683 100644 --- a/src/plugins/Transports/http/streamreader.cpp +++ b/src/plugins/Transports/http/streamreader.cpp @@ -26,7 +26,7 @@ StreamReader::StreamReader(const QString &name, QObject *parent) : QIODevice(parent) { m_downloader = new Downloader(this, name); - connect(m_downloader, SIGNAL(readyRead()), SIGNAL(readyRead())); + connect(m_downloader, SIGNAL(ready()), SIGNAL(ready())); } StreamReader::~StreamReader() @@ -50,14 +50,10 @@ qint64 StreamReader::bytesToWrite () const return -1; } -bool StreamReader::canReadLine () const -{ - return false; -} - void StreamReader::close () { m_downloader->abort(); + QIODevice::close(); } bool StreamReader::isSequential () const @@ -65,49 +61,20 @@ bool StreamReader::isSequential () const return true; } -bool StreamReader::open ( OpenMode mode ) +bool StreamReader::open (OpenMode mode) { if (mode != QIODevice::ReadOnly) return false; - //downloadFile(); - setOpenMode(QIODevice::ReadOnly); - if (m_downloader->isReady()) - return true; - else - return false; + QIODevice::open(mode); + return m_downloader->isReady(); } -bool StreamReader::reset () +bool StreamReader::seek (qint64 pos) { - QIODevice::reset(); - return true; -} - -bool StreamReader::seek ( qint64 pos ) -{ - QIODevice::seek(pos); + Q_UNUSED(pos); return false; } -qint64 StreamReader::size () const -{ - return bytesAvailable (); -} - -bool StreamReader::waitForBytesWritten (int msecs) -{ - Q_UNUSED(msecs); - //usleep(msecs*1000); - return true; -} - -bool StreamReader::waitForReadyRead (int msecs) -{ - Q_UNUSED(msecs); - //usleep(msecs*1000); - return true; -} - qint64 StreamReader::readData(char* data, qint64 maxlen) { return m_downloader->read (data, maxlen); @@ -115,7 +82,7 @@ qint64 StreamReader::readData(char* data, qint64 maxlen) qint64 StreamReader::writeData(const char*, qint64) { - return 0; + return -1; } void StreamReader::downloadFile() @@ -128,7 +95,6 @@ QString StreamReader::contentType() m_downloader->mutex()->lock (); m_contentType = m_downloader->contentType(); m_downloader->mutex()->unlock(); - qApp->processEvents(); qDebug("StreamReader: content type: %s", qPrintable(m_contentType)); return m_contentType; } diff --git a/src/plugins/Transports/http/streamreader.h b/src/plugins/Transports/http/streamreader.h index 3aa02c0e9..afaa1ad78 100644 --- a/src/plugins/Transports/http/streamreader.h +++ b/src/plugins/Transports/http/streamreader.h @@ -39,39 +39,31 @@ public: ~StreamReader(); - /** + /** * QIODevice API */ bool atEnd () const; qint64 bytesAvailable () const; qint64 bytesToWrite () const; - bool canReadLine () const; void close (); bool isSequential () const; - bool open ( OpenMode mode ); - //qint64 pos () const; - bool reset (); - bool seek ( qint64 pos ); - qint64 size () const; - bool waitForBytesWritten ( int msecs ); - bool waitForReadyRead ( int msecs ); - + bool open (OpenMode mode); + bool seek (qint64 pos); /** - * returns content type of a stream + * helper functions */ QString contentType(); void downloadFile(); signals: - void readyRead(); + void ready(); + void error(); protected: qint64 readData(char*, qint64); qint64 writeData(const char*, qint64); private: - //void downloadFile(); - void fillBuffer(); QUrl m_url; QString m_contentType; Downloader *m_downloader; diff --git a/src/plugins/Transports/mms/downloader.cpp b/src/plugins/Transports/mms/downloader.cpp index a3c1abd5a..9acdcb813 100644 --- a/src/plugins/Transports/mms/downloader.cpp +++ b/src/plugins/Transports/mms/downloader.cpp @@ -148,7 +148,7 @@ void Downloader::checkBuffer() QMap<Qmmp::MetaData, QString> metaData; metaData.insert(Qmmp::URL, m_url); StateHandler::instance()->dispatch(metaData); - emit readyRead(); + emit ready(); } else if (!m_ready) { diff --git a/src/plugins/Transports/mms/downloader.h b/src/plugins/Transports/mms/downloader.h index 0a6d237a9..bfab9e24b 100644 --- a/src/plugins/Transports/mms/downloader.h +++ b/src/plugins/Transports/mms/downloader.h @@ -49,7 +49,7 @@ public: bool isReady(); signals: - void readyRead(); + void ready(); private: QMutex m_mutex; diff --git a/src/plugins/Transports/mms/mmsinputsource.cpp b/src/plugins/Transports/mms/mmsinputsource.cpp index a8120899f..10f9e6983 100644 --- a/src/plugins/Transports/mms/mmsinputsource.cpp +++ b/src/plugins/Transports/mms/mmsinputsource.cpp @@ -24,7 +24,7 @@ MMSInputSource::MMSInputSource(const QString &url, QObject *parent) : InputSource(url,parent) { m_reader = new StreamReader(url, this); - connect(m_reader, SIGNAL(readyRead()),SLOT(open())); + connect(m_reader, SIGNAL(ready()),SLOT(ready())); } QIODevice *MMSInputSource::ioDevice() @@ -48,8 +48,3 @@ QString MMSInputSource::contentType() const return "audio/x-ms-wma"; } -void MMSInputSource::open() -{ - m_reader->open(QIODevice::ReadOnly); - emit(ready(this)); -} diff --git a/src/plugins/Transports/mms/mmsinputsource.h b/src/plugins/Transports/mms/mmsinputsource.h index d8695b7c2..c4e7bce67 100644 --- a/src/plugins/Transports/mms/mmsinputsource.h +++ b/src/plugins/Transports/mms/mmsinputsource.h @@ -39,9 +39,6 @@ public: bool isReady(); QString contentType() const; -private slots: - void open(); - private: StreamReader *m_reader; diff --git a/src/plugins/Transports/mms/streamreader.cpp b/src/plugins/Transports/mms/streamreader.cpp index ca99d7991..951238e0e 100644 --- a/src/plugins/Transports/mms/streamreader.cpp +++ b/src/plugins/Transports/mms/streamreader.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2010 by Ilya Kotov * + * Copyright (C) 2006-2008 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -26,7 +26,7 @@ StreamReader::StreamReader(const QString &name, QObject *parent) : QIODevice(parent) { m_downloader = new Downloader(this, name); - connect(m_downloader, SIGNAL(readyRead()), SIGNAL(readyRead())); + connect(m_downloader, SIGNAL(ready()), SIGNAL(ready())); } StreamReader::~StreamReader() @@ -50,14 +50,10 @@ qint64 StreamReader::bytesToWrite () const return -1; } -bool StreamReader::canReadLine () const -{ - return false; -} - void StreamReader::close () { m_downloader->abort(); + QIODevice::close(); } bool StreamReader::isSequential () const @@ -65,49 +61,20 @@ bool StreamReader::isSequential () const return true; } -bool StreamReader::open ( OpenMode mode ) +bool StreamReader::open (OpenMode mode) { if (mode != QIODevice::ReadOnly) return false; - //downloadFile(); - setOpenMode(QIODevice::ReadOnly); - if (m_downloader->isReady()) - return true; - else - return false; + QIODevice::open(mode); + return m_downloader->isReady(); } -bool StreamReader::reset () +bool StreamReader::seek (qint64 pos) { - QIODevice::reset(); - return true; -} - -bool StreamReader::seek ( qint64 pos ) -{ - QIODevice::seek(pos); + Q_UNUSED(pos); return false; } -qint64 StreamReader::size () const -{ - return bytesAvailable (); -} - -bool StreamReader::waitForBytesWritten (int msecs) -{ - Q_UNUSED(msecs); - //usleep(msecs*1000); - return true; -} - -bool StreamReader::waitForReadyRead (int msecs) -{ - Q_UNUSED(msecs); - //usleep(msecs*1000); - return true; -} - qint64 StreamReader::readData(char* data, qint64 maxlen) { return m_downloader->read (data, maxlen); @@ -115,11 +82,10 @@ qint64 StreamReader::readData(char* data, qint64 maxlen) qint64 StreamReader::writeData(const char*, qint64) { - return 0; + return -1; } void StreamReader::downloadFile() { m_downloader->start(); } - diff --git a/src/plugins/Transports/mms/streamreader.h b/src/plugins/Transports/mms/streamreader.h index 1ada6aea5..a0c18119c 100644 --- a/src/plugins/Transports/mms/streamreader.h +++ b/src/plugins/Transports/mms/streamreader.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2010 by Ilya Kotov * + * Copyright (C) 2006-2008 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -39,35 +39,30 @@ public: ~StreamReader(); - /** + /** * QIODevice API */ bool atEnd () const; qint64 bytesAvailable () const; qint64 bytesToWrite () const; - bool canReadLine () const; void close (); bool isSequential () const; - bool open ( OpenMode mode ); - //qint64 pos () const; - bool reset (); - bool seek ( qint64 pos ); - qint64 size () const; - bool waitForBytesWritten ( int msecs ); - bool waitForReadyRead ( int msecs ); - + bool open (OpenMode mode); + bool seek (qint64 pos); + /** + * helper functions + */ void downloadFile(); signals: - void readyRead(); + void ready(); + void error(); protected: qint64 readData(char*, qint64); qint64 writeData(const char*, qint64); private: - //void downloadFile(); - void fillBuffer(); QUrl m_url; QString m_contentType; Downloader *m_downloader; diff --git a/src/qmmp/emptyinputsource.cpp b/src/qmmp/emptyinputsource.cpp index 43a92af2b..1b1c13748 100644 --- a/src/qmmp/emptyinputsource.cpp +++ b/src/qmmp/emptyinputsource.cpp @@ -34,7 +34,7 @@ bool EmptyInputSource::initialize() { m_ok = true; //check decoders if(m_ok) - emit ready(this); + emit ready(); return m_ok; } diff --git a/src/qmmp/fileinputsource.cpp b/src/qmmp/fileinputsource.cpp index 2ea277539..b3c156292 100644 --- a/src/qmmp/fileinputsource.cpp +++ b/src/qmmp/fileinputsource.cpp @@ -35,7 +35,7 @@ bool FileInputSource::initialize() { bool ok = m_file->open(QIODevice::ReadOnly); if(ok) - emit ready(this); + emit ready(); else qWarning("FileInputSource: error: %s", qPrintable(m_file->errorString())); return ok; diff --git a/src/qmmp/inputsource.h b/src/qmmp/inputsource.h index 49384e61c..efd50a5ae 100644 --- a/src/qmmp/inputsource.h +++ b/src/qmmp/inputsource.h @@ -63,7 +63,7 @@ public: */ const QString url() const; /*! - * Returns start position is ms; + * Returns start position in ms; */ qint64 offset() const; /*! @@ -93,9 +93,12 @@ public: signals: /*! * This signal is emitted when transport is ready for usage. - * @param s Pointer of this object. */ - void ready(InputSource *s); + void ready(); + /*! + * This signal is emitted after an error occurred. + */ + void error(); private: QString m_url; diff --git a/src/qmmp/soundcore.cpp b/src/qmmp/soundcore.cpp index bb51780c5..6822c3ed7 100644 --- a/src/qmmp/soundcore.cpp +++ b/src/qmmp/soundcore.cpp @@ -93,7 +93,7 @@ bool SoundCore::play(const QString &source, bool queue, qint64 offset) m_pendingSources.append(s); if(state() == Qmmp::Stopped) m_handler->dispatch(Qmmp::Buffering); - connect(s, SIGNAL(ready(InputSource *)), SLOT(enqueue(InputSource *))); + connect(s, SIGNAL(ready()), SLOT(enqueue())); bool ok = s->initialize(); if(!ok) { @@ -221,8 +221,15 @@ QString SoundCore::metaData(Qmmp::MetaData key) return m_handler->metaData(key); } -bool SoundCore::enqueue(InputSource *s) +bool SoundCore::enqueue() { + InputSource *s = qobject_cast<InputSource*>(sender()); + if(!s) + { + qWarning("SoundCore: unknown signal source"); + return false; + } + m_pendingSources.removeAll(s); m_url = s->url(); if(!m_engine) diff --git a/src/qmmp/soundcore.h b/src/qmmp/soundcore.h index aef2896ce..68d32df9a 100644 --- a/src/qmmp/soundcore.h +++ b/src/qmmp/soundcore.h @@ -197,7 +197,7 @@ signals: void nextTrackRequest(); private slots: - bool enqueue(InputSource *); + bool enqueue(); void startPendingEngine(); void updateVolume(); |
