diff options
author | David Robillard <d@drobilla.net> | 2017-01-18 15:28:04 -0500 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2017-01-18 15:28:04 -0500 |
commit | 02ae3e9d8bf3f6a5e844706721aad8c0ac9f4340 (patch) | |
tree | 5bbfb3eba51024529e3970103bfb0065b26bc8ec /src/server/Event.hpp | |
parent | 4e1c349bd3687b866597afda56dc5f1b0c4be4ef (diff) | |
download | ingen-02ae3e9d8bf3f6a5e844706721aad8c0ac9f4340.tar.gz ingen-02ae3e9d8bf3f6a5e844706721aad8c0ac9f4340.tar.bz2 ingen-02ae3e9d8bf3f6a5e844706721aad8c0ac9f4340.zip |
Fix invalid cross-thread use of mutex
Instead of abusing store mutex for this purpose, extend blocking mechanism of
the PreProcessor (designed for atomic bundle execution) to support execution of
individual atomic events which must be executed before the next event can be
pre-processed.
Diffstat (limited to 'src/server/Event.hpp')
-rw-r--r-- | src/server/Event.hpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/server/Event.hpp b/src/server/Event.hpp index 203e5d1d..a0adb564 100644 --- a/src/server/Event.hpp +++ b/src/server/Event.hpp @@ -58,7 +58,12 @@ public: enum class Mode { NORMAL, UNDO, REDO }; /** Execution mode for events that block and unblock preprocessing. */ - enum class Execution { NORMAL, BLOCK, UNBLOCK }; + enum class Execution { + NORMAL, ///< Normal pipelined execution + ATOMIC, ///< Block pre-processing until this event is executed + BLOCK, ///< Begin atomic block of events + UNBLOCK ///< Finish atomic executed block of events + }; /** Pre-process event before execution (non-realtime). */ virtual bool pre_process(PreProcessContext& ctx) = 0; |