From e73c5ecc896c14fa43b19e42e5b24c79766cdb44 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 18 Feb 2013 21:47:43 +0300 Subject: Change process priority depend on game state. implimented only for windows version. --- src/game.cpp | 3 +++ src/main.cpp | 2 ++ src/utils/process.cpp | 15 +++++++++++++++ src/utils/process.h | 2 ++ 4 files changed, 22 insertions(+) diff --git a/src/game.cpp b/src/game.cpp index c024c41dc..d5cebe6a1 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -89,6 +89,7 @@ #include "utils/gettext.h" #include "utils/mkdir.h" #include "utils/physfstools.h" +#include "utils/process.h" #include #include @@ -863,6 +864,7 @@ void Game::handleActive(const SDL_Event &event) fpsLimit = config.getIntValue("fpslimit"); if (player_node) player_node->setHalfAway(false); + setPriority(true); } else { // window minimisation @@ -875,6 +877,7 @@ void Game::handleActive(const SDL_Event &event) fpsLimit = config.getIntValue("altfpslimit"); player_node->setHalfAway(true); } + setPriority(false); #endif } if (player_node) diff --git a/src/main.cpp b/src/main.cpp index 0266dde21..a7817d31a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -33,6 +33,7 @@ #include "utils/mkdir.h" #endif #include "utils/paths.h" +#include "utils/process.h" #include "utils/physfstools.h" #include "utils/xml.h" @@ -264,6 +265,7 @@ int main(int argc, char *argv[]) #ifdef WIN32 SetCurrentDirectory(PhysFs::getBaseDir()); #endif + setPriority(true); Client client(options); if (!options.testMode) { diff --git a/src/utils/process.cpp b/src/utils/process.cpp index b424b42e3..1efd850cc 100644 --- a/src/utils/process.cpp +++ b/src/utils/process.cpp @@ -257,3 +257,18 @@ bool openBrowser(std::string url) } #endif + +#ifdef WIN32 +void setPriority(const bool big) +{ + HANDLE hCurrentProcess = GetCurrentProcess(); + if (big) + SetPriorityClass(hCurrentProcess, ABOVE_NORMAL_PRIORITY_CLASS); + else + SetPriorityClass(hCurrentProcess, BELOW_NORMAL_PRIORITY_CLASS); +} +#else +void setPriority(const bool big A_UNUSED) +{ +} +#endif diff --git a/src/utils/process.h b/src/utils/process.h index 6b34fd22d..95c868372 100644 --- a/src/utils/process.h +++ b/src/utils/process.h @@ -31,4 +31,6 @@ bool execFile(std::string pathName, std::string name, bool openBrowser(std::string url); +void setPriority(const bool big); + #endif // UTILS_PROCESS_H -- cgit v1.2.3-70-g09d2