Fixed: #1032 Crash in OpenAL driver when a music is playing and user returns to selection menu

This commit is contained in:
kervala 2010-07-29 13:44:55 +02:00
parent c4ad974909
commit 79d0b4fced

View file

@ -22,7 +22,8 @@
using namespace std; using namespace std;
using namespace NLMISC; using namespace NLMISC;
namespace NLSOUND { namespace NLSOUND
{
IMusicBuffer::IMusicBuffer() : _InternalStream(NULL) IMusicBuffer::IMusicBuffer() : _InternalStream(NULL)
{ {
@ -45,8 +46,7 @@ IMusicBuffer *IMusicBuffer::createMusicBuffer(const std::string &filepath, bool
string type = CFile::getExtension(filepath); string type = CFile::getExtension(filepath);
CIFile *ifile = new CIFile(); CIFile *ifile = new CIFile();
ifile->setCacheFileOnOpen(!async); ifile->setAsyncLoading(async);
ifile->allowBNPCacheFileOnOpen(!async);
ifile->open(lookup); ifile->open(lookup);
IMusicBuffer *mb = createMusicBuffer(type, ifile, loop); IMusicBuffer *mb = createMusicBuffer(type, ifile, loop);
@ -80,17 +80,17 @@ bool IMusicBuffer::getInfo(const std::string &filepath, std::string &artist, std
{ {
string lookup = CPath::lookup(filepath, false); string lookup = CPath::lookup(filepath, false);
if (lookup.empty()) if (lookup.empty())
{ {
nlwarning("Music file %s does not exist!", filepath.c_str()); nlwarning("Music file %s does not exist!", filepath.c_str());
return false; return false;
} }
string type = CFile::getExtension(filepath); string type = CFile::getExtension(filepath);
string type_lower = toLower(type); string type_lower = toLower(type);
if (type_lower == "ogg") if (type_lower == "ogg")
{ {
CIFile ifile; CIFile ifile;
ifile.setCacheFileOnOpen(false); ifile.setCacheFileOnOpen(false);
ifile.allowBNPCacheFileOnOpen(false); ifile.allowBNPCacheFileOnOpen(false);
ifile.open(lookup); ifile.open(lookup);
return CMusicBufferVorbis::getInfo(&ifile, artist, title); return CMusicBufferVorbis::getInfo(&ifile, artist, title);