summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2015-01-26 15:54:29 -0500
committerPaul Davis <paul@linuxaudiosystems.com>2015-06-29 14:18:13 -0400
commit5927fb49976aea12591fb9d72eee77d1deeb2e6d (patch)
treed8b5fa3b9a59d0735391f6f1da07c64d2a207029 /libs/ardour
parente71236794db6a1a73d8247b981897381d97d3308 (diff)
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
Diffstat (limited to 'libs/ardour')
-rw-r--r--libs/ardour/ardour/butler.h2
-rw-r--r--libs/ardour/butler.cc17
-rw-r--r--libs/ardour/session_state.cc1
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<void (std::string)> 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()
@@ -69,6 +64,14 @@ Butler::~Butler()
}
void
+Butler::map_parameters ()
+{
+ /* use any current ones that we care about */
+ boost::function<void (std::string)> ff (boost::bind (&Butler::config_changed, this, _1));
+ Config->map_parameters (ff);
+}
+
+void
Butler::config_changed (std::string p)
{
if (p == "playback-buffer-seconds") {
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 */