diff options
author | David Robillard <d@drobilla.net> | 2016-07-31 23:00:45 -0400 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2016-07-31 23:00:45 -0400 |
commit | 7eb24a2761deb9604f1c6b813e6de69876088f9e (patch) | |
tree | 919062cdc82d8c6a0697249bf95e6668c19eae83 /src/server/Worker.hpp | |
parent | a3b28f2924801bd59ea7924a652247269e6af928 (diff) | |
download | ingen-7eb24a2761deb9604f1c6b813e6de69876088f9e.tar.gz ingen-7eb24a2761deb9604f1c6b813e6de69876088f9e.tar.bz2 ingen-7eb24a2761deb9604f1c6b813e6de69876088f9e.zip |
Support thread-safe state restoration
Diffstat (limited to 'src/server/Worker.hpp')
-rw-r--r-- | src/server/Worker.hpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/server/Worker.hpp b/src/server/Worker.hpp index 1cd6aff8..0a3fdeaf 100644 --- a/src/server/Worker.hpp +++ b/src/server/Worker.hpp @@ -1,6 +1,6 @@ /* This file is part of Ingen. - Copyright 2007-2015 David Robillard <http://drobilla.net/> + Copyright 2007-2016 David Robillard <http://drobilla.net/> Ingen is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free @@ -35,13 +35,17 @@ class LV2Block; class Worker { public: - Worker(Log& log, uint32_t buffer_size); + Worker(Log& log, uint32_t buffer_size, bool synchronous=false); ~Worker(); struct Schedule : public LV2Features::Feature { + Schedule(bool sync) : synchronous(sync) {} + const char* uri() const { return LV2_WORKER__schedule; } SPtr<LV2_Feature> feature(World* world, Node* n); + + const bool synchronous; }; LV2_Worker_Status request(LV2Block* block, @@ -59,8 +63,9 @@ private: Raul::RingBuffer _responses; uint8_t* const _buffer; const uint32_t _buffer_size; + std::thread* _thread; bool _exit_flag; - std::thread _thread; + bool _synchronous; void run(); }; |