From 733cffe5d3cf6c421940b38d41456c89029a975d Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 28 May 2018 23:05:57 +0800 Subject: =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=9F=B3=E9=A2=91=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/jin.exe | Bin 1533440 -> 1533440 bytes src/libjin/audio/sdl/source.cpp | 22 +++++++++++++--------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/bin/jin.exe b/bin/jin.exe index 1ae3818..c4b35b2 100644 Binary files a/bin/jin.exe and b/bin/jin.exe differ diff --git a/src/libjin/audio/sdl/source.cpp b/src/libjin/audio/sdl/source.cpp index bfe090b..69c0670 100644 --- a/src/libjin/audio/sdl/source.cpp +++ b/src/libjin/audio/sdl/source.cpp @@ -57,7 +57,13 @@ namespace audio SDLSource* SDLSource::createSource(SourceType format, const char* file) { - std::ifstream fs(file, std::ios::binary); + std::ifstream fs; + fs.open(file, std::ios::binary); + if (!fs.is_open()) + { + fs.close(); + return nullptr; + } fs.seekg(0,std::ios::end); int size = fs.tellg(); fs.seekg(0, std::ios::beg); @@ -74,20 +80,16 @@ namespace audio if (mem == nullptr) return nullptr; SDLSource* source = new SDLSource(); - memset(&source->status, 0, sizeof(status)); - memset(&source->raw, 0, sizeof(raw)); +#define read(FMT) case FMT : source->load##FMT(mem, size); break try { switch (format) { - case WAV: - source->loadWAV(mem, size); - break; - case OGG: - source->loadOGG(mem, size); - break; + read(OGG); + read(WAV); } } +#undef read catch (SourceException& exp) { delete source; @@ -98,6 +100,8 @@ namespace audio SDLSource::SDLSource() { + memset(&status, 0, sizeof(status)); + memset(&raw, 0, sizeof(raw)); } SDLSource::~SDLSource() -- cgit v1.1-26-g67d0