@ -847,6 +847,11 @@ void Application::applyMemoryPriority() const
if ( ! setProcessInformation ) // only available on Windows >= 8
if ( ! setProcessInformation ) // only available on Windows >= 8
return ;
return ;
using SETTHREADINFORMATION = BOOL ( WINAPI * ) ( HANDLE , THREAD_INFORMATION_CLASS , LPVOID , DWORD ) ;
const auto setThreadInformation = Utils : : Misc : : loadWinAPI < SETTHREADINFORMATION > ( u " Kernel32.dll " _qs , " SetThreadInformation " ) ;
if ( ! setThreadInformation ) // only available on Windows >= 8
return ;
# if (_WIN32_WINNT < _WIN32_WINNT_WIN8)
# if (_WIN32_WINNT < _WIN32_WINNT_WIN8)
// this dummy struct is required to compile successfully when targeting older Windows version
// this dummy struct is required to compile successfully when targeting older Windows version
struct MEMORY_PRIORITY_INFORMATION
struct MEMORY_PRIORITY_INFORMATION
@ -883,6 +888,11 @@ void Application::applyMemoryPriority() const
break ;
break ;
}
}
setProcessInformation ( : : GetCurrentProcess ( ) , ProcessMemoryPriority , & prioInfo , sizeof ( prioInfo ) ) ;
setProcessInformation ( : : GetCurrentProcess ( ) , ProcessMemoryPriority , & prioInfo , sizeof ( prioInfo ) ) ;
// To avoid thrashing/sluggishness of the app, set "main event loop" thread to normal memory priority
// which is higher/equal than other threads
prioInfo . MemoryPriority = MEMORY_PRIORITY_NORMAL ;
setThreadInformation ( : : GetCurrentThread ( ) , ThreadMemoryPriority , & prioInfo , sizeof ( prioInfo ) ) ;
}
}
void Application : : adjustThreadPriority ( ) const
void Application : : adjustThreadPriority ( ) const