diff options
author | Robin Gareus <robin@gareus.org> | 2020-03-14 12:50:14 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2020-03-14 13:25:54 +0100 |
commit | d9836ec0026838d8a43ca47e39915f21aab2cb29 (patch) | |
tree | 0520ce0faf2640b208567488f4b599edcc8676aa /gtk2_ardour/editor_ops.cc | |
parent | db59711bc97edc1204f99ae2fc6dc1a3d991e90f (diff) |
Update GUI: freeze operation error/warnings
Diffstat (limited to 'gtk2_ardour/editor_ops.cc')
-rw-r--r-- | gtk2_ardour/editor_ops.cc | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 8ee35ca4db..c68034afdd 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -55,6 +55,7 @@ #include "widgets/popup.h" #include "widgets/prompter.h" +#include "ardour/audioengine.h" #include "ardour/audio_track.h" #include "ardour/audioregion.h" #include "ardour/boost_debug.h" @@ -3984,12 +3985,24 @@ Editor::freeze_route () } /* stop transport before we start. this is important */ - _session->request_transport_speed (0.0); /* wait for just a little while, because the above call is asynchronous */ + int timeout = 10; + do { + Glib::usleep (_session->engine().usecs_per_cycle ()); + } while (!_session->transport_stopped() && --timeout > 0); - Glib::usleep (250000); + if (timeout == 0) { + ArdourMessageDialog d ( + _("Transport cannot be stopped, likely due to external timecode sync.\n" + "Freezing a track requires the transport to be stopped.") + ); + d.set_title (_("Cannot freeze")); + d.run (); + return; + return; + } if (clicked_routeview == 0 || !clicked_routeview->is_audio_track()) { return; @@ -4006,8 +4019,8 @@ Editor::freeze_route () } if (clicked_routeview->track()->has_external_redirects()) { - ArdourMessageDialog d (string_compose (_("<b>%1</b>\n\nThis track has at least one send/insert/return as part of its signal flow.\n\n" - "Freezing will only process the signal as far as the first send/insert/return."), + ArdourMessageDialog d (string_compose (_("<b>%1</b>\n\nThis track has at least one send/insert/return/sidechain as part of its signal flow.\n\n" + "Freezing will only process the signal as far as the first send/insert/return/sidechain."), clicked_routeview->track()->name()), true, MESSAGE_INFO, BUTTONS_NONE, true); d.add_button (_("Freeze anyway"), Gtk::RESPONSE_OK); |