summaryrefslogtreecommitdiffstats
path: root/src/server/events/Delta.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2017-02-12 14:59:56 +0100
committerDavid Robillard <d@drobilla.net>2017-02-12 15:07:11 +0100
commit81d45973412c675e3c0b4a10b64d811a219feeae (patch)
treed1bcab9fb49798d51611730351c611f79f290d79 /src/server/events/Delta.cpp
parentac0042bfe278e86696bea2d52f88730489e97f87 (diff)
downloadingen-81d45973412c675e3c0b4a10b64d811a219feeae.tar.gz
ingen-81d45973412c675e3c0b4a10b64d811a219feeae.tar.bz2
ingen-81d45973412c675e3c0b4a10b64d811a219feeae.zip
Fix atomic event execution
Diffstat (limited to 'src/server/events/Delta.cpp')
-rw-r--r--src/server/events/Delta.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/server/events/Delta.cpp b/src/server/events/Delta.cpp
index 3ee17ee2..2ad258fd 100644
--- a/src/server/events/Delta.cpp
+++ b/src/server/events/Delta.cpp
@@ -72,6 +72,13 @@ Delta::Delta(Engine& engine,
p.second.set_context(context);
}
}
+
+ // Set atomic execution if polyphony is to be changed
+ const Ingen::URIs& uris = _engine.world()->uris();
+ if (properties.count(uris.ingen_polyphonic) ||
+ properties.count(uris.ingen_polyphony)) {
+ _block = true;
+ }
}
Delta::~Delta()
@@ -360,7 +367,6 @@ Delta::pre_process(PreProcessContext& ctx)
if (value.get<int32_t>() < 1 || value.get<int32_t>() > 128) {
_status = Status::INVALID_POLY;
} else {
- _block = true;
op = SpecialType::POLYPHONY;
_graph->prepare_internal_poly(
*_engine.buffer_factory(), value.get<int32_t>());
@@ -378,7 +384,6 @@ Delta::pre_process(PreProcessContext& ctx)
} else if (value.type() != uris.forge.Bool) {
_status = Status::BAD_VALUE_TYPE;
} else {
- _block = true;
op = SpecialType::POLYPHONIC;
obj->set_property(key, value, value.context());
BlockImpl* block = dynamic_cast<BlockImpl*>(obj);