diff --git a/source/glest_game/facilities/logger.cpp b/source/glest_game/facilities/logger.cpp index cc7e8091..e7f64916 100644 --- a/source/glest_game/facilities/logger.cpp +++ b/source/glest_game/facilities/logger.cpp @@ -44,27 +44,6 @@ Logger::Logger() { } Logger::~Logger() { - cleanupLoadingTexture(); -} - -void Logger::cleanupLoadingTexture() { - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); - - if(loadingTexture!=NULL) { - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); - - //Renderer &renderer= Renderer::getInstance(); - //renderer.endTexture(rsGlobal,loadingTexture); - loadingTexture->end(); - delete loadingTexture; - - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); - - //delete loadingTexture; - loadingTexture=NULL; - } - - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); } Logger & Logger::getInstance() { @@ -102,8 +81,6 @@ void Logger::loadLoadingScreen(string filepath) { SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); - cleanupLoadingTexture(); - if(filepath=="") { loadingTexture=NULL; @@ -111,18 +88,7 @@ void Logger::loadLoadingScreen(string filepath) { else { SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] filepath = [%s]\n",__FILE__,__FUNCTION__,__LINE__,filepath.c_str()); - - loadingTexture=GraphicsInterface::getInstance().getFactory()->newTexture2D(); - //loadingTexture = renderer.newTexture2D(rsGlobal); - loadingTexture->setMipmap(true); - //loadingTexture->getPixmap()->load(filepath); - loadingTexture->load(filepath); - - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); - - Renderer &renderer= Renderer::getInstance(); - renderer.initTexture(rsGlobal,loadingTexture); - + loadingTexture = Renderer::findFactionLogoTexture(filepath); SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); } } @@ -137,7 +103,7 @@ void Logger::renderLoadingScreen() { renderer.reset2d(); renderer.clearBuffers(); - if(loadingTexture==NULL){ + if(loadingTexture == NULL) { renderer.renderBackground(CoreData::getInstance().getBackgroundTexture()); } else{ diff --git a/source/glest_game/facilities/logger.h b/source/glest_game/facilities/logger.h index 18c4d939..15b743d6 100644 --- a/source/glest_game/facilities/logger.h +++ b/source/glest_game/facilities/logger.h @@ -50,8 +50,6 @@ private: Logger(); ~Logger(); - void cleanupLoadingTexture(); - public: static Logger & getInstance(); diff --git a/source/glest_game/game/game.cpp b/source/glest_game/game/game.cpp index 0c5ad836..85298bbf 100644 --- a/source/glest_game/game/game.cpp +++ b/source/glest_game/game/game.cpp @@ -176,6 +176,18 @@ int Game::ErrorDisplayMessage(const char *msg, bool exitApp) { return 0; } +Texture2D * Game::findFactionLogoTexture(const GameSettings *settings, Logger *logger,string factionLogoFilter, bool useTechDefaultIfFilterNotFound) { + Texture2D *result = NULL; + string logoFilename = Game::findFactionLogoFile(settings, logger,factionLogoFilter); + if(logoFilename == "" && factionLogoFilter != "" && useTechDefaultIfFilterNotFound == true) { + logoFilename = Game::findFactionLogoFile(settings, logger); + } + + result = Renderer::findFactionLogoTexture(logoFilename); + + return result; +} + string Game::findFactionLogoFile(const GameSettings *settings, Logger *logger,string factionLogoFilter) { string result = ""; if(settings == NULL) { diff --git a/source/glest_game/game/game.h b/source/glest_game/game/game.h index 4783b3cc..d1a9cfd8 100644 --- a/source/glest_game/game/game.h +++ b/source/glest_game/game/game.h @@ -167,6 +167,7 @@ public: void endPerformanceTimer(); Vec2i getPerformanceTimerResults(); + static Texture2D * findFactionLogoTexture(const GameSettings *settings, Logger *logger,string factionLogoFilter="loading_screen.*", bool useTechDefaultIfFilterNotFound=true); static string findFactionLogoFile(const GameSettings *settings, Logger *logger, string factionLogoFilter="loading_screen.*"); bool getGameOver() { return gameOver; } diff --git a/source/glest_game/game/game_constants.h b/source/glest_game/game/game_constants.h index d209e81c..c6cc2f0c 100644 --- a/source/glest_game/game/game_constants.h +++ b/source/glest_game/game/game_constants.h @@ -114,6 +114,7 @@ public: static const char *RANDOMFACTION_SLOTNAME; static const char *playerTextureCacheLookupKey; + static const char *factionPreviewTextureCacheLookupKey; static const char *pathCacheLookupKey; static const char *path_data_CacheLookupKey; static const char *path_ini_CacheLookupKey; diff --git a/source/glest_game/global/config.cpp b/source/glest_game/global/config.cpp index c5df482e..0bcf3342 100644 --- a/source/glest_game/global/config.cpp +++ b/source/glest_game/global/config.cpp @@ -50,7 +50,8 @@ const char *GameConstants::folder_path_screenshots = "screens/"; const char *GameConstants::OBSERVER_SLOTNAME = "*Observer*"; const char *GameConstants::RANDOMFACTION_SLOTNAME = "*Random*"; -const char *GameConstants::playerTextureCacheLookupKey = "playerTextureCache"; +const char *GameConstants::playerTextureCacheLookupKey = "playerTextureCache"; +const char *GameConstants::factionPreviewTextureCacheLookupKey = "factionPreviewTextureCache"; const char *GameConstants::application_name = "MegaGlest"; const char *GameConstants::pathCacheLookupKey = "pathCache_"; diff --git a/source/glest_game/graphics/renderer.cpp b/source/glest_game/graphics/renderer.cpp index 1416f2da..a59de087 100644 --- a/source/glest_game/graphics/renderer.cpp +++ b/source/glest_game/graphics/renderer.cpp @@ -416,6 +416,9 @@ void Renderer::reset3dMenu() { // ==================== end ==================== void Renderer::end() { + std::map &crcFactionPreviewTextureCache = CacheManager::getCachedItem< std::map >(GameConstants::factionPreviewTextureCacheLookupKey); + crcFactionPreviewTextureCache.clear(); + //delete resources modelManager[rsGlobal]->end(); textureManager[rsGlobal]->end(); @@ -4798,4 +4801,32 @@ uint64 Renderer::getCurrentPixelByteCount(ResourceScope rs) const { return result; } +Texture2D * Renderer::findFactionLogoTexture(string logoFilename) { + SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] logoFilename [%s]\n",__FILE__,__FUNCTION__,__LINE__,logoFilename.c_str()); + + Texture2D *result = NULL; + if(logoFilename != "") { + // Cache faction preview textures + string data_path = getGameReadWritePath(GameConstants::path_data_CacheLookupKey); + std::map &crcFactionPreviewTextureCache = CacheManager::getCachedItem< std::map >(GameConstants::factionPreviewTextureCacheLookupKey); + + if(crcFactionPreviewTextureCache.find(logoFilename) != crcFactionPreviewTextureCache.end()) { + SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] logoFilename [%s]\n",__FILE__,__FUNCTION__,__LINE__,logoFilename.c_str()); + result = crcFactionPreviewTextureCache[logoFilename]; + } + else { + SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] logoFilename [%s]\n",__FILE__,__FUNCTION__,__LINE__,logoFilename.c_str()); + Renderer &renderer= Renderer::getInstance(); + result = renderer.newTexture2D(rsGlobal); + result->setMipmap(true); + result->load(logoFilename); + renderer.initTexture(rsGlobal,result); + crcFactionPreviewTextureCache[logoFilename] = result; + } + } + + return result; +} + + }}//end namespace diff --git a/source/glest_game/graphics/renderer.h b/source/glest_game/graphics/renderer.h index fd781714..68404b96 100644 --- a/source/glest_game/graphics/renderer.h +++ b/source/glest_game/graphics/renderer.h @@ -422,6 +422,8 @@ public: void renderProgressBar(int size, int x, int y, Font2D *font,int customWidth=-1, string prefixLabel=""); + static Texture2D * findFactionLogoTexture(string logoFilename); + private: //private misc float computeSunAngle(float time); diff --git a/source/glest_game/main/main.cpp b/source/glest_game/main/main.cpp index 1cd3d49f..4b147691 100644 --- a/source/glest_game/main/main.cpp +++ b/source/glest_game/main/main.cpp @@ -917,6 +917,7 @@ void setupLogging(Config &config, bool haveSpecialOutputCommandLineOption) { SystemFlags::getSystemSettingType(SystemFlags::debugUnitCommands).enabled = config.getBool("DebugUnitCommands","false"); SystemFlags::getSystemSettingType(SystemFlags::debugPathFinder).enabled = config.getBool("DebugPathFinder","false"); SystemFlags::getSystemSettingType(SystemFlags::debugLUA).enabled = config.getBool("DebugLUA","false"); + SystemFlags::getSystemSettingType(SystemFlags::debugSound).enabled = config.getBool("DebugSound","false"); SystemFlags::getSystemSettingType(SystemFlags::debugError).enabled = config.getBool("DebugError","true"); string debugLogFile = config.getString("DebugLogFile",""); @@ -971,6 +972,14 @@ void setupLogging(Config &config, bool haveSpecialOutputCommandLineOption) { debugLUALogFile = getGameReadWritePath(GameConstants::path_logs_CacheLookupKey) + debugLUALogFile; } + string debugSoundLogFile = config.getString("DebugLogFileSound",""); + if(debugSoundLogFile == "") { + debugSoundLogFile = debugLogFile; + } + else { + debugSoundLogFile = getGameReadWritePath(GameConstants::path_logs_CacheLookupKey) + debugSoundLogFile; + } + string debugErrorLogFile = config.getString("DebugLogFileError",""); SystemFlags::getSystemSettingType(SystemFlags::debugSystem).debugLogFileName = debugLogFile; @@ -980,10 +989,11 @@ void setupLogging(Config &config, bool haveSpecialOutputCommandLineOption) { SystemFlags::getSystemSettingType(SystemFlags::debugUnitCommands).debugLogFileName = debugUnitCommandsLogFile; SystemFlags::getSystemSettingType(SystemFlags::debugPathFinder).debugLogFileName = debugPathFinderLogFile; SystemFlags::getSystemSettingType(SystemFlags::debugLUA).debugLogFileName = debugLUALogFile; + SystemFlags::getSystemSettingType(SystemFlags::debugSound).debugLogFileName = debugSoundLogFile; SystemFlags::getSystemSettingType(SystemFlags::debugError).debugLogFileName = debugErrorLogFile; if(haveSpecialOutputCommandLineOption == false) { - if(SystemFlags::VERBOSE_MODE_ENABLED) printf("Startup settings are: debugSystem [%d], debugNetwork [%d], debugPerformance [%d], debugWorldSynch [%d], debugUnitCommands[%d], debugPathFinder[%d], debugLUA [%d], debugError [%d]\n", + if(SystemFlags::VERBOSE_MODE_ENABLED) printf("Startup settings are: debugSystem [%d], debugNetwork [%d], debugPerformance [%d], debugWorldSynch [%d], debugUnitCommands[%d], debugPathFinder[%d], debugLUA [%d], debugSound [%d], debugError [%d]\n", SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled, SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled, SystemFlags::getSystemSettingType(SystemFlags::debugPerformance).enabled, @@ -991,6 +1001,7 @@ void setupLogging(Config &config, bool haveSpecialOutputCommandLineOption) { SystemFlags::getSystemSettingType(SystemFlags::debugUnitCommands).enabled, SystemFlags::getSystemSettingType(SystemFlags::debugPathFinder).enabled, SystemFlags::getSystemSettingType(SystemFlags::debugLUA).enabled, + SystemFlags::getSystemSettingType(SystemFlags::debugSound).enabled, SystemFlags::getSystemSettingType(SystemFlags::debugError).enabled); } } diff --git a/source/glest_game/menu/menu_state_connected_game.cpp b/source/glest_game/menu/menu_state_connected_game.cpp index 8c0a0d13..755ca690 100644 --- a/source/glest_game/menu/menu_state_connected_game.cpp +++ b/source/glest_game/menu/menu_state_connected_game.cpp @@ -420,8 +420,6 @@ MenuStateConnectedGame::MenuStateConnectedGame(Program *program, MainMenu *mainM } MenuStateConnectedGame::~MenuStateConnectedGame() { - cleanupFactionTexture(); - if(ftpClientThread != NULL) { ftpClientThread->setCallBackObject(NULL); if(ftpClientThread->shutdownAndWait() == true) { @@ -1662,49 +1660,18 @@ void MenuStateConnectedGame::loadFactionTexture(string filepath) { SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); - cleanupFactionTexture(); - if(enableFactionTexturePreview == true) { if(filepath == "") { factionTexture=NULL; } else { SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] filepath = [%s]\n",__FILE__,__FUNCTION__,__LINE__,filepath.c_str()); - - factionTexture = GraphicsInterface::getInstance().getFactory()->newTexture2D(); - //loadingTexture = renderer.newTexture2D(rsGlobal); - factionTexture->setMipmap(true); - //loadingTexture->getPixmap()->load(filepath); - factionTexture->load(filepath); - - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); - - Renderer &renderer= Renderer::getInstance(); - renderer.initTexture(rsGlobal,factionTexture); - + factionTexture = Renderer::findFactionLogoTexture(filepath); SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); } } } -void MenuStateConnectedGame::cleanupFactionTexture() { - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); - - if(factionTexture!=NULL) { - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); - - factionTexture->end(); - delete factionTexture; - - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); - - //delete loadingTexture; - factionTexture=NULL; - } - - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); -} - bool MenuStateConnectedGame::loadMapInfo(string file, MapInfo *mapInfo, bool loadMapPreview) { struct MapFileHeader{ diff --git a/source/glest_game/menu/menu_state_connected_game.h b/source/glest_game/menu/menu_state_connected_game.h index e4620014..6af8df08 100644 --- a/source/glest_game/menu/menu_state_connected_game.h +++ b/source/glest_game/menu/menu_state_connected_game.h @@ -180,7 +180,6 @@ private: string getHumanPlayerName(); void setActiveInputLabel(GraphicLabel *newLable); - void cleanupFactionTexture(); void loadFactionTexture(string filepath); bool loadMapInfo(string file, MapInfo *mapInfo, bool loadMapPreview); void showMessageBox(const string &text, const string &header, bool toggle); diff --git a/source/glest_game/menu/menu_state_custom_game.cpp b/source/glest_game/menu/menu_state_custom_game.cpp index da8b4377..af98fda7 100644 --- a/source/glest_game/menu/menu_state_custom_game.cpp +++ b/source/glest_game/menu/menu_state_custom_game.cpp @@ -547,7 +547,6 @@ void MenuStateCustomGame::cleanup() { SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d]\n",__FILE__,__FUNCTION__,__LINE__); - cleanupFactionTexture(); cleanupMapPreviewTexture(); SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d]\n",__FILE__,__FUNCTION__,__LINE__); @@ -2854,49 +2853,18 @@ void MenuStateCustomGame::loadFactionTexture(string filepath) { SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); - cleanupFactionTexture(); - if(enableFactionTexturePreview == true) { if(filepath == "") { - factionTexture=NULL; + factionTexture = NULL; } else { SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] filepath = [%s]\n",__FILE__,__FUNCTION__,__LINE__,filepath.c_str()); - - factionTexture = GraphicsInterface::getInstance().getFactory()->newTexture2D(); - //loadingTexture = renderer.newTexture2D(rsGlobal); - factionTexture->setMipmap(true); - //loadingTexture->getPixmap()->load(filepath); - factionTexture->load(filepath); - - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); - - Renderer &renderer= Renderer::getInstance(); - renderer.initTexture(rsGlobal,factionTexture); - + factionTexture = Renderer::findFactionLogoTexture(filepath); SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); } } } -void MenuStateCustomGame::cleanupFactionTexture() { - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); - - if(factionTexture!=NULL) { - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); - - factionTexture->end(); - delete factionTexture; - - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); - - //delete loadingTexture; - factionTexture=NULL; - } - - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); -} - void MenuStateCustomGame::cleanupMapPreviewTexture() { SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); diff --git a/source/glest_game/menu/menu_state_custom_game.h b/source/glest_game/menu/menu_state_custom_game.h index 6b41f8e4..9ba203f5 100644 --- a/source/glest_game/menu/menu_state_custom_game.h +++ b/source/glest_game/menu/menu_state_custom_game.h @@ -184,7 +184,6 @@ private: void setActiveInputLabel(GraphicLabel *newLable); string getHumanPlayerName(int index=-1); - void cleanupFactionTexture(); void loadFactionTexture(string filepath); void RestoreLastGameSettings(); diff --git a/source/glest_game/menu/menu_state_masterserver.cpp b/source/glest_game/menu/menu_state_masterserver.cpp index f9dd4909..b98db8c4 100644 --- a/source/glest_game/menu/menu_state_masterserver.cpp +++ b/source/glest_game/menu/menu_state_masterserver.cpp @@ -843,7 +843,7 @@ void MenuStateMasterserver::rebuildServerLines(const string &serverInfo) { Tokenize(server,serverEntities,"|"); const int MIN_FIELDS_EXPECTED = 14; - if(SystemFlags::VERBOSE_MODE_ENABLED) printf("--------------> server [%s] serverEntities.size() = %d MIN_FIELDS_EXPECTED = %d\n",server.c_str(),serverEntities.size(),MIN_FIELDS_EXPECTED); + if(SystemFlags::VERBOSE_MODE_ENABLED) printf("--------------> server [%s] serverEntities.size() = %lu MIN_FIELDS_EXPECTED = %d\n",server.c_str(),serverEntities.size(),MIN_FIELDS_EXPECTED); if(serverEntities.size() >= MIN_FIELDS_EXPECTED) { labelTitle.setText(lang.get("AvailableServers")); diff --git a/source/shared_lib/include/sound/openal/sound_player_openal.h b/source/shared_lib/include/sound/openal/sound_player_openal.h index d5376039..ada64e46 100644 --- a/source/shared_lib/include/sound/openal/sound_player_openal.h +++ b/source/shared_lib/include/sound/openal/sound_player_openal.h @@ -68,8 +68,8 @@ public: protected: friend class SoundPlayerOpenAL; - static const size_t STREAMBUFFERSIZE = 1024 * 500; - static const size_t STREAMFRAGMENTS = 5; + static const size_t STREAMBUFFERSIZE = 4096 * 500; + static const size_t STREAMFRAGMENTS = 10; static const size_t STREAMFRAGMENTSIZE = STREAMBUFFERSIZE / STREAMFRAGMENTS; diff --git a/source/shared_lib/include/util/util.h b/source/shared_lib/include/util/util.h index fe1cfae4..03c22d64 100644 --- a/source/shared_lib/include/util/util.h +++ b/source/shared_lib/include/util/util.h @@ -44,6 +44,7 @@ public: debugUnitCommands, debugPathFinder, debugLUA, + debugSound, debugError }; diff --git a/source/shared_lib/sources/sound/openal/sound_player_openal.cpp b/source/shared_lib/sources/sound/openal/sound_player_openal.cpp index fe857a38..9b20fd62 100644 --- a/source/shared_lib/sources/sound/openal/sound_player_openal.cpp +++ b/source/shared_lib/sources/sound/openal/sound_player_openal.cpp @@ -22,22 +22,22 @@ using namespace Util; SoundSource::SoundSource() { - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); + SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); alGenSources(1, &source); SoundPlayerOpenAL::checkAlError("Couldn't create audio source: "); - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); + SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); } SoundSource::~SoundSource() { - //SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); + //SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); stop(); alDeleteSources(1, &source); - //SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); + //SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); } bool SoundSource::playing() @@ -59,13 +59,13 @@ void SoundSource::unQueueBuffers() { void SoundSource::stop() { - //SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); + //SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); alSourceStop(source); SoundPlayerOpenAL::checkAlError("Problem stopping audio source: "); - //SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); + //SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); unQueueBuffers(); @@ -73,29 +73,36 @@ void SoundSource::stop() alSourcei(source, AL_BUFFER, AL_NONE); - //SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); + //SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); SoundPlayerOpenAL::checkAlError("Problem stopping audio source: "); - //SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); + //SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); } ALenum SoundSource::getFormat(Sound* sound) { if(sound->getInfo()->getChannels() == 2) { - if(sound->getInfo()->getBitsPerSample() == 16) + if(sound->getInfo()->getBitsPerSample() == 16) { return AL_FORMAT_STEREO16; - else if(sound->getInfo()->getBitsPerSample() == 8) + } + else if(sound->getInfo()->getBitsPerSample() == 8) { return AL_FORMAT_STEREO8; - else + } + else { throw std::runtime_error("[1] Sample format not supported in file: " + sound->getFileName()); - } else if(sound->getInfo()->getChannels() == 1) { - if(sound->getInfo()->getBitsPerSample() == 16) + } + } + else if(sound->getInfo()->getChannels() == 1) { + if(sound->getInfo()->getBitsPerSample() == 16) { return AL_FORMAT_MONO16; - else if(sound->getInfo()->getBitsPerSample() == 8) + } + else if(sound->getInfo()->getBitsPerSample() == 8) { return AL_FORMAT_MONO8; - else + } + else { throw std::runtime_error("[2] Sample format not supported in file: " + sound->getFileName()); + } } throw std::runtime_error("[3] Sample format not supported in file: " + sound->getFileName()); @@ -114,8 +121,9 @@ StaticSoundSource::~StaticSoundSource() { } } -void StaticSoundSource::play(StaticSound* sound) -{ +void StaticSoundSource::play(StaticSound* sound) { + SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); + if(bufferAllocated) { stop(); alDeleteBuffers(1, &buffer); @@ -125,14 +133,18 @@ void StaticSoundSource::play(StaticSound* sound) alGenBuffers(1, &buffer); SoundPlayerOpenAL::checkAlError("Couldn't create audio buffer: "); + SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s Line: %d] filename [%s] format = %d, sound->getSamples() = %d, sound->getInfo()->getSize() = %d, sound->getInfo()->getSamplesPerSecond() = %d\n",__FILE__,__FUNCTION__,__LINE__,sound->getFileName().c_str(),format,sound->getSamples(),sound->getInfo()->getSize(),sound->getInfo()->getSamplesPerSecond()); + bufferAllocated = true; alBufferData(buffer, format, sound->getSamples(), static_cast (sound->getInfo()->getSize()), static_cast (sound->getInfo()->getSamplesPerSecond())); + SoundPlayerOpenAL::checkAlError("Couldn't fill audio buffer: "); alSourcei(source, AL_BUFFER, buffer); alSourcef(source, AL_GAIN, sound->getVolume()); + alSourcePlay(source); SoundPlayerOpenAL::checkAlError("Couldn't start audio source: "); } @@ -192,14 +204,14 @@ void StreamSoundSource::play(StrSound* sound, int64 fadeon) void StreamSoundSource::update() { - //SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); + //SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); if(sound == 0) { - //SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); + //SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); return; } - //SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); + //SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); if(fadeState == NoFading){ alSourcef(source, AL_GAIN, sound->getVolume()); } @@ -217,18 +229,18 @@ void StreamSoundSource::update() break; } - //SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); + //SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); // we might have to restart the source if we had a buffer underrun if(!playing()) { - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d] Restarting audio source because of buffer underrun.\n",__FILE__,__FUNCTION__,__LINE__); + SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s %d] Restarting audio source because of buffer underrun.\n",__FILE__,__FUNCTION__,__LINE__); std::cerr << "Restarting audio source because of buffer underrun.\n"; alSourcePlay(source); SoundPlayerOpenAL::checkAlError("Couldn't restart audio source: "); } - //SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); + //SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); // handle fading switch(fadeState) { @@ -253,7 +265,7 @@ void StreamSoundSource::update() break; } - //SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); + //SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); } bool StreamSoundSource::fillBufferAndQueue(ALuint buffer) @@ -289,21 +301,21 @@ bool StreamSoundSource::fillBufferAndQueue(ALuint buffer) // ================================ SoundPlayerOpenAL::SoundPlayerOpenAL() { - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); + SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); device = 0; initOk = false; - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); + SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); } SoundPlayerOpenAL::~SoundPlayerOpenAL() { - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); + SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); end(); initOk = false; - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); + SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); } void SoundPlayerOpenAL::printOpenALInfo() @@ -315,7 +327,7 @@ void SoundPlayerOpenAL::printOpenALInfo() } bool SoundPlayerOpenAL::init(const SoundPlayerParams* params) { - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); + SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); initOk = false; @@ -341,11 +353,11 @@ bool SoundPlayerOpenAL::init(const SoundPlayerParams* params) { checkAlError("Audio error after init: "); initOk = true; - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); + SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); } catch(const exception &ex) { SystemFlags::OutputDebug(SystemFlags::debugError,"In [%s::%s Line: %d] Error [%s]\n",__FILE__,__FUNCTION__,__LINE__,ex.what()); - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d] error [%s]\n",__FILE__,__FUNCTION__,__LINE__,ex.what()); + SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s %d] error [%s]\n",__FILE__,__FUNCTION__,__LINE__,ex.what()); printOpenALInfo(); //throw std::runtime_error(ex.what()); } @@ -355,7 +367,7 @@ bool SoundPlayerOpenAL::init(const SoundPlayerParams* params) { void SoundPlayerOpenAL::end() { - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); + SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); for(StaticSoundSources::iterator i = staticSources.begin(); @@ -364,7 +376,7 @@ void SoundPlayerOpenAL::end() { src->stop(); } - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); + SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); for(StreamSoundSources::iterator i = streamSources.begin(); i != streamSources.end(); ++i) { @@ -372,32 +384,32 @@ void SoundPlayerOpenAL::end() { src->stop(); } - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); + SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); for(StaticSoundSources::iterator i = staticSources.begin(); i != staticSources.end(); ++i) { delete *i; } - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); + SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); for(StreamSoundSources::iterator i = streamSources.begin(); i != streamSources.end(); ++i) { delete *i; } - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); + SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); alcMakeContextCurrent( NULL ); - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); + SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); if(context != 0) { alcDestroyContext(context); context = 0; } - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); + SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); if(device != 0) { alcCloseDevice(device); @@ -405,7 +417,7 @@ void SoundPlayerOpenAL::end() { initOk = false; } - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); + SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__); } void SoundPlayerOpenAL::play(StaticSound* staticSound) { @@ -415,13 +427,15 @@ void SoundPlayerOpenAL::play(StaticSound* staticSound) { try { StaticSoundSource* source = findStaticSoundSource(); - if(source == 0) + + if(source == 0) { return; + } source->play(staticSound); } catch(std::exception& e) { SystemFlags::OutputDebug(SystemFlags::debugError,"In [%s::%s Line: %d] Error [%s]\n",__FILE__,__FUNCTION__,__LINE__,e.what()); - std::cerr << "Couldn't play static sound: " << e.what() << "\n"; + std::cerr << "Couldn't play static sound: [" << e.what() << "]\n"; } } @@ -481,7 +495,7 @@ void SoundPlayerOpenAL::updateStreams() { source->update(); } catch(std::exception& e) { - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] Error [%s]\n",__FILE__,__FUNCTION__,__LINE__,e.what()); + SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s Line: %d] Error [%s]\n",__FILE__,__FUNCTION__,__LINE__,e.what()); SystemFlags::OutputDebug(SystemFlags::debugError,"In [%s::%s Line: %d] Error [%s]\n",__FILE__,__FUNCTION__,__LINE__,e.what()); std::cerr << "Error while updating sound stream: "<< e.what() << "\n"; @@ -491,13 +505,13 @@ void SoundPlayerOpenAL::updateStreams() { checkAlcError("Error while processing audio context: "); } catch(exception &ex) { - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] Error [%s]\n",__FILE__,__FUNCTION__,__LINE__,ex.what()); + SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s Line: %d] Error [%s]\n",__FILE__,__FUNCTION__,__LINE__,ex.what()); SystemFlags::OutputDebug(SystemFlags::debugError,"In [%s::%s Line: %d] Error [%s]\n",__FILE__,__FUNCTION__,__LINE__,ex.what()); printOpenALInfo(); throw runtime_error(ex.what()); } catch(...) { - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] UNKNOWN Error\n",__FILE__,__FUNCTION__,__LINE__); + SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s Line: %d] UNKNOWN Error\n",__FILE__,__FUNCTION__,__LINE__); SystemFlags::OutputDebug(SystemFlags::debugError,"In [%s::%s Line: %d] UNKNOWN Error\n",__FILE__,__FUNCTION__,__LINE__); printOpenALInfo(); throw; @@ -521,12 +535,12 @@ StaticSoundSource* SoundPlayerOpenAL::findStaticSoundSource() { return 0; } - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); + SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); StaticSoundSource* source = new StaticSoundSource(); staticSources.push_back(source); - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); + SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); return source; } @@ -548,12 +562,12 @@ StreamSoundSource* SoundPlayerOpenAL::findStreamSoundSource() { throw std::runtime_error("Too many stream sounds played at once"); } - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); + SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); StreamSoundSource* source = new StreamSoundSource(); streamSources.push_back(source); - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); + SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); return source; } diff --git a/source/shared_lib/sources/sound/sound_file_loader.cpp b/source/shared_lib/sources/sound/sound_file_loader.cpp index 371fff1f..72d6356c 100644 --- a/source/shared_lib/sources/sound/sound_file_loader.cpp +++ b/source/shared_lib/sources/sound/sound_file_loader.cpp @@ -159,30 +159,24 @@ void OggSoundFileLoader::open(const string &path, SoundInfo *soundInfo){ throw runtime_error("Can't read ogg header info for file: "+path); } - SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] path = [%s] vi->version = %d, vi->channels = %d, vi->rate = %ld, vi->bitrate_upper = %ld, vi->bitrate_nominal = %ld, vi->bitrate_lower = %ld, vi->bitrate_window = %ld\n",__FILE__,__FUNCTION__,__LINE__,path.c_str(),vi->version,vi->channels,vi->rate,vi->bitrate_upper,vi->bitrate_nominal,vi->bitrate_lower,vi->bitrate_window); + uint32 samples = static_cast(ov_pcm_total(vf, -1)); + + SystemFlags::OutputDebug(SystemFlags::debugSound,"In [%s::%s Line: %d] path = [%s] vi->version = %d, vi->channels = %d, vi->rate = %ld, vi->bitrate_upper = %ld, vi->bitrate_nominal = %ld, vi->bitrate_lower = %ld, vi->bitrate_window = %ld, samples = %lu\n",__FILE__,__FUNCTION__,__LINE__,path.c_str(),vi->version,vi->channels,vi->rate,vi->bitrate_upper,vi->bitrate_nominal,vi->bitrate_lower,vi->bitrate_window,samples); soundInfo->setChannels(vi->channels); soundInfo->setsamplesPerSecond(vi->rate); soundInfo->setBitsPerSample(16); - - uint32 samples = static_cast(ov_pcm_total(vf, -1)); - - //if(vi->channels == 1) { - soundInfo->setSize(samples * 2); - //} - //else { - // soundInfo->setSize(samples * 4); - //} + soundInfo->setSize(samples * 2); } uint32 OggSoundFileLoader::read(int8 *samples, uint32 size){ int section; int totalBytesRead= 0; - while(size>0){ + while(size>0) { int bytesRead= ov_read(vf, reinterpret_cast (samples), size, 0, 2, 1, §ion); - if(bytesRead==0){ + if(bytesRead==0) { break; } size-= bytesRead; diff --git a/source/shared_lib/sources/util/util.cpp b/source/shared_lib/sources/util/util.cpp index fc4e8b62..680a6d5b 100644 --- a/source/shared_lib/sources/util/util.cpp +++ b/source/shared_lib/sources/util/util.cpp @@ -186,13 +186,14 @@ void SystemFlags::init(bool haveSpecialOutputCommandLineOption) { if(SystemFlags::debugLogFileList == NULL) { SystemFlags::debugLogFileList = new std::map(); - (*SystemFlags::debugLogFileList)[SystemFlags::debugSystem] = SystemFlags::SystemFlagsType(SystemFlags::debugSystem); + (*SystemFlags::debugLogFileList)[SystemFlags::debugSystem] = SystemFlags::SystemFlagsType(SystemFlags::debugSystem); (*SystemFlags::debugLogFileList)[SystemFlags::debugNetwork] = SystemFlags::SystemFlagsType(SystemFlags::debugNetwork); (*SystemFlags::debugLogFileList)[SystemFlags::debugPerformance] = SystemFlags::SystemFlagsType(SystemFlags::debugPerformance); (*SystemFlags::debugLogFileList)[SystemFlags::debugWorldSynch] = SystemFlags::SystemFlagsType(SystemFlags::debugWorldSynch); (*SystemFlags::debugLogFileList)[SystemFlags::debugUnitCommands] = SystemFlags::SystemFlagsType(SystemFlags::debugUnitCommands); (*SystemFlags::debugLogFileList)[SystemFlags::debugLUA] = SystemFlags::SystemFlagsType(SystemFlags::debugLUA); - (*SystemFlags::debugLogFileList)[SystemFlags::debugError] = SystemFlags::SystemFlagsType(SystemFlags::debugError); + (*SystemFlags::debugLogFileList)[SystemFlags::debugSound] = SystemFlags::SystemFlagsType(SystemFlags::debugSound); + (*SystemFlags::debugLogFileList)[SystemFlags::debugError] = SystemFlags::SystemFlagsType(SystemFlags::debugError); } if(threadLogger == NULL) {