From 1afee2f4d16022bc61ee3f04029b61a953366fcf Mon Sep 17 00:00:00 2001 From: nezvers Date: Mon, 22 Feb 2021 19:34:06 +0200 Subject: [PATCH] Rename API to LoadMusicStreamFromMemory & default unload. --- src/raudio.c | 22 ++++++++++++++++------ src/raudio.h | 2 +- src/raylib.h | 2 +- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/raudio.c b/src/raudio.c index f89fd64c6..18ee15638 100644 --- a/src/raudio.c +++ b/src/raudio.c @@ -1298,7 +1298,7 @@ Music LoadMusicStream(const char *fileName) } // extension including period ".mod" -Music LoadModuleFromData(const char *fileType, const char* data, int dataSize){ +Music LoadMusicStreamFromMemory(const char *fileType, unsigned char* data, int dataSize){ Music music = { 0 }; bool musicLoaded = false; @@ -1334,10 +1334,19 @@ Music LoadModuleFromData(const char *fileType, const char* data, int dataSize){ int result = 0; jar_mod_init(ctxMod); + + // copy data to allocated memory for default UnloadMusicStream + unsigned char *newData = RL_MALLOC(dataSize); + int it = dataSize / sizeof(unsigned char); + for (int i = 0; i < it; i++){ + newData[i] = data[i]; + } + TRACELOG(LOG_WARNING, "-------: %d / %d = %d", dataSize, sizeof(unsigned char), it); + // Memory loaded version for jar_mod_load_file() if (dataSize && dataSize < 32*1024*1024) { ctxMod->modfilesize = dataSize; - ctxMod->modfile = data; + ctxMod->modfile = newData; if(jar_mod_load(ctxMod, (void*)ctxMod->modfile, dataSize)) result = dataSize; } @@ -1368,19 +1377,20 @@ Music LoadModuleFromData(const char *fileType, const char* data, int dataSize){ else if (music.ctxType == MUSIC_MODULE_MOD) { jar_mod_unload((jar_mod_context_t *)music.ctxData); RL_FREE(music.ctxData); } #endif - TRACELOG(LOG_WARNING, "FILEIO: [%s] Music data could not be loaded", fileType); + music.ctxData = NULL; + TRACELOG(LOG_WARNING, "FILEIO: [%s] Music memory could not be opened", fileType); } else { // Show some music stream info - TRACELOG(LOG_INFO, "FILEIO: [%s] Music data successfully loaded:", fileType); + TRACELOG(LOG_INFO, "FILEIO: [%s] Music memory successfully loaded:", fileType); TRACELOG(LOG_INFO, " > Total samples: %i", music.sampleCount); TRACELOG(LOG_INFO, " > Sample rate: %i Hz", music.stream.sampleRate); TRACELOG(LOG_INFO, " > Sample size: %i bits", music.stream.sampleSize); TRACELOG(LOG_INFO, " > Channels: %i (%s)", music.stream.channels, (music.stream.channels == 1)? "Mono" : (music.stream.channels == 2)? "Stereo" : "Multi"); } - - return music; + + return music; } // Unload music stream diff --git a/src/raudio.h b/src/raudio.h index ddf4875f2..cf8b767a0 100644 --- a/src/raudio.h +++ b/src/raudio.h @@ -164,7 +164,7 @@ float *GetWaveData(Wave wave); // Get samples d // Music management functions Music LoadMusicStream(const char *fileName); // Load music stream from file -Music LoadModuleFromData(const char *fileType, const char* data, int dataSize); // Load module music from data +Music LoadMusicStreamFromMemory(const char *fileType, unsigned char* data, int dataSize); // Load module music from data void UnloadMusicStream(Music music); // Unload music stream void PlayMusicStream(Music music); // Start music playing void UpdateMusicStream(Music music); // Updates buffers for music streaming diff --git a/src/raylib.h b/src/raylib.h index ba3ce6c7b..2bd62ae19 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -1495,7 +1495,7 @@ RLAPI void UnloadWaveSamples(float *samples); // Unload // Music management functions RLAPI Music LoadMusicStream(const char *fileName); // Load music stream from file -RLAPI Music LoadModuleFromData(const char *fileType, const char* data, int dataSize); // Load module music from data +RLAPI Music LoadMusicStreamFromMemory(const char *fileType, unsigned char* data, int dataSize); // Load module music from data RLAPI void UnloadMusicStream(Music music); // Unload music stream RLAPI void PlayMusicStream(Music music); // Start music playing RLAPI void UpdateMusicStream(Music music); // Updates buffers for music streaming