aboutsummaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2009-09-22 19:14:00 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2009-09-22 19:14:00 +0000
commit8dd8b452d8e8e8ef33be0421153d9026a432535a (patch)
tree3ad231e706e9a17ed0a3bb4c0ace909149179783 /src/plugins
parente235adde49d24b6d034ef2b74b28ad2a6cea2fee (diff)
downloadqmmp-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.cpp16
-rw-r--r--src/plugins/Input/cue/decoder_cue.h1
-rw-r--r--src/plugins/Input/flac/decoder_flac.cpp2
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