summaryrefslogtreecommitdiffstats
path: root/abs/extra/sdl_mixer
diff options
context:
space:
mode:
Diffstat (limited to 'abs/extra/sdl_mixer')
-rw-r--r--abs/extra/sdl_mixer/PKGBUILD47
-rw-r--r--abs/extra/sdl_mixer/double-free-crash.patch32
-rw-r--r--abs/extra/sdl_mixer/fluidsynth-volume.patch23
-rw-r--r--abs/extra/sdl_mixer/mikmod1.patch67
-rw-r--r--abs/extra/sdl_mixer/mikmod2.patch35
5 files changed, 190 insertions, 14 deletions
diff --git a/abs/extra/sdl_mixer/PKGBUILD b/abs/extra/sdl_mixer/PKGBUILD
index f241519..626d401 100644
--- a/abs/extra/sdl_mixer/PKGBUILD
+++ b/abs/extra/sdl_mixer/PKGBUILD
@@ -1,29 +1,48 @@
-# $Id: PKGBUILD 70367 2010-02-26 13:24:25Z allan $
-# Maintainer: Allan McRae <allan@archlinux.org>
+# $Id: PKGBUILD 170804 2012-11-12 02:00:36Z heftig $
+# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
+# Contributor: Allan McRae <allan@archlinux.org>
# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
# Contributor: Lukas Sabota <punkrockguy318@cocmast.net> (Timidity Patch)
pkgname=sdl_mixer
-pkgver=1.2.11
-pkgrel=2
+pkgver=1.2.12
+pkgrel=3
pkgdesc="A simple multi-channel audio mixer"
arch=('i686' 'x86_64')
url="http://www.libsdl.org/projects/SDL_mixer/"
-license=('LGPL' 'GPL')
+license=('custom')
depends=('sdl>=1.2.12' 'libvorbis' 'libmikmod' 'smpeg')
+makedepends=('fluidsynth')
+optdepends=('fluidsynth: MIDI software synth, replaces built-in timidity')
options=('!libtool')
-source=(http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-${pkgver}.tar.gz)
-md5sums=('65ada3d997fe85109191a5fb083f248c')
+source=(http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-$pkgver.tar.gz
+ mikmod1.patch mikmod2.patch fluidsynth-volume.patch double-free-crash.patch)
+md5sums=('e03ff73d77a55e3572ad0217131dc4a1'
+ '95a6d58686fe3017d58c39e3e1dd40f7'
+ 'd823994c3961f2ff48644478f27a27d1'
+ 'eed8b61defde36ac2077ef96d868ea3e'
+ '4b4835c63297f016a198cacb7dd68ec1')
build() {
- cd ${srcdir}/SDL_mixer-${pkgver}
+ cd "$srcdir/SDL_mixer-$pkgver"
- sed -e "/CONFIG_FILE_ETC/s/\/etc\/timidity.cfg/\/etc\/timidity++\/timidity.cfg/" \
- -e "/DEFAULT_PATH/s/\/etc\/timidity/\/etc\/timidity++/" \
- -e "/DEFAULT_PATH2/s/\/usr\/local\/lib\/timidity/\/usr\/lib\/timidity/" \
+ patch -Np1 -i ../mikmod1.patch
+ patch -Np1 -i ../mikmod2.patch
+ patch -Np1 -i ../fluidsynth-volume.patch
+ patch -Np1 -i ../double-free-crash.patch
+
+ sed -e "/CONFIG_FILE_ETC/s|/etc/timidity.cfg|/etc/timidity++/timidity.cfg|" \
+ -e "/DEFAULT_PATH/s|/etc/timidity|/etc/timidity++|" \
+ -e "/DEFAULT_PATH2/s|/usr/local/lib/timidity|/usr/lib/timidity|" \
-i timidity/config.h
- ./configure --prefix=/usr
- make || return 1
- make DESTDIR=${pkgdir} install
+ ./configure --prefix=/usr --disable-static
+ make
+}
+
+package() {
+ cd "$srcdir/SDL_mixer-$pkgver"
+ make DESTDIR="$pkgdir" install
+
+ install -Dm644 COPYING "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}
diff --git a/abs/extra/sdl_mixer/double-free-crash.patch b/abs/extra/sdl_mixer/double-free-crash.patch
new file mode 100644
index 0000000..6f4e6a1
--- /dev/null
+++ b/abs/extra/sdl_mixer/double-free-crash.patch
@@ -0,0 +1,32 @@
+
+# HG changeset patch
+# User Sam Lantinga <slouken@libsdl.org>
+# Date 1329087437 18000
+# Node ID 2d713670db9b832b0c5aa700824900bc1fc3c3cd
+# Parent df72f22b4b411ad4b08f924329678aabd5ac97d6
+Fixed 1418 - crash on double free if loading WAV file failed
+
+diff -r df72f22b4b41 -r 2d713670db9b mixer.c
+--- a/mixer.c Mon Jan 30 21:41:45 2012 -0500
++++ b/mixer.c Sun Feb 12 17:57:17 2012 -0500
+@@ -610,13 +610,15 @@
+ break;
+ default:
+ SDL_SetError("Unrecognized sound file type");
+- return(0);
++ if ( freesrc ) {
++ SDL_RWclose(src);
++ }
++ loaded = NULL;
++ break;
+ }
+ if ( !loaded ) {
++ /* The individual loaders have closed src if needed */
+ SDL_free(chunk);
+- if ( freesrc ) {
+- SDL_RWclose(src);
+- }
+ return(NULL);
+ }
+
+
diff --git a/abs/extra/sdl_mixer/fluidsynth-volume.patch b/abs/extra/sdl_mixer/fluidsynth-volume.patch
new file mode 100644
index 0000000..cf346ed
--- /dev/null
+++ b/abs/extra/sdl_mixer/fluidsynth-volume.patch
@@ -0,0 +1,23 @@
+
+# HG changeset patch
+# User James Le Cuirot <chewi@aura-online.co.uk>
+# Date 1330896767 0
+# Node ID c92001a2c18f628698c58aa4e05a7335d10d0e9e
+# Parent 2d713670db9b832b0c5aa700824900bc1fc3c3cd
+Raise the maximum FluidSynth gain from 0.8 to 1.2 because apparently the former is too quiet in some cases.
+
+diff -r 2d713670db9b -r c92001a2c18f fluidsynth.c
+--- a/fluidsynth.c Sun Feb 12 17:57:17 2012 -0500
++++ b/fluidsynth.c Sun Mar 04 21:32:47 2012 +0000
+@@ -176,8 +176,8 @@
+
+ void fluidsynth_setvolume(FluidSynthMidiSong *song, int volume)
+ {
+- /* FluidSynth's default is 0.2. Make 0.8 the maximum. */
+- fluidsynth.fluid_synth_set_gain(song->synth, (float) (volume * 0.00625));
++ /* FluidSynth's default is 0.2. Make 1.2 the maximum. */
++ fluidsynth.fluid_synth_set_gain(song->synth, (float) (volume * 1.2 / MIX_MAX_VOLUME));
+ }
+
+ int fluidsynth_playsome(FluidSynthMidiSong *song, void *dest, int dest_len)
+
diff --git a/abs/extra/sdl_mixer/mikmod1.patch b/abs/extra/sdl_mixer/mikmod1.patch
new file mode 100644
index 0000000..b3bb829
--- /dev/null
+++ b/abs/extra/sdl_mixer/mikmod1.patch
@@ -0,0 +1,67 @@
+
+# HG changeset patch
+# User Sam Lantinga <slouken@libsdl.org>
+# Date 1342998807 25200
+# Node ID 56cad6484b04f83c8d42428c755a046678506436
+# Parent c92001a2c18f628698c58aa4e05a7335d10d0e9e
+Paul P Komkoff Jr fixed malloc/free mismatch in the MikMod driver
+
+diff -r c92001a2c18f -r 56cad6484b04 CHANGES
+--- a/CHANGES Sun Mar 04 21:32:47 2012 +0000
++++ b/CHANGES Sun Jul 22 16:13:27 2012 -0700
+@@ -1,3 +1,7 @@
++1.2.13:
++Paul P Komkoff Jr - Sun Jul 22 16:12:28 PDT 2012
++ * Fixed malloc/free mismatch in the MikMod driver
++
+ 1.2.12:
+ Sam Lantinga - Sat Jan 14 22:00:29 2012 -0500
+ * Fixed seek offset with SMPEG (was relative, should be absolute)
+diff -r c92001a2c18f -r 56cad6484b04 dynamic_mod.c
+--- a/dynamic_mod.c Sun Mar 04 21:32:47 2012 +0000
++++ b/dynamic_mod.c Sun Jul 22 16:13:27 2012 -0700
+@@ -93,6 +93,13 @@
+ SDL_UnloadObject(mikmod.handle);
+ return -1;
+ }
++ mikmod.MikMod_free =
++ (void (*)(void*))
++ SDL_LoadFunction(mikmod.handle, "MikMod_free");
++ if ( mikmod.MikMod_free == NULL ) {
++ SDL_UnloadObject(mikmod.handle);
++ return -1;
++ }
+ mikmod.Player_Active =
+ (BOOL (*)(void))
+ SDL_LoadFunction(mikmod.handle, "Player_Active");
+diff -r c92001a2c18f -r 56cad6484b04 dynamic_mod.h
+--- a/dynamic_mod.h Sun Mar 04 21:32:47 2012 +0000
++++ b/dynamic_mod.h Sun Jul 22 16:13:27 2012 -0700
+@@ -35,6 +35,7 @@
+ void (*MikMod_RegisterDriver)(struct MDRIVER*);
+ int* MikMod_errno;
+ char* (*MikMod_strerror)(int);
++ void (*MikMod_free)(void*);
+ BOOL (*Player_Active)(void);
+ void (*Player_Free)(MODULE*);
+ MODULE* (*Player_LoadGeneric)(MREADER*,int,BOOL);
+diff -r c92001a2c18f -r 56cad6484b04 music_mod.c
+--- a/music_mod.c Sun Mar 04 21:32:47 2012 +0000
++++ b/music_mod.c Sun Jul 22 16:13:27 2012 -0700
+@@ -109,13 +109,13 @@
+
+ list = mikmod.MikMod_InfoDriver();
+ if ( list )
+- free(list);
++ mikmod.MikMod_free(list);
+ else
+ mikmod.MikMod_RegisterDriver(mikmod.drv_nos);
+
+ list = mikmod.MikMod_InfoLoader();
+ if ( list )
+- free(list);
++ mikmod.MikMod_free(list);
+ else
+ mikmod.MikMod_RegisterAllLoaders();
+
+
diff --git a/abs/extra/sdl_mixer/mikmod2.patch b/abs/extra/sdl_mixer/mikmod2.patch
new file mode 100644
index 0000000..6e89ca8
--- /dev/null
+++ b/abs/extra/sdl_mixer/mikmod2.patch
@@ -0,0 +1,35 @@
+
+# HG changeset patch
+# User Sam Lantinga <slouken@libsdl.org>
+# Date 1343000017 25200
+# Node ID 2ebb0d016f277f7f643d8a66ed0e1099e10d1fba
+# Parent 56cad6484b04f83c8d42428c755a046678506436
+Fixed normal linking with libmikmod and linking with earlier versions of libmikmod.
+
+diff -r 56cad6484b04 -r 2ebb0d016f27 dynamic_mod.c
+--- a/dynamic_mod.c Sun Jul 22 16:13:27 2012 -0700
++++ b/dynamic_mod.c Sun Jul 22 16:33:37 2012 -0700
+@@ -97,8 +97,8 @@
+ (void (*)(void*))
+ SDL_LoadFunction(mikmod.handle, "MikMod_free");
+ if ( mikmod.MikMod_free == NULL ) {
+- SDL_UnloadObject(mikmod.handle);
+- return -1;
++ /* libmikmod 3.1 and earlier doesn't have it */
++ mikmod.MikMod_free = free;
+ }
+ mikmod.Player_Active =
+ (BOOL (*)(void))
+@@ -246,6 +246,11 @@
+ mikmod.MikMod_RegisterDriver = MikMod_RegisterDriver;
+ mikmod.MikMod_errno = &MikMod_errno;
+ mikmod.MikMod_strerror = MikMod_strerror;
++#if LIBMIKMOD_VERSION < ((3<<16)|(2<<8))
++ mikmod.MikMod_free = free;
++#else
++ mikmod.MikMod_free = MikMod_free;
++#endif
+ mikmod.Player_Active = Player_Active;
+ mikmod.Player_Free = Player_Free;
+ mikmod.Player_LoadGeneric = Player_LoadGeneric;
+