mirror of
https://github.com/RPCS3/rpcs3.git
synced 2024-11-22 02:32:36 +01:00
Implement set_native_priority (posix)
This commit is contained in:
parent
af107df0b4
commit
59cd0a9c7f
@ -1884,20 +1884,30 @@ void thread_ctrl::set_native_priority(int priority)
|
|||||||
HANDLE _this_thread = GetCurrentThread();
|
HANDLE _this_thread = GetCurrentThread();
|
||||||
INT native_priority = THREAD_PRIORITY_NORMAL;
|
INT native_priority = THREAD_PRIORITY_NORMAL;
|
||||||
|
|
||||||
switch (priority)
|
if (priority > 0)
|
||||||
{
|
|
||||||
default:
|
|
||||||
case 0:
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
native_priority = THREAD_PRIORITY_ABOVE_NORMAL;
|
native_priority = THREAD_PRIORITY_ABOVE_NORMAL;
|
||||||
break;
|
if (priority < 0)
|
||||||
case -1:
|
|
||||||
native_priority = THREAD_PRIORITY_BELOW_NORMAL;
|
native_priority = THREAD_PRIORITY_BELOW_NORMAL;
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
SetThreadPriority(_this_thread, native_priority);
|
if (!SetThreadPriority(_this_thread, native_priority))
|
||||||
|
{
|
||||||
|
LOG_ERROR(GENERAL, "SetThreadPriority() failed: 0x%x", GetLastError());
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
int policy;
|
||||||
|
struct sched_param param;
|
||||||
|
|
||||||
|
pthread_getschedparam(pthread_self(), &policy, ¶m);
|
||||||
|
|
||||||
|
if (priority > 0)
|
||||||
|
param.sched_priority = sched_get_priority_max(policy);
|
||||||
|
if (priority < 0)
|
||||||
|
param.sched_priority = sched_get_priority_min(policy);
|
||||||
|
|
||||||
|
if (int err = pthread_setschedparam(pthread_self(), policy, ¶m))
|
||||||
|
{
|
||||||
|
LOG_ERROR(GENERAL, "pthraed_setschedparam() failed: %d", err);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,6 +57,8 @@ void audio_config::on_init(const std::shared_ptr<void>& _this)
|
|||||||
|
|
||||||
void audio_config::on_task()
|
void audio_config::on_task()
|
||||||
{
|
{
|
||||||
|
thread_ctrl::set_native_priority(1);
|
||||||
|
|
||||||
AudioDumper m_dump(g_cfg.audio.dump_to_file ? 2 : 0); // Init AudioDumper for 2 channels if enabled
|
AudioDumper m_dump(g_cfg.audio.dump_to_file ? 2 : 0); // Init AudioDumper for 2 channels if enabled
|
||||||
|
|
||||||
float buf2ch[2 * BUFFER_SIZE]{}; // intermediate buffer for 2 channels
|
float buf2ch[2 * BUFFER_SIZE]{}; // intermediate buffer for 2 channels
|
||||||
@ -337,8 +339,8 @@ void audio_config::on_task()
|
|||||||
case 8: m_dump.WriteData(&buf8ch, sizeof(buf8ch)); break; // write file data (8 ch)
|
case 8: m_dump.WriteData(&buf8ch, sizeof(buf8ch)); break; // write file data (8 ch)
|
||||||
}
|
}
|
||||||
|
|
||||||
cellAudio.trace("Audio perf: start=%d (access=%d, AddData=%d, events=%d, dump=%d)",
|
cellAudio.trace("Audio perf: (access=%d, AddData=%d, events=%d, dump=%d)",
|
||||||
time_pos, stamp1 - stamp0, stamp2 - stamp1, stamp3 - stamp2, get_system_time() - stamp3);
|
stamp1 - stamp0, stamp2 - stamp1, stamp3 - stamp2, get_system_time() - stamp3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user