From 7eb24a2761deb9604f1c6b813e6de69876088f9e Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sun, 31 Jul 2016 23:00:45 -0400 Subject: Support thread-safe state restoration --- src/server/Worker.hpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src/server/Worker.hpp') 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 + Copyright 2007-2016 David Robillard 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 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(); }; -- cgit v1.2.1