diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2009-09-22 19:14:00 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2009-09-22 19:14:00 +0000 |
| commit | 8dd8b452d8e8e8ef33be0421153d9026a432535a (patch) | |
| tree | 3ad231e706e9a17ed0a3bb4c0ace909149179783 /src/plugins | |
| parent | e235adde49d24b6d034ef2b74b28ad2a6cea2fee (diff) | |
| download | qmmp-8dd8b452d8e8e8ef33be0421153d9026a432535a.tar.gz qmmp-8dd8b452d8e8e8ef33be0421153d9026a432535a.tar.bz2 qmmp-8dd8b452d8e8e8ef33be0421153d9026a432535a.zip | |
fixed cue+flac regression (Fixes issue 169)
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1251 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins')
| -rw-r--r-- | src/plugins/Input/cue/decoder_cue.cpp | 16 | ||||
| -rw-r--r-- | src/plugins/Input/cue/decoder_cue.h | 1 | ||||
| -rw-r--r-- | src/plugins/Input/flac/decoder_flac.cpp | 2 |
3 files changed, 16 insertions, 3 deletions
diff --git a/src/plugins/Input/cue/decoder_cue.cpp b/src/plugins/Input/cue/decoder_cue.cpp index 94d3fd4d3..03aaeb159 100644 --- a/src/plugins/Input/cue/decoder_cue.cpp +++ b/src/plugins/Input/cue/decoder_cue.cpp @@ -40,6 +40,7 @@ DecoderCUE::DecoderCUE(const QString &url) m_parser = 0; m_track = 0; m_buf = 0; + m_input = 0; } DecoderCUE::~DecoderCUE() @@ -53,6 +54,9 @@ DecoderCUE::~DecoderCUE() if(m_buf) delete [] m_buf; m_buf = 0; + if(m_input) + m_input->deleteLater(); + m_input = 0; } bool DecoderCUE::initialize() @@ -81,8 +85,16 @@ bool DecoderCUE::initialize() } m_length = m_parser->length(m_track); m_offset = m_parser->offset(m_track); - - m_decoder = df->create(m_path, new QFile(m_path)); + if(!df->properties().noInput) + { + m_input = new QFile(m_path); + if(!m_input->open(QIODevice::ReadOnly)) + { + qWarning("DecoderCUE: error: %s", qPrintable(m_input->errorString())); + return FALSE; + } + } + m_decoder = df->create(m_path, m_input); if(!m_decoder->initialize()) { qWarning("DecoderCUE: invalid audio file"); diff --git a/src/plugins/Input/cue/decoder_cue.h b/src/plugins/Input/cue/decoder_cue.h index cb77e2c3c..f8c0ee6bb 100644 --- a/src/plugins/Input/cue/decoder_cue.h +++ b/src/plugins/Input/cue/decoder_cue.h @@ -55,6 +55,7 @@ private: char *m_buf; //buffer for remainig data qint64 m_buf_size; qint64 m_sz; //sample size + QIODevice *m_input; }; #endif // DECODER_CUE_H diff --git a/src/plugins/Input/flac/decoder_flac.cpp b/src/plugins/Input/flac/decoder_flac.cpp index ff865a68b..9b675f36f 100644 --- a/src/plugins/Input/flac/decoder_flac.cpp +++ b/src/plugins/Input/flac/decoder_flac.cpp @@ -471,7 +471,7 @@ qint64 DecoderFLAC::read(char *data, qint64 size) void DecoderFLAC::deinit() { - if (data()) + if (data()->decoder) FLAC__stream_decoder_finish (data()->decoder); if (!input() && data()->input) //delete internal input only |
