aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/3rdparty/lls/lls.c0
-rw-r--r--src/3rdparty/lls/lls.h0
-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
-rw-r--r--src/libjin/fs/buffer.h17
-rw-r--r--src/lls/llsbind_jin.h0
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