Add wxProcess::SetPriority() to allow setting the priority of child processes.

This uses the same conventions as wxThread::SetPriority() but works on the
entire process.

Closes #14931.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73406 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2013-01-20 02:10:12 +00:00
parent 90e95e6117
commit eaf4bde6e6
10 changed files with 106 additions and 1 deletions

View File

@@ -852,6 +852,26 @@ long wxExecute(const wxString& cmd, int flags, wxProcess *handler,
}
}
// Translate wxWidgets priority to Windows conventions.
unsigned prio = handler->GetPriority();
if ( prio <= 20 )
dwFlags |= IDLE_PRIORITY_CLASS;
else if ( prio <= 40 )
dwFlags |= BELOW_NORMAL_PRIORITY_CLASS;
else if ( prio <= 60 )
dwFlags |= NORMAL_PRIORITY_CLASS;
else if ( prio <= 80 )
dwFlags |= ABOVE_NORMAL_PRIORITY_CLASS;
else if ( prio <= 99 )
dwFlags |= HIGH_PRIORITY_CLASS;
else if ( prio <= 100 )
dwFlags |= REALTIME_PRIORITY_CLASS;
else
{
wxFAIL_MSG(wxT("invalid value of thread priority parameter"));
dwFlags |= THREAD_PRIORITY_NORMAL;
}
bool ok = ::CreateProcess
(
// WinCE requires appname to be non null