diff options
author | Robin Gareus <robin@gareus.org> | 2017-04-08 23:43:50 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2017-04-08 23:43:50 +0200 |
commit | f9db9bf5fd8d5936be01802aa7f2825b4e386777 (patch) | |
tree | e3a11c895cc43352a0ed5ca445aa97b5bc20faf9 /libs/backends | |
parent | d4f2121cfa33d434c941e652594649eb12c53aa6 (diff) |
Retain order of concurrent MIDI events
This fixes an issue with FaderPort8 (and maybe other surfaces or synths).
Diffstat (limited to 'libs/backends')
-rw-r--r-- | libs/backends/alsa/alsa_audiobackend.cc | 2 | ||||
-rw-r--r-- | libs/backends/coreaudio/coreaudio_backend.cc | 2 | ||||
-rw-r--r-- | libs/backends/dummy/dummy_audiobackend.cc | 2 | ||||
-rw-r--r-- | libs/backends/portaudio/portaudio_backend.cc | 2 |
4 files changed, 4 insertions, 4 deletions
diff --git a/libs/backends/alsa/alsa_audiobackend.cc b/libs/backends/alsa/alsa_audiobackend.cc index 5c267d6c7f..0d7e33cd63 100644 --- a/libs/backends/alsa/alsa_audiobackend.cc +++ b/libs/backends/alsa/alsa_audiobackend.cc @@ -2319,7 +2319,7 @@ void* AlsaMidiPort::get_buffer (pframes_t /* nframes */) (_buffer[_bufperiod]).push_back (boost::shared_ptr<AlsaMidiEvent>(new AlsaMidiEvent (**it))); } } - std::sort ((_buffer[_bufperiod]).begin (), (_buffer[_bufperiod]).end (), MidiEventSorter()); + std::stable_sort ((_buffer[_bufperiod]).begin (), (_buffer[_bufperiod]).end (), MidiEventSorter()); } return &(_buffer[_bufperiod]); } diff --git a/libs/backends/coreaudio/coreaudio_backend.cc b/libs/backends/coreaudio/coreaudio_backend.cc index 504a7376f9..0ef1e6332b 100644 --- a/libs/backends/coreaudio/coreaudio_backend.cc +++ b/libs/backends/coreaudio/coreaudio_backend.cc @@ -2142,7 +2142,7 @@ void* CoreMidiPort::get_buffer (pframes_t /* nframes */) (_buffer[_bufperiod]).push_back (boost::shared_ptr<CoreMidiEvent>(new CoreMidiEvent (**it))); } } - std::sort ((_buffer[_bufperiod]).begin (), (_buffer[_bufperiod]).end (), MidiEventSorter()); + std::stable_sort ((_buffer[_bufperiod]).begin (), (_buffer[_bufperiod]).end (), MidiEventSorter()); } return &(_buffer[_bufperiod]); diff --git a/libs/backends/dummy/dummy_audiobackend.cc b/libs/backends/dummy/dummy_audiobackend.cc index 28d73d462e..73ddc8225b 100644 --- a/libs/backends/dummy/dummy_audiobackend.cc +++ b/libs/backends/dummy/dummy_audiobackend.cc @@ -2134,7 +2134,7 @@ void* DummyMidiPort::get_buffer (pframes_t n_samples) _buffer.push_back (boost::shared_ptr<DummyMidiEvent>(new DummyMidiEvent (**it))); } } - std::sort (_buffer.begin (), _buffer.end (), MidiEventSorter()); + std::stable_sort (_buffer.begin (), _buffer.end (), MidiEventSorter()); } else if (is_output () && is_physical () && is_terminal()) { if (!_gen_cycle) { midi_generate(n_samples); diff --git a/libs/backends/portaudio/portaudio_backend.cc b/libs/backends/portaudio/portaudio_backend.cc index b25a54f7a9..c2402a994d 100644 --- a/libs/backends/portaudio/portaudio_backend.cc +++ b/libs/backends/portaudio/portaudio_backend.cc @@ -2374,7 +2374,7 @@ void* PortMidiPort::get_buffer (pframes_t /* nframes */) (_buffer[_bufperiod]).push_back (boost::shared_ptr<PortMidiEvent>(new PortMidiEvent (**it))); } } - std::sort ((_buffer[_bufperiod]).begin (), (_buffer[_bufperiod]).end (), MidiEventSorter()); + std::stable_sort ((_buffer[_bufperiod]).begin (), (_buffer[_bufperiod]).end (), MidiEventSorter()); } return &(_buffer[_bufperiod]); } |