summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Lantinga <slouken@libsdl.org>2018-08-26 20:37:23 -0700
committerSam Lantinga <slouken@libsdl.org>2018-08-26 20:37:23 -0700
commit641b10f15d30a1559315931ba1f0499cfaaf62f1 (patch)
tree57aab30e614864811f39212cb0a55c55f6403dc4
parentb17a95f9b8ccaac83650e20d23cc3667b7922b9e (diff)
downloadsdl-641b10f15d30a1559315931ba1f0499cfaaf62f1.tar.gz
Update the cursor clipping each frame, in case it was stolen by another application.
-rw-r--r--src/video/windows/SDL_windowsevents.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/src/video/windows/SDL_windowsevents.c b/src/video/windows/SDL_windowsevents.c
index 8dcd151ef..5773f3995 100644
--- a/src/video/windows/SDL_windowsevents.c
+++ b/src/video/windows/SDL_windowsevents.c
@@ -399,11 +399,6 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
}
#endif /* WMMSG_DEBUG */
- /* Update the clipping rect in case someone else has stolen it */
- /* FIXME: Is this function cheap enough to call this frequently?
- WIN_UpdateClipCursor(data->window);
- */
-
if (IME_HandleMessage(hwnd, msg, wParam, &lParam, data->videodata))
return 0;
@@ -478,7 +473,6 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
}
if (GetClipCursor(&rect) && SDL_memcmp(&rect, &data->cursor_clipped_rect, sizeof(rect) == 0)) {
-SDL_Log("Windows deactivate, ClipCursor(NULL)\n");
ClipCursor(NULL);
SDL_zero(data->cursor_clipped_rect);
}
@@ -1036,6 +1030,20 @@ SDL_Log("Windows deactivate, ClipCursor(NULL)\n");
}
}
+static void WIN_UpdateClipCursorForWindows()
+{
+ SDL_VideoDevice *_this = SDL_GetVideoDevice();
+ SDL_Window *window;
+
+ if (_this) {
+ for (window = _this->windows; window; window = window->next) {
+ if (window->driverdata) {
+ WIN_UpdateClipCursor(window);
+ }
+ }
+ }
+}
+
/* A message hook called before TranslateMessage() */
static SDL_WindowsMessageHook g_WindowsMessageHook = NULL;
static void *g_WindowsMessageHookData = NULL;
@@ -1081,6 +1089,9 @@ WIN_PumpEvents(_THIS)
if ((keystate[SDL_SCANCODE_RSHIFT] == SDL_PRESSED) && !(GetKeyState(VK_RSHIFT) & 0x8000)) {
SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_RSHIFT);
}
+
+ /* Update the clipping rect in case someone else has stolen it */
+ WIN_UpdateClipCursorForWindows();
}
/* to work around #3931, a bug introduced in Win10 Fall Creators Update (build nr. 16299)