aboutsummaryrefslogtreecommitdiffstats
path: root/src/state.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2012-01-03 23:36:19 +0000
committerDavid Robillard <d@drobilla.net>2012-01-03 23:36:19 +0000
commit8eaf389a6aaa4234651e9d568cb7ded6ffe27b09 (patch)
tree288678dafc4d4c6dc4b5f378514dd900b00949e2 /src/state.c
parent8d726ac166de79a30e2abad4f4c3a36c23a3fe83 (diff)
downloadjalv-8eaf389a6aaa4234651e9d568cb7ded6ffe27b09.tar.gz
jalv-8eaf389a6aaa4234651e9d568cb7ded6ffe27b09.tar.bz2
jalv-8eaf389a6aaa4234651e9d568cb7ded6ffe27b09.zip
Don't run plugin while setting state (which violates threading rules).
git-svn-id: http://svn.drobilla.net/lad/trunk/jalv@3913 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/state.c')
-rw-r--r--src/state.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/state.c b/src/state.c
index 5edab41..d7a3d5b 100644
--- a/src/state.c
+++ b/src/state.c
@@ -132,8 +132,13 @@ void
jalv_apply_state(Jalv* jalv, LilvState* state)
{
if (state) {
+ jalv->play_state = JALV_PAUSE_REQUESTED;
+ sem_wait(&jalv->paused);
+
lilv_state_restore(
state, jalv->instance, set_port_value, jalv, 0, NULL);
+
+ jalv->play_state = JALV_RUNNING;
}
}