forked from pool/SDL2_mixer
Accepting request 559888 from games
- update to version 2.0.2 OBS-URL: https://build.opensuse.org/request/show/559888 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/SDL2_mixer?expand=0&rev=5
This commit is contained in:
commit
686426f4e5
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:5a24f62a610249d744cbd8d28ee399d8905db7222bf3bdbc8a8b4a76e597695f
|
|
||||||
size 10213891
|
|
3
SDL2_mixer-2.0.2.tar.gz
Normal file
3
SDL2_mixer-2.0.2.tar.gz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:4e615e27efca4f439df9af6aa2c6de84150d17cbfd12174b54868c12f19c83bb
|
||||||
|
size 9620763
|
468
SDL2_mixer-only-load-required-interfaces.patch
Normal file
468
SDL2_mixer-only-load-required-interfaces.patch
Normal file
@ -0,0 +1,468 @@
|
|||||||
|
|
||||||
|
# HG changeset patch
|
||||||
|
# User Sam Lantinga <slouken@libsdl.org>
|
||||||
|
# Date 1508906510 25200
|
||||||
|
# Node ID 7fa15b556953502e11c911d104450ae02c807c84
|
||||||
|
# Parent 7d6df0a13bd02a3eb7fbdf64eca628913d46c291
|
||||||
|
Only load music interfaces that are explicitly initialized or needed for audio content
|
||||||
|
|
||||||
|
diff -r 7d6df0a13bd0 -r 7fa15b556953 mixer.c
|
||||||
|
--- a/mixer.c Mon Oct 23 12:40:10 2017 -0700
|
||||||
|
+++ b/mixer.c Tue Oct 24 21:41:50 2017 -0700
|
||||||
|
@@ -118,9 +118,19 @@
|
||||||
|
return SDL_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static void add_chunk_decoder(const char *decoder)
|
||||||
|
+void add_chunk_decoder(const char *decoder)
|
||||||
|
{
|
||||||
|
- void *ptr = SDL_realloc((void *)chunk_decoders, (num_decoders + 1) * sizeof (const char *));
|
||||||
|
+ int i;
|
||||||
|
+ void *ptr;
|
||||||
|
+
|
||||||
|
+ /* Check to see if we already have this decoder */
|
||||||
|
+ for (i = 0; i < num_decoders; ++i) {
|
||||||
|
+ if (SDL_strcmp(chunk_decoders[i], decoder) == 0) {
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ ptr = SDL_realloc((void *)chunk_decoders, (num_decoders + 1) * sizeof (const char *));
|
||||||
|
if (ptr == NULL) {
|
||||||
|
return; /* oh well, go on without it. */
|
||||||
|
}
|
||||||
|
@@ -140,44 +150,47 @@
|
||||||
|
{
|
||||||
|
int result = 0;
|
||||||
|
|
||||||
|
- load_music();
|
||||||
|
-
|
||||||
|
if (flags & MIX_INIT_FLAC) {
|
||||||
|
- if (has_music(MUS_FLAC)) {
|
||||||
|
+ if (load_music_type(MUS_FLAC)) {
|
||||||
|
+ open_music_type(MUS_FLAC);
|
||||||
|
result |= MIX_INIT_FLAC;
|
||||||
|
} else {
|
||||||
|
Mix_SetError("FLAC support not available");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (flags & MIX_INIT_MOD) {
|
||||||
|
- if (has_music(MUS_MOD)) {
|
||||||
|
+ if (load_music_type(MUS_MOD)) {
|
||||||
|
+ open_music_type(MUS_MOD);
|
||||||
|
result |= MIX_INIT_MOD;
|
||||||
|
} else {
|
||||||
|
Mix_SetError("MOD support not available");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (flags & MIX_INIT_MP3) {
|
||||||
|
- if (has_music(MUS_MP3)) {
|
||||||
|
+ if (load_music_type(MUS_MP3)) {
|
||||||
|
+ open_music_type(MUS_MP3);
|
||||||
|
result |= MIX_INIT_MP3;
|
||||||
|
} else {
|
||||||
|
Mix_SetError("MP3 support not available");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (flags & MIX_INIT_OGG) {
|
||||||
|
- if (has_music(MUS_OGG)) {
|
||||||
|
+ if (load_music_type(MUS_OGG)) {
|
||||||
|
+ open_music_type(MUS_OGG);
|
||||||
|
result |= MIX_INIT_OGG;
|
||||||
|
} else {
|
||||||
|
Mix_SetError("OGG support not available");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (flags & MIX_INIT_MID) {
|
||||||
|
- if (has_music(MUS_MID)) {
|
||||||
|
+ if (load_music_type(MUS_MID)) {
|
||||||
|
+ open_music_type(MUS_MID);
|
||||||
|
result |= MIX_INIT_MID;
|
||||||
|
} else {
|
||||||
|
Mix_SetError("MIDI support not available");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
- return (result);
|
||||||
|
+ return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Mix_Quit()
|
||||||
|
@@ -400,13 +413,6 @@
|
||||||
|
PrintFormat("Audio device", &mixer);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
- /* Initialize the music players */
|
||||||
|
- load_music();
|
||||||
|
- if (open_music(&mixer) < 0) {
|
||||||
|
- SDL_CloseAudioDevice(audio_device);
|
||||||
|
- return(-1);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
num_channels = MIX_CHANNELS;
|
||||||
|
mix_channel = (struct _Mix_Channel *) SDL_malloc(num_channels * sizeof(struct _Mix_Channel));
|
||||||
|
|
||||||
|
@@ -431,21 +437,9 @@
|
||||||
|
add_chunk_decoder("WAVE");
|
||||||
|
add_chunk_decoder("AIFF");
|
||||||
|
add_chunk_decoder("VOC");
|
||||||
|
- if (has_music(MUS_MOD)) {
|
||||||
|
- add_chunk_decoder("MOD");
|
||||||
|
- }
|
||||||
|
- if (has_music(MUS_MID)) {
|
||||||
|
- add_chunk_decoder("MID");
|
||||||
|
- }
|
||||||
|
- if (has_music(MUS_OGG)) {
|
||||||
|
- add_chunk_decoder("OGG");
|
||||||
|
- }
|
||||||
|
- if (has_music(MUS_MP3)) {
|
||||||
|
- add_chunk_decoder("MP3");
|
||||||
|
- }
|
||||||
|
- if (has_music(MUS_FLAC)) {
|
||||||
|
- add_chunk_decoder("FLAC");
|
||||||
|
- }
|
||||||
|
+
|
||||||
|
+ /* Initialize the music players */
|
||||||
|
+ open_music(&mixer);
|
||||||
|
|
||||||
|
audio_opened = 1;
|
||||||
|
SDL_PauseAudioDevice(audio_device, 0);
|
||||||
|
@@ -536,6 +530,10 @@
|
||||||
|
int count = 0;
|
||||||
|
int fragment_size;
|
||||||
|
|
||||||
|
+ if (!load_music_type(music_type) || !open_music_type(music_type)) {
|
||||||
|
+ return NULL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
*spec = mixer;
|
||||||
|
|
||||||
|
/* Use fragments sized on full audio frame boundaries - this'll do */
|
||||||
|
@@ -544,6 +542,9 @@
|
||||||
|
start = SDL_RWtell(src);
|
||||||
|
for (i = 0; i < get_num_music_interfaces(); ++i) {
|
||||||
|
interface = get_music_interface(i);
|
||||||
|
+ if (!interface->opened) {
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
if (interface->type != music_type) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
diff -r 7d6df0a13bd0 -r 7fa15b556953 mixer.h
|
||||||
|
--- a/mixer.h Mon Oct 23 12:40:10 2017 -0700
|
||||||
|
+++ b/mixer.h Tue Oct 24 21:41:50 2017 -0700
|
||||||
|
@@ -23,4 +23,6 @@
|
||||||
|
extern void Mix_LockAudio(void);
|
||||||
|
extern void Mix_UnlockAudio(void);
|
||||||
|
|
||||||
|
+extern void add_chunk_decoder(const char *decoder);
|
||||||
|
+
|
||||||
|
/* vi: set ts=4 sw=4 expandtab: */
|
||||||
|
diff -r 7d6df0a13bd0 -r 7fa15b556953 music.c
|
||||||
|
--- a/music.c Mon Oct 23 12:40:10 2017 -0700
|
||||||
|
+++ b/music.c Tue Oct 24 21:41:50 2017 -0700
|
||||||
|
@@ -42,6 +42,9 @@
|
||||||
|
#include "music_flac.h"
|
||||||
|
#include "native_midi/native_midi.h"
|
||||||
|
|
||||||
|
+/* Set this hint to true if you want verbose logging of music interfaces */
|
||||||
|
+#define SDL_MIXER_HINT_DEBUG_MUSIC_INTERFACES \
|
||||||
|
+ "SDL_MIXER_DEBUG_MUSIC_INTERFACES"
|
||||||
|
|
||||||
|
char *music_cmd = NULL;
|
||||||
|
static SDL_bool music_active = SDL_TRUE;
|
||||||
|
@@ -135,7 +138,17 @@
|
||||||
|
|
||||||
|
static void add_music_decoder(const char *decoder)
|
||||||
|
{
|
||||||
|
- void *ptr = SDL_realloc((void *)music_decoders, (num_decoders + 1) * sizeof (const char *));
|
||||||
|
+ void *ptr;
|
||||||
|
+ int i;
|
||||||
|
+
|
||||||
|
+ /* Check to see if we already have this decoder */
|
||||||
|
+ for (i = 0; i < num_decoders; ++i) {
|
||||||
|
+ if (SDL_strcmp(music_decoders[i], decoder) == 0) {
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ ptr = SDL_realloc((void *)music_decoders, (num_decoders + 1) * sizeof (const char *));
|
||||||
|
if (ptr == NULL) {
|
||||||
|
return; /* oh well, go on without it. */
|
||||||
|
}
|
||||||
|
@@ -252,28 +265,123 @@
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-/* Load the music interface libraries */
|
||||||
|
-int load_music(void)
|
||||||
|
+/* Load the music interface libraries for a given music type */
|
||||||
|
+SDL_bool load_music_type(Mix_MusicType type)
|
||||||
|
{
|
||||||
|
- char hint[128];
|
||||||
|
-
|
||||||
|
- int i;
|
||||||
|
+ int i, loaded = 0;
|
||||||
|
for (i = 0; i < SDL_arraysize(s_music_interfaces); ++i) {
|
||||||
|
Mix_MusicInterface *interface = s_music_interfaces[i];
|
||||||
|
- if (interface->loaded) {
|
||||||
|
+ if (interface->type != type) {
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
+ if (!interface->loaded) {
|
||||||
|
+ char hint[64];
|
||||||
|
+ SDL_snprintf(hint, sizeof(hint), "SDL_MIXER_DISABLE_%s", interface->tag);
|
||||||
|
+ if (SDL_GetHintBoolean(hint, SDL_FALSE)) {
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (interface->Load && interface->Load() < 0) {
|
||||||
|
+ if (SDL_GetHintBoolean(SDL_MIXER_HINT_DEBUG_MUSIC_INTERFACES, SDL_FALSE)) {
|
||||||
|
+ SDL_Log("Couldn't load %s: %s\n", interface->tag, Mix_GetError());
|
||||||
|
+ }
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
+ interface->loaded = SDL_TRUE;
|
||||||
|
+ }
|
||||||
|
+ ++loaded;
|
||||||
|
+ }
|
||||||
|
+ return (loaded > 0) ? SDL_TRUE : SDL_FALSE;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/* Open the music interfaces for a given music type */
|
||||||
|
+SDL_bool open_music_type(Mix_MusicType type)
|
||||||
|
+{
|
||||||
|
+ int i, opened = 0;
|
||||||
|
+ SDL_bool use_native_midi = SDL_FALSE;
|
||||||
|
+
|
||||||
|
+ if (!music_spec.format) {
|
||||||
|
+ /* Music isn't opened yet */
|
||||||
|
+ return SDL_FALSE;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+#ifdef MUSIC_MID_NATIVE
|
||||||
|
+ if (type == MUS_MID && SDL_GetHintBoolean("SDL_NATIVE_MUSIC", SDL_FALSE) && native_midi_detect()) {
|
||||||
|
+ use_native_midi = SDL_TRUE;
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+ for (i = 0; i < SDL_arraysize(s_music_interfaces); ++i) {
|
||||||
|
+ Mix_MusicInterface *interface = s_music_interfaces[i];
|
||||||
|
+ if (!interface->loaded) {
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
+ if (type != MUS_NONE && interface->type != type) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
- SDL_snprintf(hint, sizeof(hint), "SDL_MIXER_DISABLE_%s", interface->tag);
|
||||||
|
- if (SDL_GetHintBoolean(hint, SDL_FALSE)) {
|
||||||
|
+ if (interface->type == MUS_MID && use_native_midi && interface->api != MIX_MUSIC_NATIVEMIDI) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (!interface->Load || interface->Load() == 0) {
|
||||||
|
- interface->loaded = SDL_TRUE;
|
||||||
|
+ if (!interface->opened) {
|
||||||
|
+ if (interface->Open && interface->Open(&music_spec) < 0) {
|
||||||
|
+ if (SDL_GetHintBoolean(SDL_MIXER_HINT_DEBUG_MUSIC_INTERFACES, SDL_FALSE)) {
|
||||||
|
+ SDL_Log("Couldn't open %s: %s\n", interface->tag, Mix_GetError());
|
||||||
|
+ }
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
+ interface->opened = SDL_TRUE;
|
||||||
|
+ add_music_decoder(interface->tag);
|
||||||
|
}
|
||||||
|
+ ++opened;
|
||||||
|
}
|
||||||
|
- return 0;
|
||||||
|
+
|
||||||
|
+ if (has_music(MUS_MOD)) {
|
||||||
|
+ add_music_decoder("MOD");
|
||||||
|
+ add_chunk_decoder("MOD");
|
||||||
|
+ }
|
||||||
|
+ if (has_music(MUS_MID)) {
|
||||||
|
+ add_music_decoder("MIDI");
|
||||||
|
+ add_chunk_decoder("MID");
|
||||||
|
+ }
|
||||||
|
+ if (has_music(MUS_OGG)) {
|
||||||
|
+ add_music_decoder("OGG");
|
||||||
|
+ add_chunk_decoder("OGG");
|
||||||
|
+ }
|
||||||
|
+ if (has_music(MUS_MP3)) {
|
||||||
|
+ add_music_decoder("MP3");
|
||||||
|
+ add_chunk_decoder("MP3");
|
||||||
|
+ }
|
||||||
|
+ if (has_music(MUS_FLAC)) {
|
||||||
|
+ add_music_decoder("FLAC");
|
||||||
|
+ add_chunk_decoder("FLAC");
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return (opened > 0) ? SDL_TRUE : SDL_FALSE;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/* Initialize the music interfaces with a certain desired audio format */
|
||||||
|
+void open_music(const SDL_AudioSpec *spec)
|
||||||
|
+{
|
||||||
|
+#ifdef MIX_INIT_SOUNDFONT_PATHS
|
||||||
|
+ if (!soundfont_paths) {
|
||||||
|
+ soundfont_paths = SDL_strdup(MIX_INIT_SOUNDFONT_PATHS);
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+ /* Load the music interfaces that don't have explicit initialization */
|
||||||
|
+ load_music_type(MUS_CMD);
|
||||||
|
+ load_music_type(MUS_WAV);
|
||||||
|
+
|
||||||
|
+ /* Open all the interfaces that are loaded */
|
||||||
|
+ music_spec = *spec;
|
||||||
|
+ open_music_type(MUS_NONE);
|
||||||
|
+
|
||||||
|
+ Mix_VolumeMusic(MIX_MAX_VOLUME);
|
||||||
|
+
|
||||||
|
+ /* Calculate the number of ms for each callback */
|
||||||
|
+ ms_per_step = (int) (((float)spec->samples * 1000.0) / spec->freq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Return SDL_TRUE if the music type is available */
|
||||||
|
@@ -292,60 +400,6 @@
|
||||||
|
return SDL_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
-/* Initialize the music interfaces with a certain desired audio format */
|
||||||
|
-int open_music(const SDL_AudioSpec *spec)
|
||||||
|
-{
|
||||||
|
- int i;
|
||||||
|
- SDL_bool use_native_midi = SDL_FALSE;
|
||||||
|
-
|
||||||
|
-#ifdef MIX_INIT_SOUNDFONT_PATHS
|
||||||
|
- if (!soundfont_paths) {
|
||||||
|
- soundfont_paths = SDL_strdup(MIX_INIT_SOUNDFONT_PATHS);
|
||||||
|
- }
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-#ifdef MUSIC_MID_NATIVE
|
||||||
|
- if (SDL_GetHintBoolean("SDL_NATIVE_MUSIC", SDL_FALSE) && native_midi_detect()) {
|
||||||
|
- use_native_midi = SDL_TRUE;
|
||||||
|
- }
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
- music_spec = *spec;
|
||||||
|
- for (i = 0; i < SDL_arraysize(s_music_interfaces); ++i) {
|
||||||
|
- Mix_MusicInterface *interface = s_music_interfaces[i];
|
||||||
|
- if (!interface->loaded) {
|
||||||
|
- continue;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (interface->type == MUS_MID && use_native_midi && interface->api != MIX_MUSIC_NATIVEMIDI) {
|
||||||
|
- continue;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (!interface->Open || interface->Open(spec) == 0) {
|
||||||
|
- interface->opened = SDL_TRUE;
|
||||||
|
- add_music_decoder(interface->tag);
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (has_music(MUS_MOD)) {
|
||||||
|
- add_music_decoder("MOD");
|
||||||
|
- }
|
||||||
|
- if (has_music(MUS_MID)) {
|
||||||
|
- add_music_decoder("MIDI");
|
||||||
|
- }
|
||||||
|
- if (has_music(MUS_MP3)) {
|
||||||
|
- add_music_decoder("MP3");
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- Mix_VolumeMusic(MIX_MAX_VOLUME);
|
||||||
|
-
|
||||||
|
- /* Calculate the number of ms for each callback */
|
||||||
|
- ms_per_step = (int) (((float)spec->samples * 1000.0) / spec->freq);
|
||||||
|
-
|
||||||
|
- return 0;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
Mix_MusicType detect_music_type_from_magic(const Uint8 *magic)
|
||||||
|
{
|
||||||
|
/* Ogg Vorbis files have the magic four bytes "OggS" */
|
||||||
|
@@ -509,32 +563,34 @@
|
||||||
|
|
||||||
|
Mix_ClearError();
|
||||||
|
|
||||||
|
- for (i = 0; i < SDL_arraysize(s_music_interfaces); ++i) {
|
||||||
|
- Mix_MusicInterface *interface = s_music_interfaces[i];
|
||||||
|
- if (!interface->opened || type != interface->type || !interface->CreateFromRW) {
|
||||||
|
- continue;
|
||||||
|
+ if (load_music_type(type) && open_music_type(type)) {
|
||||||
|
+ for (i = 0; i < SDL_arraysize(s_music_interfaces); ++i) {
|
||||||
|
+ Mix_MusicInterface *interface = s_music_interfaces[i];
|
||||||
|
+ if (!interface->opened || type != interface->type || !interface->CreateFromRW) {
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ context = interface->CreateFromRW(src, freesrc);
|
||||||
|
+ if (context) {
|
||||||
|
+ /* Allocate memory for the music structure */
|
||||||
|
+ Mix_Music *music = (Mix_Music *)SDL_calloc(1, sizeof(Mix_Music));
|
||||||
|
+ if (music == NULL) {
|
||||||
|
+ interface->Delete(context);
|
||||||
|
+ Mix_SetError("Out of memory");
|
||||||
|
+ return NULL;
|
||||||
|
+ }
|
||||||
|
+ music->interface = interface;
|
||||||
|
+ music->context = context;
|
||||||
|
+
|
||||||
|
+ if (SDL_GetHintBoolean(SDL_MIXER_HINT_DEBUG_MUSIC_INTERFACES, SDL_FALSE)) {
|
||||||
|
+ SDL_Log("Loaded music with %s\n", interface->tag);
|
||||||
|
+ }
|
||||||
|
+ return music;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /* Reset the stream for the next decoder */
|
||||||
|
+ SDL_RWseek(src, start, RW_SEEK_SET);
|
||||||
|
}
|
||||||
|
-
|
||||||
|
- context = interface->CreateFromRW(src, freesrc);
|
||||||
|
- if (context) {
|
||||||
|
- /* Allocate memory for the music structure */
|
||||||
|
- Mix_Music *music = (Mix_Music *)SDL_calloc(1, sizeof(Mix_Music));
|
||||||
|
- if (music == NULL) {
|
||||||
|
- interface->Delete(context);
|
||||||
|
- Mix_SetError("Out of memory");
|
||||||
|
- return NULL;
|
||||||
|
- }
|
||||||
|
- music->interface = interface;
|
||||||
|
- music->context = context;
|
||||||
|
-#ifdef DEBUG_MUSIC
|
||||||
|
- /* This would be useful to expose via an API */
|
||||||
|
- SDL_Log("Music playing with %s\n", interface->tag);
|
||||||
|
-#endif
|
||||||
|
- return music;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- /* Reset the stream for the next decoder */
|
||||||
|
- SDL_RWseek(src, start, RW_SEEK_SET);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!*Mix_GetError()) {
|
||||||
|
diff -r 7d6df0a13bd0 -r 7fa15b556953 music.h
|
||||||
|
--- a/music.h Mon Oct 23 12:40:10 2017 -0700
|
||||||
|
+++ b/music.h Tue Oct 24 21:41:50 2017 -0700
|
||||||
|
@@ -103,12 +103,13 @@
|
||||||
|
} Mix_MusicInterface;
|
||||||
|
|
||||||
|
|
||||||
|
-extern int load_music(void);
|
||||||
|
-extern Mix_MusicType detect_music_type_from_magic(const Uint8 *magic);
|
||||||
|
extern int get_num_music_interfaces(void);
|
||||||
|
extern Mix_MusicInterface *get_music_interface(int index);
|
||||||
|
+extern Mix_MusicType detect_music_type_from_magic(const Uint8 *magic);
|
||||||
|
+extern SDL_bool load_music_type(Mix_MusicType type);
|
||||||
|
+extern SDL_bool open_music_type(Mix_MusicType type);
|
||||||
|
extern SDL_bool has_music(Mix_MusicType type);
|
||||||
|
-extern int open_music(const SDL_AudioSpec *spec);
|
||||||
|
+extern void open_music(const SDL_AudioSpec *spec);
|
||||||
|
extern int music_pcm_getaudio(void *context, void *data, int bytes, int volume,
|
||||||
|
int (*GetSome)(void *context, void *data, int bytes, SDL_bool *done));
|
||||||
|
extern void SDLCALL music_mixer(void *udata, Uint8 *stream, int len);
|
||||||
|
|
@ -1,3 +1,19 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Sat Dec 23 04:21:51 UTC 2017 - 9@cirno.systems
|
||||||
|
|
||||||
|
- update to version 2.0.2
|
||||||
|
|
||||||
|
* 24-bit and surround sound support for FLAC audio files
|
||||||
|
* Updated for SDL 2.0.6 and newer
|
||||||
|
* Support for MP3 playback using mpg123
|
||||||
|
* Added Mix_OpenAudioDevice() to specify the audio device to open
|
||||||
|
- Add SDL2_mixer-only-load-required-interfaces.patch
|
||||||
|
Prevents initializing decoders unnecessarily.
|
||||||
|
Fixes an issue with applications that use the API incorrectly
|
||||||
|
(due to misleading documentation).
|
||||||
|
- Build with libmpg123 where available
|
||||||
|
- Fix fluidsynth linking
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Sun Jan 10 17:06:57 UTC 2016 - mailaender@opensuse.org
|
Sun Jan 10 17:06:57 UTC 2016 - mailaender@opensuse.org
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package SDL2_mixer
|
# spec file for package SDL2_mixer
|
||||||
#
|
#
|
||||||
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
|
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||||
#
|
#
|
||||||
# All modifications and additions to the file contributed by third parties
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
Name: SDL2_mixer
|
Name: SDL2_mixer
|
||||||
%define lname libSDL2_mixer-2_0-0
|
%define lname libSDL2_mixer-2_0-0
|
||||||
Version: 2.0.1
|
Version: 2.0.2
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: SDL2 sound mixer library
|
Summary: SDL2 sound mixer library
|
||||||
License: Zlib
|
License: Zlib
|
||||||
@ -28,12 +28,16 @@ Url: http://libsdl.org/projects/SDL_mixer/
|
|||||||
#Hg-Clone: http://hg.libsdl.org/SDL_mixer/
|
#Hg-Clone: http://hg.libsdl.org/SDL_mixer/
|
||||||
Source: http://libsdl.org/projects/SDL_mixer/release/%name-%version.tar.gz
|
Source: http://libsdl.org/projects/SDL_mixer/release/%name-%version.tar.gz
|
||||||
Source1: baselibs.conf
|
Source1: baselibs.conf
|
||||||
|
Patch0: SDL2_mixer-only-load-required-interfaces.patch
|
||||||
BuildRequires: dos2unix
|
BuildRequires: dos2unix
|
||||||
BuildRequires: pkg-config
|
BuildRequires: pkg-config
|
||||||
BuildRequires: pkgconfig(flac)
|
BuildRequires: pkgconfig(flac)
|
||||||
BuildRequires: pkgconfig(fluidsynth)
|
BuildRequires: pkgconfig(fluidsynth)
|
||||||
BuildRequires: pkgconfig(libmikmod)
|
BuildRequires: pkgconfig(libmikmod)
|
||||||
BuildRequires: pkgconfig(libmodplug) >= 0.8.8
|
BuildRequires: pkgconfig(libmodplug) >= 0.8.8
|
||||||
|
%if !(0%{?sle_version} == 120200 && 0%{?is_opensuse})
|
||||||
|
BuildRequires: pkgconfig(libmpg123)
|
||||||
|
%endif
|
||||||
BuildRequires: pkgconfig(sdl2)
|
BuildRequires: pkgconfig(sdl2)
|
||||||
BuildRequires: pkgconfig(vorbis)
|
BuildRequires: pkgconfig(vorbis)
|
||||||
Recommends: timidity
|
Recommends: timidity
|
||||||
@ -42,17 +46,17 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
|||||||
%description
|
%description
|
||||||
A multichannel audio mixer. It supports four channels of 16-bit stereo
|
A multichannel audio mixer. It supports four channels of 16-bit stereo
|
||||||
audio, plus a single channel of music, mixed by the popular MikMod MOD,
|
audio, plus a single channel of music, mixed by the popular MikMod MOD,
|
||||||
Timidity MIDI, and SMPEG MP3 libraries.
|
Timidity MIDI, and mpg123 MP3 libraries.
|
||||||
|
|
||||||
%package -n %lname
|
%package -n %lname
|
||||||
Summary: Simple DirectMedia Layer 2 – Sound mixer library
|
Summary: Simple DirectMedia Layer 2 – Sound mixer library
|
||||||
Group: System/Libraries
|
Group: System/Libraries
|
||||||
Provides: SDL2_mixer = %version-%release
|
Provides: SDL2_mixer = %version-%release
|
||||||
|
|
||||||
%description -n %lname
|
%description -n %lname
|
||||||
A multichannel audio mixer. It supports four channels of 16-bit stereo
|
A multichannel audio mixer. It supports four channels of 16-bit stereo
|
||||||
audio, plus a single channel of music, mixed by the popular MikMod MOD,
|
audio, plus a single channel of music, mixed by the popular MikMod MOD,
|
||||||
Timidity MIDI, and SMPEG MP3 libraries.
|
Timidity MIDI, and mpg123 MP3 libraries.
|
||||||
|
|
||||||
%package -n libSDL2_mixer-devel
|
%package -n libSDL2_mixer-devel
|
||||||
Summary: Development files for the SDL2 sound mixer library
|
Summary: Development files for the SDL2 sound mixer library
|
||||||
@ -63,10 +67,11 @@ Provides: SDL2_mixer-devel = %version-%release
|
|||||||
%description -n libSDL2_mixer-devel
|
%description -n libSDL2_mixer-devel
|
||||||
A multi-channel audio mixer. It supports 4 channels of 16-bit stereo
|
A multi-channel audio mixer. It supports 4 channels of 16-bit stereo
|
||||||
audio, plus a single channel of music, mixed by the popular MikMod MOD,
|
audio, plus a single channel of music, mixed by the popular MikMod MOD,
|
||||||
Timidity MIDI, and SMPEG MP3 libraries.
|
Timidity MIDI, and mpg123 MP3 libraries.
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
|
%patch0 -p1
|
||||||
dos2unix *.txt
|
dos2unix *.txt
|
||||||
rm -rf external
|
rm -rf external
|
||||||
|
|
||||||
@ -74,10 +79,14 @@ rm -rf external
|
|||||||
%configure \
|
%configure \
|
||||||
--disable-music-mod-modplug-shared \
|
--disable-music-mod-modplug-shared \
|
||||||
--disable-music-mod-mikmod-shared \
|
--disable-music-mod-mikmod-shared \
|
||||||
--disable-music-fluidsynth-shared \
|
--disable-music-midi-fluidsynth-shared \
|
||||||
--disable-music-ogg-shared \
|
--disable-music-ogg-shared \
|
||||||
--disable-music-flac-shared \
|
--disable-music-flac-shared \
|
||||||
--enable-music-mp3-smpeg-shared \
|
%if 0%{?sle_version} == 120200 && 0%{?is_opensuse}
|
||||||
|
--enable-music-mp3-mpg123-shared \
|
||||||
|
%else
|
||||||
|
--disable-music-mp3-mpg123-shared \
|
||||||
|
%endif
|
||||||
--disable-static
|
--disable-static
|
||||||
make %{?_smp_mflags}
|
make %{?_smp_mflags}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user