From 8aacf1bd969d4aa8bdcc309b11eeface31fe9878 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Wed, 17 Feb 2010 19:40:36 +0000 Subject: Fix crash when rapidly decreasing polyphony (make SetMetadataEvent blocking if polyphony is changed). git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@2461 a436a847-0d15-0410-975c-d299462d15a1 --- src/engine/events/SetMetadata.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/engine/events') diff --git a/src/engine/events/SetMetadata.cpp b/src/engine/events/SetMetadata.cpp index 5e289928..8095a03c 100644 --- a/src/engine/events/SetMetadata.cpp +++ b/src/engine/events/SetMetadata.cpp @@ -216,6 +216,7 @@ SetMetadata::pre_process() } else if (key == uris.ingen_polyphony) { if (value.type() == Atom::INT) { op = POLYPHONY; + _blocking = true; _patch->prepare_internal_poly(*_engine.buffer_factory(), value.get_int32()); } else { _error = BAD_VALUE_TYPE; @@ -314,6 +315,9 @@ SetMetadata::execute(ProcessContext& context) _object->remove_property(p->first, p->second); QueuedEvent::execute(context); + + if (_blocking) + _request->unblock(); } -- cgit v1.2.1