X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/daa3509726f9590cecc85f37ef882670667f0650..1fd850ab550a30bc600d5a10c5aed5386bf3624b:/src/msw/utilsexc.cpp?ds=sidebyside diff --git a/src/msw/utilsexc.cpp b/src/msw/utilsexc.cpp index cd3572e44d..9c959de05e 100644 --- a/src/msw/utilsexc.cpp +++ b/src/msw/utilsexc.cpp @@ -82,6 +82,15 @@ #include "wx/msw/private/hiddenwin.h" +// FIXME-VC6: These are not defined in VC6 SDK headers. +#ifndef BELOW_NORMAL_PRIORITY_CLASS + #define BELOW_NORMAL_PRIORITY_CLASS 0x4000 +#endif + +#ifndef ABOVE_NORMAL_PRIORITY_CLASS + #define ABOVE_NORMAL_PRIORITY_CLASS 0x8000 +#endif + // ---------------------------------------------------------------------------- // constants // ---------------------------------------------------------------------------- @@ -852,6 +861,29 @@ long wxExecute(const wxString& cmd, int flags, wxProcess *handler, } } + // Translate wxWidgets priority to Windows conventions. + if ( handler ) + { + 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 |= NORMAL_PRIORITY_CLASS; + } + } + bool ok = ::CreateProcess ( // WinCE requires appname to be non null