diff --git a/source/glest_game/main/program.cpp b/source/glest_game/main/program.cpp index 888332bd..fb6613ca 100644 --- a/source/glest_game/main/program.cpp +++ b/source/glest_game/main/program.cpp @@ -372,6 +372,7 @@ void Program::setState(ProgramState *programState, bool cleanupOldState) bool msgBoxEnabled = msgBox.getEnabled(); + bool showingOSCursor = isCursorShowing(); if(dynamic_cast(programState) != NULL) { SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); @@ -426,14 +427,16 @@ void Program::setState(ProgramState *programState, bool cleanupOldState) updateCameraTimer.reset(); fpsTimer.reset(); - Config &config = Config::getInstance(); - if(config.getBool("No2DMouseRendering","false") == false) { - showCursor(false); - } - sleep(0); + if(showingOSCursor == false) { + Config &config = Config::getInstance(); + if(config.getBool("No2DMouseRendering","false") == false) { + showCursor(false); + } + sleep(0); - if(dynamic_cast(programState) != NULL && msgBoxEnabled == true) { - showCursor(true); + if(dynamic_cast(programState) != NULL && msgBoxEnabled == true) { + showCursor(true); + } } SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); diff --git a/source/shared_lib/include/platform/common/platform_common.h b/source/shared_lib/include/platform/common/platform_common.h index 3108cda8..430a8206 100644 --- a/source/shared_lib/include/platform/common/platform_common.h +++ b/source/shared_lib/include/platform/common/platform_common.h @@ -131,6 +131,7 @@ int getScreenH(); void sleep(int millis); +bool isCursorShowing(); void showCursor(bool b); bool isKeyDown(int virtualKey); string getCommandLine(); diff --git a/source/shared_lib/sources/platform/common/platform_common.cpp b/source/shared_lib/sources/platform/common/platform_common.cpp index 06085ce9..ee3f498a 100644 --- a/source/shared_lib/sources/platform/common/platform_common.cpp +++ b/source/shared_lib/sources/platform/common/platform_common.cpp @@ -848,23 +848,17 @@ void sleep(int millis) { SDL_Delay(millis); } -void showCursor(bool b) { - //int x,y; - //if(b) { - //SDL_GetMouseState( &x, &y ); - //} +bool isCursorShowing() { int state = SDL_ShowCursor(SDL_QUERY); - if( (state == SDL_DISABLE && b == false) || - (state == SDL_ENABLE && b == true)) { + return (state == SDL_ENABLE); +} + +void showCursor(bool b) { + if(isCursorShowing() == b) { return; } SDL_ShowCursor(b == true ? SDL_ENABLE : SDL_DISABLE); - //SDL_WM_GrabInput(SDL_GRAB_OFF); - //if(b == true) { - //SDL_WM_GrabInput(SDL_GRAB_OFF); - //SDL_WarpMouse(x,y); - //} } bool isKeyDown(int virtualKey) {