From 262d46f1da820ebf4875327a5b56feda85546ffd Mon Sep 17 00:00:00 2001 From: torcs-ng Date: Fri, 16 Nov 2012 17:42:09 +0000 Subject: [PATCH] update menu music code by beaglejoe git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@5049 30fe4595-0a0c-4342-8851-515496e4dcbd Former-commit-id: 0a59c496ad4866a2f5396b3afed96c62a5e70588 Former-commit-id: 400e616609ccabb60b00278b8e481179cc5d9de8 --- src/libs/tgfclient/openalmusicplayer.cpp | 14 -------- src/libs/tgfclient/openalmusicplayer.h | 1 - src/modules/sound/snddefault/OpenalSound.cpp | 6 ++++ .../sound/snddefault/OpenalSoundInterface.cpp | 35 ++++++++++++++++++- .../sound/snddefault/OpenalSoundInterface.h | 3 ++ .../userinterface/legacymenu/legacymenu.cpp | 3 +- 6 files changed, 45 insertions(+), 17 deletions(-) diff --git a/src/libs/tgfclient/openalmusicplayer.cpp b/src/libs/tgfclient/openalmusicplayer.cpp index d390f1a02..e09bdf9d9 100644 --- a/src/libs/tgfclient/openalmusicplayer.cpp +++ b/src/libs/tgfclient/openalmusicplayer.cpp @@ -26,7 +26,6 @@ const int OpenALMusicPlayer::BUFFERSIZE = 4096*64; OpenALMusicPlayer::OpenALMusicPlayer(SoundStream* soundStream): device(NULL), context(NULL), - previouscontext(NULL), source(0), stream(soundStream), ready(false) @@ -70,8 +69,6 @@ void OpenALMusicPlayer::stop() alDeleteBuffers(2, buffers); check(); - //alcMakeContextCurrent(previouscontext); - // previouscontext = NULL; alcDestroyContext(context); alcCloseDevice(device); @@ -95,7 +92,6 @@ bool OpenALMusicPlayer::initContext() GfError("OpenALMusicPlayer: OpenAL could not create contect for device\n"); return false; } - previouscontext = alcGetCurrentContext(); alcMakeContextCurrent(context); alcGetError(device); @@ -210,21 +206,11 @@ void OpenALMusicPlayer::start() void OpenALMusicPlayer::pause() { alSourceStop(source); - if(previouscontext == NULL){ - previouscontext = alcGetCurrentContext(); - } - alcMakeContextCurrent(previouscontext); - //previouscontext = NULL; } void OpenALMusicPlayer::resume(int flag) { - alcMakeContextCurrent(context); alSourcePlay(source); - if(flag == 1){ - previouscontext = NULL; - } - } void OpenALMusicPlayer::rewind() { diff --git a/src/libs/tgfclient/openalmusicplayer.h b/src/libs/tgfclient/openalmusicplayer.h index 8465310f5..21ce4adc9 100644 --- a/src/libs/tgfclient/openalmusicplayer.h +++ b/src/libs/tgfclient/openalmusicplayer.h @@ -48,7 +48,6 @@ class OpenALMusicPlayer ALCdevice* device; ALCcontext* context; - ALCcontext* previouscontext; ALuint source; // audio source ALuint buffers[2]; // front and back buffers diff --git a/src/modules/sound/snddefault/OpenalSound.cpp b/src/modules/sound/snddefault/OpenalSound.cpp index a85af32c9..4e0b47131 100644 --- a/src/modules/sound/snddefault/OpenalSound.cpp +++ b/src/modules/sound/snddefault/OpenalSound.cpp @@ -302,6 +302,9 @@ void OpenalSound::resume() { if (paused) { paused = false; +#ifdef MENU_MUSIC + alSourcePlay (source); +#endif } } @@ -310,6 +313,9 @@ void OpenalSound::pause() { if (!paused) { paused = true; +#ifdef MENU_MUSIC + alSourcePause (source); +#endif } } diff --git a/src/modules/sound/snddefault/OpenalSoundInterface.cpp b/src/modules/sound/snddefault/OpenalSoundInterface.cpp index 289bd66c0..2072d26eb 100644 --- a/src/modules/sound/snddefault/OpenalSoundInterface.cpp +++ b/src/modules/sound/snddefault/OpenalSoundInterface.cpp @@ -39,6 +39,11 @@ OpenalSoundInterface::OpenalSoundInterface(float sampling_rate, int n_channels) ALfloat far_away[] = { 0.0f, 0.0f, 1000.0f }; ALfloat zeroes[] = { 0.0f, 0.0f, 0.0f }; ALfloat front[] = { 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f }; + +#ifdef MENU_MUSIC + originalcontext = alcGetCurrentContext(); + if(originalcontext == NULL){ +#endif dev = alcOpenDevice( NULL ); if( dev == NULL ) { GfLogError("OpenAL: Could not open device (alcOpenDevice failed)\n"); @@ -56,6 +61,9 @@ OpenalSoundInterface::OpenalSoundInterface(float sampling_rate, int n_channels) alcMakeContextCurrent( cc ); alcGetError(dev); +#ifdef MENU_MUSIC + } +#endif alGetError(); // Figure out the number of possible sources, watch out for an API update, perhaps @@ -167,11 +175,17 @@ OpenalSoundInterface::~OpenalSoundInterface() } delete [] engpri; +#ifdef MENU_MUSIC +if(originalcontext == NULL){ +#endif alcMakeContextCurrent(0); alcDestroyContext(cc); if (!alcCloseDevice(dev)) GfLogError("Failed to close OpenAL device: %s\n", alcGetString(dev, alcGetError(dev))); +#ifdef MENU_MUSIC + } +#endif if (car_src) { delete [] car_src; @@ -194,7 +208,12 @@ Sound* OpenalSoundInterface::addSample (const char* filename, int flags, bool lo void OpenalSoundInterface::update(CarSoundData** car_sound_data, int n_cars, sgVec3 p_obs, sgVec3 u_obs, sgVec3 c_obs, sgVec3 a_obs) { - +#ifdef MENU_MUSIC + if(silent){ + return; + } +#endif + ALfloat listener_pos[3]; #ifdef USE_OPENAL_DOPPLER ALfloat listener_speed[3]; @@ -447,6 +466,20 @@ void OpenalSoundInterface::mute(bool bOn) { SoundInterface::mute(bOn); +#ifdef MENU_MUSIC + if(bOn){ + for (unsigned int i=0; ipause(); + } + } + else{ + + for (unsigned int i=0; iresume(); + } + } +#else // Needed in case update() is not called right after this. alListenerf(AL_GAIN, getGlobalGain()); +#endif } diff --git a/src/modules/sound/snddefault/OpenalSoundInterface.h b/src/modules/sound/snddefault/OpenalSoundInterface.h index 2cf2a3634..58eae312c 100644 --- a/src/modules/sound/snddefault/OpenalSoundInterface.h +++ b/src/modules/sound/snddefault/OpenalSoundInterface.h @@ -44,6 +44,9 @@ class OpenalSoundInterface : public SoundInterface SoundSource* car_src; SoundSource tyre_src[4]; +#ifdef MENU_MUSIC + ALCcontext* originalcontext; +#endif ALCcontext* cc; ALCdevice* dev; int OSI_MAX_BUFFERS; diff --git a/src/modules/userinterface/legacymenu/legacymenu.cpp b/src/modules/userinterface/legacymenu/legacymenu.cpp index d7247ea82..9e04a0b86 100644 --- a/src/modules/userinterface/legacymenu/legacymenu.cpp +++ b/src/modules/userinterface/legacymenu/legacymenu.cpp @@ -302,8 +302,9 @@ void LegacyMenu::onRaceSimulationReady() { addLoadingMessage("Loading graphics for all cars ..."); loadCarsGraphics(_piRaceEngine->outData()->s); - _piSoundEngine->init(_piRaceEngine->outData()->s); pauseMenuMusic(); + addLoadingMessage("Loading sound effects for all cars ..."); + _piSoundEngine->init(_piRaceEngine->outData()->s); } }