From 5b85288664f6f45172bb812a739e9b0cc8f1e974 Mon Sep 17 00:00:00 2001 From: Matthias Drochner Date: Wed, 28 Jan 2009 19:13:44 +0100 Subject: mikmod: call MikMod_Exit() only in the finish() method Hi - independently of libmikmod's other problems - there seems to be a problem in mpd's wrapper: MikMod_Exit() is called after the first file is decoded, which frees some ressources within the mikmod library. An attempt to play a second file leads to a crash. The appended patch fixes this for me. (I don't know what the "dup" entry is good for - someone who knows should review that too.) best regards Matthias [mk: removed 3 more MikMod_Exit() invocations] --- NEWS | 1 + src/decoder/mikmod_plugin.c | 6 ------ 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/NEWS b/NEWS index d84422ad0..074b1ec17 100644 --- a/NEWS +++ b/NEWS @@ -38,6 +38,7 @@ ver 0.14.2 (2009/??/??) * decoders: - ffmpeg: added support for the tags comment, genre, year - wavpack: pass NULL if the .wvc file fails to open + - mikmod: call MikMod_Exit() only in the finish() method * audio outputs: - jack: allocate ring buffers before connecting - jack: clear "shutdown" flag on reconnect diff --git a/src/decoder/mikmod_plugin.c b/src/decoder/mikmod_plugin.c index 2fce23f7d..ad308dbe4 100644 --- a/src/decoder/mikmod_plugin.c +++ b/src/decoder/mikmod_plugin.c @@ -167,7 +167,6 @@ mod_decode(struct decoder *decoder, const char *path) if (!(data = mod_open(path))) { g_warning("failed to open mod: %s\n", path); - MikMod_Exit(); return; } @@ -190,8 +189,6 @@ mod_decode(struct decoder *decoder, const char *path) } mod_close(data); - - MikMod_Exit(); } static struct tag *modTagDup(const char *file) @@ -207,7 +204,6 @@ static struct tag *modTagDup(const char *file) if (moduleHandle == NULL) { g_debug("modTagDup: Failed to open file: %s\n", file); - MikMod_Exit(); return NULL; } @@ -223,8 +219,6 @@ static struct tag *modTagDup(const char *file) if (title) tag_add_item(ret, TAG_ITEM_TITLE, title); - MikMod_Exit(); - return ret; } -- cgit v1.2.3