diff --git a/stepmania/src/Makefile.am b/stepmania/src/Makefile.am index c0de97e336..d9c8701da4 100644 --- a/stepmania/src/Makefile.am +++ b/stepmania/src/Makefile.am @@ -16,9 +16,24 @@ AM_CFLAGS += -O2 # This is a little hacky; we use our own version of SDL and SDL_sound, and I don't # want to have to integrate their entire build systems. +# Why --disable-alsa --disable-oss? Because SDL and our own +# sound system conflict, which might be safe on OSS (SDL simply +# gets rejected), but on ALSA, even when going through the OSS +# emu, this conflict causes StepMania to hang on soundcards +# incapable of handling multiple applications at the same time +# (which is basically everything besides SB Lives). This hang +# happens because if you try to open() a character device +# corresponding to an ALSA soundcard that's being used and +# can't handle multiple applications at one time, the open() +# call doesn't return until whatever's using the card closes it +# (in this case, StepMania, which is waiting for SDL to bring +# itself up, which will never happen, because the open() is +# hanging, because... you get the idea.) Setting these switches +# keep SDL from trying to grab the soundcard, so we have it all +# to ourselves, thus preventing that nasty hang on boot. SDL-1.2.5/src/.libs/libSDL.a: cd SDL-1.2.5 && ./configure \ - --disable-nasm --disable-arts --disable-esd --enable-static --disable-shared --enable-debug + --disable-nasm --disable-arts --disable-esd --enable-static --disable-shared --enable-debug --disable-alsa --disable-oss make -C SDL-1.2.5 SDL_sound-1.0.0/.libs/libSDL_sound.a: @@ -145,6 +160,10 @@ Sound_ALSA9 = \ arch/Sound/RageSoundDriver_ALSA9.cpp \ arch/Sound/RageSoundDriver_ALSA9.h +Sound_SDL = \ + arch/Sound/RageSoundDriver_SDL.cpp \ + arch/Sound/RageSoundDriver_SDL.h + Sound_Null = \ arch/Sound/RageSoundDriver_Null.cpp \ arch/Sound/RageSoundDriver_Null.h @@ -156,6 +175,7 @@ endif if HAVE_OSS Sound += $(Sound_OSS) endif +Sound += $(Sound_SDL) stepmania_SOURCES = $(Rage) $(DataStructures) $(FileTypes) $(StepMania) $(Transitions) \ $(Actors) $(ActorsInMenus) $(ActorsInGameplay) $(Screens) $(GlobalSingletons) \