Răsfoiți Sursa

Split the redraw effect to own function

expikr 1 an în urmă
părinte
comite
4779499048
2 a modificat fișierele cu 24 adăugiri și 13 ștergeri
  1. 21 13
      src/events/SDL_mouse.c
  2. 3 0
      src/events/SDL_mouse_c.h

+ 21 - 13
src/events/SDL_mouse.c

@@ -1599,6 +1599,26 @@ SDL_Cursor *SDL_CreateSystemCursor(SDL_SystemCursor id)
     return cursor;
     return cursor;
 }
 }
 
 
+void SDL_RedrawCursor(void)
+{
+    SDL_Mouse *mouse = SDL_GetMouse();
+    SDL_Cursor *cursor;
+
+    if (mouse->focus) {
+        cursor = mouse->cur_cursor;
+    } else {
+        cursor = mouse->def_cursor;
+    }
+
+    if (mouse->focus && (!mouse->cursor_visible || (mouse->relative_mode && mouse->relative_mode_hide_cursor))) {
+        cursor = NULL;
+    }
+
+    if (mouse->ShowCursor) {
+        mouse->ShowCursor(cursor);
+    }
+}
+
 /* SDL_SetCursor(NULL) can be used to force the cursor redraw,
 /* SDL_SetCursor(NULL) can be used to force the cursor redraw,
    if this is desired for any reason.  This is used when setting
    if this is desired for any reason.  This is used when setting
    the video mode and when the SDL window gains the mouse focus.
    the video mode and when the SDL window gains the mouse focus.
@@ -1629,19 +1649,7 @@ bool SDL_SetCursor(SDL_Cursor *cursor)
         mouse->cur_cursor = cursor;
         mouse->cur_cursor = cursor;
     }
     }
 
 
-    if (mouse->focus) {
-        cursor = mouse->cur_cursor;
-    } else {
-        cursor = mouse->def_cursor;
-    }
-
-    if (mouse->focus && (!mouse->cursor_visible || (mouse->relative_mode && mouse->relative_mode_hide_cursor))) {
-        cursor = NULL;
-    }
-
-    if (mouse->ShowCursor) {
-        mouse->ShowCursor(cursor);
-    }
+    SDL_RedrawCursor();
 
 
     return true;
     return true;
 }
 }

+ 3 - 0
src/events/SDL_mouse_c.h

@@ -175,6 +175,9 @@ extern void SDL_SetMouseName(SDL_MouseID mouseID, const char *name);
 // Get the mouse state structure
 // Get the mouse state structure
 extern SDL_Mouse *SDL_GetMouse(void);
 extern SDL_Mouse *SDL_GetMouse(void);
 
 
+// Set the default mouse cursor
+extern void SDL_RedrawCursor(void);
+
 // Set the default mouse cursor
 // Set the default mouse cursor
 extern void SDL_SetDefaultCursor(SDL_Cursor *cursor);
 extern void SDL_SetDefaultCursor(SDL_Cursor *cursor);