shithub: choc

Download patch

ref: 9cc843c60027cb9365f3eaae3028343769d17a26
parent: 324c1d8776054394d30ea987f84c1ba2f1b1ff6f
author: Simon Howard <fraggle@gmail.com>
date: Sat Aug 29 17:22:32 EDT 2009

Load MIDI file.

Subversion-branch: /branches/opl-branch
Subversion-revision: 1637

--- a/src/i_oplmusic.c
+++ b/src/i_oplmusic.c
@@ -40,6 +40,7 @@
 #include "z_zone.h"
 
 #include "opl.h"
+#include "midifile.h"
 
 #define MAXMIDLENGTH (96 * 1024)
 #define GENMIDI_NUM_INSTRS  128
@@ -507,6 +508,11 @@
     {
         return;
     }
+
+    if (handle != NULL)
+    {
+        MIDI_FreeFile(handle);
+    }
 }
 
 // Determine whether memory block is a .mid file 
@@ -544,6 +550,7 @@
 
 static void *I_OPL_RegisterSong(void *data, int len)
 {
+    midi_file_t *result;
     char *filename;
 
     if (!music_initialised)
@@ -567,8 +574,13 @@
         ConvertMus(data, len, filename);
     }
 
-    // ....
+    result = MIDI_LoadFile(filename);
 
+    if (result == NULL)
+    {
+        fprintf(stderr, "I_OPL_RegisterSong: Failed to load MID.\n");
+    }
+
     // remove file now
 
     remove(filename);
@@ -575,7 +587,7 @@
 
     Z_Free(filename);
 
-    return NULL;
+    return result;
 }
 
 // Is the song playing?