aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2011-10-01 14:25:23 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2011-10-01 14:25:23 +0000
commitb614c431e9029095b0852a8fbeb3624a412ef82a (patch)
tree9095d2e7cc3175a8a60d78e3096382e72dc6aafd
parent801c1a48499469e1d260b82af19189364a7586d3 (diff)
downloadqmmp-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
-rw-r--r--src/plugins/General/converter/converter.cpp24
-rw-r--r--src/plugins/General/converter/converter.h2
-rw-r--r--src/plugins/General/converter/converterhelper.cpp1
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()