summaryrefslogtreecommitdiff
path: root/plugins/converter
diff options
context:
space:
mode:
authorGravatar waker <wakeroid@gmail.com>2011-05-14 16:23:36 +0200
committerGravatar waker <wakeroid@gmail.com>2011-05-14 17:20:56 +0200
commita36ac590553118cbeac7c7e1ccbeb405f1a8bf41 (patch)
treea94b73bfd8b19a8423cbb54eff5b00c1c26529af /plugins/converter
parentb70237d07ddf2162e5b9deb51738981af109e90d (diff)
fixed memleaks in converter
Diffstat (limited to 'plugins/converter')
-rw-r--r--plugins/converter/converter.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/plugins/converter/converter.c b/plugins/converter/converter.c
index c16fb2b4..e8047376 100644
--- a/plugins/converter/converter.c
+++ b/plugins/converter/converter.c
@@ -511,6 +511,26 @@ load_encoder_presets (void) {
return 0;
}
+void
+free_encoder_presets (void) {
+ ddb_encoder_preset_t *p = encoder_presets;
+ while (p) {
+ ddb_encoder_preset_t *next = p->next;
+ if (p->title) {
+ free (p->title);
+ }
+ if (p->ext) {
+ free (p->ext);
+ }
+ if (p->encoder) {
+ free (p->encoder);
+ }
+ free (p);
+ p = next;
+ }
+ encoder_presets = NULL;
+}
+
int
load_dsp_presets (void) {
ddb_dsp_preset_t *tail = NULL;
@@ -541,6 +561,23 @@ load_dsp_presets (void) {
return 0;
}
+void
+free_dsp_presets (void) {
+ ddb_dsp_preset_t *p = dsp_presets;
+ while (p) {
+ ddb_dsp_preset_t *next = p->next;
+ if (p->title) {
+ free (p->title);
+ }
+ if (p->chain) {
+ deadbeef->dsp_preset_free (p->chain);
+ }
+ free (p);
+ p = next;
+ }
+ dsp_presets = NULL;
+}
+
ddb_dsp_preset_t *
dsp_preset_get_for_idx (int idx) {
ddb_dsp_preset_t *p = dsp_presets;
@@ -947,6 +984,8 @@ converter_start (void) {
int
converter_stop (void) {
+ free_encoder_presets ();
+ free_dsp_presets ();
return 0;
}