From bb15c3bd4586fd58b82aa8006a2d658b88511a65 Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@duempel.org>
Date: Mon, 3 Nov 2008 07:30:42 +0100
Subject: mod: always initialize libmikmod

The "mod" decoder plugin was being initialized lazily, but was
deinitialized unconditionally.  That led to segmentation faults.
Convert mod_initMikMod() to be the global module initialization
method.  The MPD core should care about lazy initialization.
---
 src/decoder/mod_plugin.c | 9 +--------
 1 file changed, 1 insertion(+), 8 deletions(-)

(limited to 'src/decoder')

diff --git a/src/decoder/mod_plugin.c b/src/decoder/mod_plugin.c
index 3575fdf56..3fb4c5610 100644
--- a/src/decoder/mod_plugin.c
+++ b/src/decoder/mod_plugin.c
@@ -181,9 +181,6 @@ mod_decode(struct decoder *decoder, const char *path)
 	float secPerByte;
 	enum decoder_command cmd = DECODE_COMMAND_NONE;
 
-	if (!mod_initMikMod())
-		return false;
-
 	if (!(data = mod_open(path))) {
 		ERROR("failed to open mod: %s\n", path);
 		MikMod_Exit();
@@ -222,11 +219,6 @@ static struct tag *modTagDup(const char *file)
 	MODULE *moduleHandle;
 	char *title;
 
-	if (!mod_initMikMod()) {
-		DEBUG("modTagDup: Failed to initialize MikMod\n");
-		return NULL;
-	}
-
 	path2 = g_strdup(file);
 	moduleHandle = Player_Load(path2, 128, 0);
 	g_free(path2);
@@ -275,6 +267,7 @@ static const char *const modSuffixes[] = {
 
 const struct decoder_plugin modPlugin = {
 	.name = "mod",
+	.init = mod_initMikMod,
 	.finish = mod_finishMikMod,
 	.file_decode = mod_decode,
 	.tag_dup = modTagDup,
-- 
cgit v1.2.3