mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-22 20:07:01 +00:00
Backends: SDL: Avoid calling SDL_SetCursor() when cursor has not changed. (#6113)
This commit is contained in:
parent
46efed8b70
commit
6584de4a78
@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
// CHANGELOG
|
// CHANGELOG
|
||||||
// (minor and older changes stripped away, please see git history for details)
|
// (minor and older changes stripped away, please see git history for details)
|
||||||
|
// 2023-02-02: Avoid calling SDL_SetCursor() when cursor has not changed, as the function is surprisingly costly on Mac with latest SDL (may be fixed in next SDL version).
|
||||||
// 2023-02-02: Added support for SDL 2.0.18+ preciseX/preciseY mouse wheel data for smooth scrolling + Scaling X value on Emscripten (bug?). (#4019, #6096)
|
// 2023-02-02: Added support for SDL 2.0.18+ preciseX/preciseY mouse wheel data for smooth scrolling + Scaling X value on Emscripten (bug?). (#4019, #6096)
|
||||||
// 2023-02-02: Removed SDL_MOUSEWHEEL value clamping, as values seem correct in latest Emscripten. (#4019)
|
// 2023-02-02: Removed SDL_MOUSEWHEEL value clamping, as values seem correct in latest Emscripten. (#4019)
|
||||||
// 2023-02-01: Flipping SDL_MOUSEWHEEL 'wheel.x' value to match other backends and offer consistent horizontal scrolling direction. (#4019, #6096, #1463)
|
// 2023-02-01: Flipping SDL_MOUSEWHEEL 'wheel.x' value to match other backends and offer consistent horizontal scrolling direction. (#4019, #6096, #1463)
|
||||||
@ -91,6 +92,7 @@ struct ImGui_ImplSDL2_Data
|
|||||||
Uint64 Time;
|
Uint64 Time;
|
||||||
int MouseButtonsDown;
|
int MouseButtonsDown;
|
||||||
SDL_Cursor* MouseCursors[ImGuiMouseCursor_COUNT];
|
SDL_Cursor* MouseCursors[ImGuiMouseCursor_COUNT];
|
||||||
|
SDL_Cursor* LastMouseCursor;
|
||||||
int PendingMouseLeaveFrame;
|
int PendingMouseLeaveFrame;
|
||||||
char* ClipboardTextData;
|
char* ClipboardTextData;
|
||||||
bool MouseCanUseGlobalState;
|
bool MouseCanUseGlobalState;
|
||||||
@ -439,6 +441,7 @@ void ImGui_ImplSDL2_Shutdown()
|
|||||||
SDL_free(bd->ClipboardTextData);
|
SDL_free(bd->ClipboardTextData);
|
||||||
for (ImGuiMouseCursor cursor_n = 0; cursor_n < ImGuiMouseCursor_COUNT; cursor_n++)
|
for (ImGuiMouseCursor cursor_n = 0; cursor_n < ImGuiMouseCursor_COUNT; cursor_n++)
|
||||||
SDL_FreeCursor(bd->MouseCursors[cursor_n]);
|
SDL_FreeCursor(bd->MouseCursors[cursor_n]);
|
||||||
|
bd->LastMouseCursor = NULL;
|
||||||
|
|
||||||
io.BackendPlatformName = nullptr;
|
io.BackendPlatformName = nullptr;
|
||||||
io.BackendPlatformUserData = nullptr;
|
io.BackendPlatformUserData = nullptr;
|
||||||
@ -492,7 +495,12 @@ static void ImGui_ImplSDL2_UpdateMouseCursor()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Show OS mouse cursor
|
// Show OS mouse cursor
|
||||||
SDL_SetCursor(bd->MouseCursors[imgui_cursor] ? bd->MouseCursors[imgui_cursor] : bd->MouseCursors[ImGuiMouseCursor_Arrow]);
|
SDL_Cursor* expected_cursor = bd->MouseCursors[imgui_cursor] ? bd->MouseCursors[imgui_cursor] : bd->MouseCursors[ImGuiMouseCursor_Arrow];
|
||||||
|
if (bd->LastMouseCursor != expected_cursor)
|
||||||
|
{
|
||||||
|
SDL_SetCursor(expected_cursor); // SDL function doesn't have an early out (see #6113)
|
||||||
|
bd->LastMouseCursor = expected_cursor;
|
||||||
|
}
|
||||||
SDL_ShowCursor(SDL_TRUE);
|
SDL_ShowCursor(SDL_TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -92,7 +92,9 @@ All changes:
|
|||||||
- Backends: SDL: Removed SDL_MOUSEWHEEL value clamping. (#4019, #6096, #6081)
|
- Backends: SDL: Removed SDL_MOUSEWHEEL value clamping. (#4019, #6096, #6081)
|
||||||
- Backends: SDL: Added support for SDL 2.0.18+ preciseX/preciseY mouse wheel data
|
- Backends: SDL: Added support for SDL 2.0.18+ preciseX/preciseY mouse wheel data
|
||||||
for smooth scrolling as reported by SDL. (#4019, #6096)
|
for smooth scrolling as reported by SDL. (#4019, #6096)
|
||||||
- Backend: WebGPU: Fix building for latest WebGPU specs (remove implicit layout generation).
|
- Backends: SDL: Avoid calling SDL_SetCursor() when cursor has not changed, as the function
|
||||||
|
is surprisingly costly on Mac with latest SDL (may be fixed in next SDL version). (#6113)
|
||||||
|
- Backends: WebGPU: Fix building for latest WebGPU specs (remove implicit layout generation).
|
||||||
(#6117, #4116, #3632) [@tonygrue, @bfierz]
|
(#6117, #4116, #3632) [@tonygrue, @bfierz]
|
||||||
- Examples: refactord all examples to use a "MainLoopStep()" function. This is in order
|
- Examples: refactord all examples to use a "MainLoopStep()" function. This is in order
|
||||||
to be able to trivially make some compile with Emscripten. (#2492, #3699)
|
to be able to trivially make some compile with Emscripten. (#2492, #3699)
|
||||||
|
Loading…
Reference in New Issue
Block a user