diff options
author | Robin Gareus <robin@gareus.org> | 2014-06-23 11:56:58 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2014-06-23 11:56:58 +0200 |
commit | fb51bdb892fcb7ffe74a01becda566fd6bc9a431 (patch) | |
tree | 6dbff86da0ad7bc4ba60034308d59dbb332a2a4b /libs/backends/dummy | |
parent | 371bf59a94b12fbb08f3cccc09b8761094543d45 (diff) |
statically allocate midi-options
fixes possible segfault when the data in the vector
goes out of scope due to RVO.
Diffstat (limited to 'libs/backends/dummy')
-rw-r--r-- | libs/backends/dummy/dummy_audiobackend.cc | 13 | ||||
-rw-r--r-- | libs/backends/dummy/dummy_audiobackend.h | 2 |
2 files changed, 10 insertions, 5 deletions
diff --git a/libs/backends/dummy/dummy_audiobackend.cc b/libs/backends/dummy/dummy_audiobackend.cc index cd09a64c65..dc53010443 100644 --- a/libs/backends/dummy/dummy_audiobackend.cc +++ b/libs/backends/dummy/dummy_audiobackend.cc @@ -32,6 +32,7 @@ using namespace ARDOUR; static std::string s_instance_name; size_t DummyAudioBackend::_max_buffer_size = 8192; +std::vector<std::string> DummyAudioBackend::_midi_options; DummyAudioBackend::DummyAudioBackend (AudioEngine& e, AudioBackendInfo& info) : AudioBackend (e, info) @@ -249,15 +250,17 @@ DummyAudioBackend::systemic_output_latency () const return _systemic_output_latency; } + /* MIDI */ std::vector<std::string> DummyAudioBackend::enumerate_midi_options () const { - std::vector<std::string> m; - m.push_back (_("1 in, 1 out")); - m.push_back (_("2 in, 2 out")); - m.push_back (_("8 in, 8 out")); - return m; + if (_midi_options.empty()) { + _midi_options.push_back (_("1 in, 1 out")); + _midi_options.push_back (_("2 in, 2 out")); + _midi_options.push_back (_("8 in, 8 out")); + } + return _midi_options; } int diff --git a/libs/backends/dummy/dummy_audiobackend.h b/libs/backends/dummy/dummy_audiobackend.h index d4732f5eeb..638bb9f312 100644 --- a/libs/backends/dummy/dummy_audiobackend.h +++ b/libs/backends/dummy/dummy_audiobackend.h @@ -292,6 +292,8 @@ class DummyAudioBackend : public AudioBackend { private: std::string _instance_name; + static std::vector<std::string> _midi_options; + bool _running; bool _freewheeling; |