aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/audio/sdl
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/audio/sdl')
-rw-r--r--src/libjin/audio/sdl/audio.cpp2
-rw-r--r--src/libjin/audio/sdl/source.cpp74
-rw-r--r--src/libjin/audio/sdl/source.h1
3 files changed, 40 insertions, 37 deletions
diff --git a/src/libjin/audio/sdl/audio.cpp b/src/libjin/audio/sdl/audio.cpp
index a26ea1a..be4caa2 100644
--- a/src/libjin/audio/sdl/audio.cpp
+++ b/src/libjin/audio/sdl/audio.cpp
@@ -10,7 +10,7 @@ namespace audio
/* עcallbackƵ̵߳ */
void defaultCallback(void *userdata, Uint8 *stream, int size)
{
- SDLAudio* audio = (SDLAudio*)userdata;
+ SDLAudio* audio = static_cast<SDLAudio*>(userdata);
audio->lock();
audio->processCommands();
audio->processSources(stream, size);
diff --git a/src/libjin/audio/sdl/source.cpp b/src/libjin/audio/sdl/source.cpp
index 3686a92..1a5c5d1 100644
--- a/src/libjin/audio/sdl/source.cpp
+++ b/src/libjin/audio/sdl/source.cpp
@@ -239,43 +239,46 @@ Manager::get()->pushCommand(cmd); \
while (!commands.empty())
{
cmd = commands.front();
- source = cmd->source;
- if (source != nullptr && cmd != nullptr)
+ if (cmd != nullptr)
{
- switch (cmd->action)
+ source = cmd->source;
+ if (source != nullptr)
{
- case Command::Action::Play:
- removeSource(source);
- pushSource(source);
- source->status.state = PLAYING;
- source->status.pos = 0; // rewind
- break;
- case Command::Action::Stop:
- manager->removeSource(source);
- source->status.state = STOPPED;
- source->status.pos = 0; // rewind
- break;
- case Command::Action::Pause:
- manager->removeSource(source);
- source->status.state = PAUSED;
- break;
- case Command::Action::Resume:
- manager->removeSource(source);
- manager->pushSource(source);
- source->status.state = PLAYING;
- break;
- case Command::Action::Rewind:
- source->status.state = PLAYING;
- source->status.pos = 0;
- break;
- case Command::Action::SetVolume:
- //float cmd->parameter._float;
- break;
- case Command::Action::SetLoop:
- source->status.loop = cmd->parameter._boolean;
- break;
- /*case Command::Action::SetRate:
- */
+ switch (cmd->action)
+ {
+ case Command::Action::Play:
+ removeSource(source);
+ pushSource(source);
+ source->status.state = PLAYING;
+ source->status.pos = 0; // rewind
+ break;
+ case Command::Action::Stop:
+ manager->removeSource(source);
+ source->status.state = STOPPED;
+ source->status.pos = 0; // rewind
+ break;
+ case Command::Action::Pause:
+ manager->removeSource(source);
+ source->status.state = PAUSED;
+ break;
+ case Command::Action::Resume:
+ manager->removeSource(source);
+ manager->pushSource(source);
+ source->status.state = PLAYING;
+ break;
+ case Command::Action::Rewind:
+ source->status.state = PLAYING;
+ source->status.pos = 0;
+ break;
+ case Command::Action::SetVolume:
+ //float cmd->parameter._float;
+ break;
+ case Command::Action::SetLoop:
+ source->status.loop = cmd->parameter._boolean;
+ break;
+ /*case Command::Action::SetRate:
+ */
+ }
}
}
commands.pop();
@@ -352,6 +355,7 @@ Manager::get()->pushCommand(cmd); \
{
Command* cmd = commandsPool.top();
commandsPool.pop();
+ return cmd;
}
return new Command();
}
diff --git a/src/libjin/audio/sdl/source.h b/src/libjin/audio/sdl/source.h
index 2f9acb5..365d6ff 100644
--- a/src/libjin/audio/sdl/source.h
+++ b/src/libjin/audio/sdl/source.h
@@ -93,7 +93,6 @@ namespace audio
static void pushSource(SDLSource* source);
static SDLSourceCommand* getCommand();
static void pushCommand(SDLSourceCommand* cmd);
- static void collectCommand(SDLSourceCommand* cmd);
static SDLSourceManager* manager;