aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2018-05-28 23:05:57 +0800
committerchai <chaifix@163.com>2018-05-28 23:05:57 +0800
commit733cffe5d3cf6c421940b38d41456c89029a975d (patch)
tree2d910e91da928a4c564fce87e71ea39be3cf606f /src
parent90a2ec2b18d7d3a36fa3106c4d063b1048d8d98e (diff)
更新音频模块
Diffstat (limited to 'src')
-rw-r--r--src/libjin/audio/sdl/source.cpp22
1 files changed, 13 insertions, 9 deletions
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()