diff --git a/Source/Engine/Platform/Windows/WindowsWindow.cpp b/Source/Engine/Platform/Windows/WindowsWindow.cpp index 1f53abe75..78cea0a3c 100644 --- a/Source/Engine/Platform/Windows/WindowsWindow.cpp +++ b/Source/Engine/Platform/Windows/WindowsWindow.cpp @@ -778,7 +778,16 @@ void WindowsWindow::UpdateCursor() if (!_lastCursorHidden) { _lastCursorHidden = true; - while(::ShowCursor(FALSE) >= 0); + while(::ShowCursor(FALSE) >= 0) + { + if (_cursorHiddenSafetyCount >= 100) + { + LOG(Warning, "Cursor has failed to hide."); + break; + } + _cursorHiddenSafetyCount += 1; + } + _cursorHiddenSafetyCount = 0; } ::SetCursor(nullptr); return; @@ -786,7 +795,16 @@ void WindowsWindow::UpdateCursor() else if (_lastCursorHidden) { _lastCursorHidden = false; - while(::ShowCursor(TRUE) < 0); + while(::ShowCursor(TRUE) < 0) + { + if (_cursorHiddenSafetyCount >= 100) + { + LOG(Warning, "Cursor has failed to show."); + break; + } + _cursorHiddenSafetyCount += 1; + } + _cursorHiddenSafetyCount = 0; } int32 index = 0; diff --git a/Source/Engine/Platform/Windows/WindowsWindow.h b/Source/Engine/Platform/Windows/WindowsWindow.h index c2dad4a13..6c720ba07 100644 --- a/Source/Engine/Platform/Windows/WindowsWindow.h +++ b/Source/Engine/Platform/Windows/WindowsWindow.h @@ -29,6 +29,7 @@ private: bool _trackingMouse = false; bool _clipCursorSet = false; bool _lastCursorHidden = false; + int _cursorHiddenSafetyCount = 0; bool _isDuringMaximize = false; Windows::HANDLE _monitor = nullptr; Windows::LONG _clipCursorRect[4];