diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/3rdparty/lls/lls.c | 0 | ||||
-rw-r--r-- | src/3rdparty/lls/lls.h | 0 | ||||
-rw-r--r-- | src/libjin/audio/sdl/audio.cpp | 2 | ||||
-rw-r--r-- | src/libjin/audio/sdl/source.cpp | 74 | ||||
-rw-r--r-- | src/libjin/audio/sdl/source.h | 1 | ||||
-rw-r--r-- | src/libjin/fs/buffer.h | 17 | ||||
-rw-r--r-- | src/lls/llsbind_jin.h | 0 |
7 files changed, 53 insertions, 41 deletions
diff --git a/src/3rdparty/lls/lls.c b/src/3rdparty/lls/lls.c new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/3rdparty/lls/lls.c diff --git a/src/3rdparty/lls/lls.h b/src/3rdparty/lls/lls.h new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/3rdparty/lls/lls.h 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; diff --git a/src/libjin/fs/buffer.h b/src/libjin/fs/buffer.h index dfdea21..7571c2d 100644 --- a/src/libjin/fs/buffer.h +++ b/src/libjin/fs/buffer.h @@ -16,16 +16,25 @@ namespace fs { } - inline ~Buffer() + inline Buffer(const Buffer& src) { - size = 0; - delete[] data; + delete data; + size = src.size; + data = new char[size]; + memcpy(data, src.data, size); } - inline Buffer(void* d, int size) + inline Buffer(void* d, int s) { data = new char(size); memcpy(data, d, size); + size = s; + } + + inline ~Buffer() + { + size = 0; + delete[] data; } public: diff --git a/src/lls/llsbind_jin.h b/src/lls/llsbind_jin.h new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/lls/llsbind_jin.h |