summaryrefslogtreecommitdiff
path: root/libs/surfaces
diff options
context:
space:
mode:
authorJohannes Mueller <github@johannes-mueller.org>2017-06-25 21:21:56 +0200
committerRobin Gareus <robin@gareus.org>2017-07-01 01:04:44 +0200
commitf7452c2a3a275356de32b4019a57034c7b8afe2f (patch)
treed7f79cedc38e4a162be9866945afb49a927ed9cd /libs/surfaces
parent02ed6130e40e1b0f401f0ea4c8bdec049800c153 (diff)
Addressing #7371: don't trigger session->undo() from non-GUI-thread
When triggering Session::undo() or Session::redo() from a non-GUI-thread (e.g. from a surface protocol) Ardour crashes if setting a CairoWidget dirty due to a ENSURE_GUI_THREAD assertion. (see #7371) By triggering undo by BasicUI::access_action() rather than by Session::undo() we ensure that the GUI thread will finally call Session::undo(). So more like a workaround ... but better than crashing :)
Diffstat (limited to 'libs/surfaces')
-rw-r--r--libs/surfaces/control_protocol/basic_ui.cc4
1 files changed, 2 insertions, 2 deletions
diff --git a/libs/surfaces/control_protocol/basic_ui.cc b/libs/surfaces/control_protocol/basic_ui.cc
index d7563458ce..df8a18b855 100644
--- a/libs/surfaces/control_protocol/basic_ui.cc
+++ b/libs/surfaces/control_protocol/basic_ui.cc
@@ -328,13 +328,13 @@ BasicUI::get_transport_speed ()
void
BasicUI::undo ()
{
- session->undo (1);
+ access_action ("Editor/undo");
}
void
BasicUI::redo ()
{
- session->redo (1);
+ access_action ("Editor/redo");
}
void