From 5927fb49976aea12591fb9d72eee77d1deeb2e6d Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 26 Jan 2015 15:54:29 -0500 Subject: [PATCH] fix timing of Butler mapping config parameters to avoid crash. Amazing that this didn't show up on Linux at all, or on the first run after build. Computers ... sigh. Conflicts: libs/ardour/butler.cc --- libs/ardour/ardour/butler.h | 2 ++ libs/ardour/butler.cc | 17 ++++++++++------- libs/ardour/session_state.cc | 1 + 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/libs/ardour/ardour/butler.h b/libs/ardour/ardour/butler.h index 94b6fb876b..7f0847498e 100644 --- a/libs/ardour/ardour/butler.h +++ b/libs/ardour/ardour/butler.h @@ -61,6 +61,8 @@ class LIBARDOUR_API Butler : public SessionHandleRef bool transport_work_requested() const; void drop_references (); + void map_parameters (); + framecnt_t audio_diskstream_capture_buffer_size() const { return audio_dstream_capture_buffer_size; } framecnt_t audio_diskstream_playback_buffer_size() const { return audio_dstream_playback_buffer_size; } uint32_t midi_diskstream_buffer_size() const { return midi_dstream_buffer_size; } diff --git a/libs/ardour/butler.cc b/libs/ardour/butler.cc index 2485bc399f..67d7dd1617 100644 --- a/libs/ardour/butler.cc +++ b/libs/ardour/butler.cc @@ -54,13 +54,8 @@ Butler::Butler(Session& s) g_atomic_int_set(&should_do_transport_work, 0); SessionEvent::pool->set_trash (&pool_trash); - /* catch future changes to parameters */ - Config->ParameterChanged.connect_same_thread (*this, boost::bind (&Butler::config_changed, this, _1)); - - /* use any current ones that we care about */ - boost::function ff (boost::bind (&Butler::config_changed, this, _1)); - Config->map_parameters (ff); - + /* catch future changes to parameters */ + Config->ParameterChanged.connect_same_thread (*this, boost::bind (&Butler::config_changed, this, _1)); } Butler::~Butler() @@ -68,6 +63,14 @@ Butler::~Butler() terminate_thread (); } +void +Butler::map_parameters () +{ + /* use any current ones that we care about */ + boost::function ff (boost::bind (&Butler::config_changed, this, _1)); + Config->map_parameters (ff); +} + void Butler::config_changed (std::string p) { diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index ce0d006a9e..ba904d24c9 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -271,6 +271,7 @@ Session::post_engine_init () Config->map_parameters (ff); config.map_parameters (ft); + _butler->map_parameters (); /* Reset all panners */