diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2011-10-01 14:25:23 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2011-10-01 14:25:23 +0000 |
| commit | b614c431e9029095b0852a8fbeb3624a412ef82a (patch) | |
| tree | 9095d2e7cc3175a8a60d78e3096382e72dc6aafd /src | |
| parent | 801c1a48499469e1d260b82af19189364a7586d3 (diff) | |
| download | qmmp-b614c431e9029095b0852a8fbeb3624a412ef82a.tar.gz qmmp-b614c431e9029095b0852a8fbeb3624a412ef82a.tar.bz2 qmmp-b614c431e9029095b0852a8fbeb3624a412ef82a.zip | |
fixed memory leak, fixed progress dialog
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2366 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
| -rw-r--r-- | src/plugins/General/converter/converter.cpp | 24 | ||||
| -rw-r--r-- | src/plugins/General/converter/converter.h | 2 | ||||
| -rw-r--r-- | src/plugins/General/converter/converterhelper.cpp | 1 |
3 files changed, 23 insertions, 4 deletions
diff --git a/src/plugins/General/converter/converter.cpp b/src/plugins/General/converter/converter.cpp index 3a205472f..bdaf4cd3e 100644 --- a/src/plugins/General/converter/converter.cpp +++ b/src/plugins/General/converter/converter.cpp @@ -94,6 +94,7 @@ void Converter::run() QString path = settings.value("Converter/out_dir", music_path).toString(); QString pattern = settings.value("Converter/file_name","%p - %t").toString(); MetaDataFormatter formatter(pattern); + MetaDataFormatter desc_formatter("%p%if(%p&%t, - ,)%t [%l]"); while(!m_decoders.isEmpty()) { @@ -108,10 +109,16 @@ void Converter::run() //ignore } + QString desc = desc_formatter.parse(list[0]->metaData(), list[0]->length()); + emit desriptionChanged(desc); + QString name = formatter.parse(list[0]->metaData(), list[0]->length()); QString full_path = path + "/" + name + ".ogg"; - QString command = "oggenc -q 1 -o %f -"; - command.replace("%f", "\"" + full_path + "\""); + QString command = "oggenc -q 1 -o %o -"; + command.replace("%o", "\"" + full_path + "\""); + + qDeleteAll(list); + list.clear(); char wave_header[] = { 0x52, 0x49, 0x46, 0x46, //"RIFF" 0x00, 0x00, 0x00, 0x00, //(file size) - 8 @@ -143,6 +150,7 @@ void Converter::run() if(!enc_pipe) { qWarning("Converter: unable to open pipe"); + m_inputs.take(decoder)->deleteLater(); delete decoder; continue; @@ -150,6 +158,7 @@ void Converter::run() size_t to_write = sizeof(wave_header); if(to_write != fwrite(&wave_header, 1, to_write, enc_pipe)) { + m_inputs.take(decoder)->deleteLater(); delete decoder; pclose(enc_pipe); continue; @@ -158,6 +167,7 @@ void Converter::run() convert(decoder, enc_pipe); pclose(enc_pipe); //fclose(enc_pipe); + m_inputs.take(decoder)->deleteLater(); delete decoder; } } @@ -171,6 +181,8 @@ bool Converter::convert(Decoder *decoder, FILE *file) quint64 len = 0; AudioParameters ap = decoder->audioParameters(); qint64 size = decoder->totalTime() * ap.sampleRate() * ap.channels() * ap.sampleSize() / 1000; + int percent = 0; + int prev_percent = 0; forever { // decode @@ -191,7 +203,12 @@ bool Converter::convert(Decoder *decoder, FILE *file) output_at -= len; memmove(output_buf, output_buf + len, output_at); } - emit progress(floor(100*total/size)); + percent = 100 * total / size; + if(percent != prev_percent) + { + prev_percent = percent; + emit progress(percent); + } } else if (len <= 0) { @@ -202,4 +219,3 @@ bool Converter::convert(Decoder *decoder, FILE *file) } return false; } - diff --git a/src/plugins/General/converter/converter.h b/src/plugins/General/converter/converter.h index 06ac844de..2a65f3983 100644 --- a/src/plugins/General/converter/converter.h +++ b/src/plugins/General/converter/converter.h @@ -39,6 +39,8 @@ public: signals: void progress(int percent); + void desriptionChanged(QString text); + void error(QString text); private: void run(); diff --git a/src/plugins/General/converter/converterhelper.cpp b/src/plugins/General/converter/converterhelper.cpp index df5d61eb3..66f3895c7 100644 --- a/src/plugins/General/converter/converterhelper.cpp +++ b/src/plugins/General/converter/converterhelper.cpp @@ -43,6 +43,7 @@ ConverterHelper::ConverterHelper(QObject *parent) : QObject(parent) m_progress->setCancelButtonText(tr("Cancel")); connect(m_converter,SIGNAL(progress(int)),m_progress,SLOT(setValue(int))); connect(m_converter, SIGNAL(finished()), m_progress, SLOT(reset())); + connect(m_converter, SIGNAL(desriptionChanged(QString)), m_progress, SLOT(setLabelText(QString))); } ConverterHelper::~ConverterHelper() |
