summaryrefslogtreecommitdiff
path: root/libs/backends/portaudio/winmmemidi_output_device.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/backends/portaudio/winmmemidi_output_device.cc')
-rw-r--r--libs/backends/portaudio/winmmemidi_output_device.cc12
1 files changed, 12 insertions, 0 deletions
diff --git a/libs/backends/portaudio/winmmemidi_output_device.cc b/libs/backends/portaudio/winmmemidi_output_device.cc
index bb52b2da4f..7dec08e594 100644
--- a/libs/backends/portaudio/winmmemidi_output_device.cc
+++ b/libs/backends/portaudio/winmmemidi_output_device.cc
@@ -27,6 +27,7 @@
#include "win_utils.h"
#include "midi_util.h"
+#include "mmcss.h"
#include "debug.h"
// remove dup with input_device
@@ -349,6 +350,13 @@ WinMMEMidiOutputDevice::midi_output_thread ()
DEBUG_MIDI ("WinMMEMidiOut: MIDI output thread started\n");
+#ifdef USE_MMCSS_THREAD_PRIORITIES
+ HANDLE task_handle;
+
+ mmcss::set_thread_characteristics ("Pro Audio", &task_handle);
+ mmcss::set_thread_priority (task_handle, mmcss::AVRT_PRIORITY_HIGH);
+#endif
+
while (!m_thread_quit) {
if (!wait (m_queue_semaphore)) {
break;
@@ -471,6 +479,10 @@ WinMMEMidiOutputDevice::midi_output_thread ()
#endif
}
+#ifdef USE_MMCSS_THREAD_PRIORITIES
+ mmcss::revert_thread_characteristics (task_handle);
+#endif
+
m_thread_running = false;
}