diff options
Diffstat (limited to '')
-rw-r--r-- | src/OutputThread.cxx | 3 | ||||
-rw-r--r-- | src/thread/Util.hxx | 13 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/OutputThread.cxx b/src/OutputThread.cxx index 1b5a44e9d..b56e7f1ca 100644 --- a/src/OutputThread.cxx +++ b/src/OutputThread.cxx @@ -30,6 +30,7 @@ #include "PlayerControl.hxx" #include "MusicPipe.hxx" #include "MusicChunk.hxx" +#include "thread/Util.hxx" #include "system/FatalError.hxx" #include "util/Error.hxx" #include "Log.hxx" @@ -578,6 +579,8 @@ audio_output_task(void *arg) { struct audio_output *ao = (struct audio_output *)arg; + SetThreadRealtime(); + ao->mutex.lock(); while (1) { diff --git a/src/thread/Util.hxx b/src/thread/Util.hxx index fe36468c3..c09fef532 100644 --- a/src/thread/Util.hxx +++ b/src/thread/Util.hxx @@ -69,4 +69,17 @@ SetThreadIdlePriority() #endif }; +/** + * Raise the current thread's priority to "real-time" (very high). + */ +static inline void +SetThreadRealtime() +{ +#ifdef __linux__ + struct sched_param sched_param; + sched_param.sched_priority = 50; + sched_setscheduler(0, SCHED_FIFO, &sched_param); +#endif +}; + #endif |