From 003ee19d9e6203b5c68467c0e6c86d873c125e45 Mon Sep 17 00:00:00 2001 From: ShiroKSH Date: Mon, 13 Jul 2026 21:28:48 +0300 Subject: [PATCH 1/5] Backends: SDL_Renderer3: fixed default sampler not being Linear. (#7616, #9470, #9378) --- backends/imgui_impl_sdlrenderer3.cpp | 5 +++++ docs/CHANGELOG.txt | 2 ++ 2 files changed, 7 insertions(+) diff --git a/backends/imgui_impl_sdlrenderer3.cpp b/backends/imgui_impl_sdlrenderer3.cpp index bf0250401..de9eae442 100644 --- a/backends/imgui_impl_sdlrenderer3.cpp +++ b/backends/imgui_impl_sdlrenderer3.cpp @@ -25,6 +25,7 @@ // CHANGELOG // (minor and older changes stripped away, please see git history for details) +// 2026-07-15: Fixed default sampler state to be linear (broken 2026-04-23). (#9470, #9378) // 2026-04-23: Added support for standard draw callbacks (in platform_io): DrawCallback_ResetRenderState, DrawCallback_SetSamplerLinear, DrawCallback_SetSamplerNearest. (#9378) // 2026-03-12: Fixed invalid assert in ImGui_ImplSDLRenderer3_UpdateTexture() if ImTextureID_Invalid is defined to be != 0, which became the default since 2026-03-12. (#9295) // 2025-09-18: Call platform_io.ClearRendererHandlers() on shutdown. @@ -77,10 +78,14 @@ static ImGui_ImplSDLRenderer3_Data* ImGui_ImplSDLRenderer3_GetBackendData() // Functions static void ImGui_ImplSDLRenderer3_SetupRenderState(SDL_Renderer* renderer) { + ImGui_ImplSDLRenderer3_Data* bd = ImGui_ImplSDLRenderer3_GetBackendData(); + // Clear out any viewports and cliprect set by the user // FIXME: Technically speaking there are lots of other things we could backup/setup/restore during our render process. SDL_SetRenderViewport(renderer, nullptr); SDL_SetRenderClipRect(renderer, nullptr); + + bd->CurrentScaleMode = SDL_SCALEMODE_LINEAR; } void ImGui_ImplSDLRenderer3_NewFrame() diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt index 8214f0548..9fa7972a9 100644 --- a/docs/CHANGELOG.txt +++ b/docs/CHANGELOG.txt @@ -158,6 +158,8 @@ Other Changes: Fixes an issue running on macOS with Wine. [#9427, #6577) [@perminovVS] - Expose selected render state in ImGui_ImplOpenGL3_RenderState, allowing to dynamically select between use of glBindSampler() and glTexParameter(). (#9378) + - SDLRenderer3: + - Fixed default sampler not being Linear. Regression in 1.92.8. (#7616, #9470, #9378) [@ShiroKSH] - Win32: - Uses `SetProcessDpiAwarenessContext()` instead of `SetThreadDpiAwarenessContext()` when available, fixing OpenGL DPI scaling issues as e.g. NVIDIA drivers tends From bad1ee71f89103e6e9f08b761d35548ef7034555 Mon Sep 17 00:00:00 2001 From: ocornut Date: Wed, 15 Jul 2026 13:42:21 +0200 Subject: [PATCH 2/5] Backends: SDL_Renderer3: fixed changing scale mode not actually working on all platforms. (#7616, #9470, #9378) --- backends/imgui_impl_sdlrenderer3.cpp | 4 ++++ docs/CHANGELOG.txt | 1 + 2 files changed, 5 insertions(+) diff --git a/backends/imgui_impl_sdlrenderer3.cpp b/backends/imgui_impl_sdlrenderer3.cpp index de9eae442..d4c043cbc 100644 --- a/backends/imgui_impl_sdlrenderer3.cpp +++ b/backends/imgui_impl_sdlrenderer3.cpp @@ -171,6 +171,7 @@ void ImGui_ImplSDLRenderer3_RenderDrawData(ImDrawData* draw_data, SDL_Renderer* // Will project scissor/clipping rectangles into framebuffer space ImVec2 clip_off = draw_data->DisplayPos; // (0,0) unless using multi-viewports ImVec2 clip_scale = render_scale; + SDL_ScaleMode last_scale_mode = bd->CurrentScaleMode; // Render command lists for (const ImDrawList* draw_list : draw_data->CmdLists) @@ -208,6 +209,9 @@ void ImGui_ImplSDLRenderer3_RenderDrawData(ImDrawData* draw_data, SDL_Renderer* const float* uv = (const float*)(const void*)((const char*)(vtx_buffer + pcmd->VtxOffset) + offsetof(ImDrawVert, uv)); const SDL_Color* color = (const SDL_Color*)(const void*)((const char*)(vtx_buffer + pcmd->VtxOffset) + offsetof(ImDrawVert, col)); // SDL 2.0.19+ + if (last_scale_mode != bd->CurrentScaleMode) + SDL_FlushRenderer(renderer); + // Bind texture, Draw SDL_Texture* tex = (SDL_Texture*)pcmd->GetTexID(); SDL_SetTextureScaleMode(tex, bd->CurrentScaleMode); diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt index 9fa7972a9..935ff19ea 100644 --- a/docs/CHANGELOG.txt +++ b/docs/CHANGELOG.txt @@ -159,6 +159,7 @@ Other Changes: - Expose selected render state in ImGui_ImplOpenGL3_RenderState, allowing to dynamically select between use of glBindSampler() and glTexParameter(). (#9378) - SDLRenderer3: + - Fixed sampler change which didn't work on all graphics backends. (#7616, #9470, #9378) - Fixed default sampler not being Linear. Regression in 1.92.8. (#7616, #9470, #9378) [@ShiroKSH] - Win32: - Uses `SetProcessDpiAwarenessContext()` instead of `SetThreadDpiAwarenessContext()` From addbfa50214f1e2302a1439b10c722cab35c2c0c Mon Sep 17 00:00:00 2001 From: ocornut Date: Wed, 15 Jul 2026 13:57:48 +0200 Subject: [PATCH 3/5] Settings: fixed ConfigIniSettingsAutoDiscardMonths not calling Cleanup (#9460, #9471) --- imgui.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/imgui.cpp b/imgui.cpp index 47c938977..d8e790ea1 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -15809,7 +15809,10 @@ void ImGui::LoadIniSettingsFromMemory(const char* ini_data, size_t ini_size) // Call post-read handlers ImGuiSettingsCleanupArgs cleanup_args; if (g.IO.ConfigIniSettingsAutoDiscardMonths > 0) + { cleanup_args.DiscardOlderThanMonths = g.IO.ConfigIniSettingsAutoDiscardMonths; + CleanupIniSettings(&cleanup_args); + } for (ImGuiSettingsHandler& handler : g.SettingsHandlers) if (handler.ApplyAllFn != NULL) handler.ApplyAllFn(&g, &handler); From 0720d59bb734901f3c6bf760341fedac83868fb1 Mon Sep 17 00:00:00 2001 From: ShiroKSH Date: Mon, 13 Jul 2026 21:34:14 +0300 Subject: [PATCH 4/5] Tables: validate ini settings column count. (#9472) + Amend with comment by ocornut. --- imgui_tables.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/imgui_tables.cpp b/imgui_tables.cpp index e1328fe59..efc03d7d9 100644 --- a/imgui_tables.cpp +++ b/imgui_tables.cpp @@ -4165,9 +4165,12 @@ static void TableSettingsHandler_ApplyAll(ImGuiContext* ctx, ImGuiSettingsHandle static void* TableSettingsHandler_ReadOpen(ImGuiContext*, ImGuiSettingsHandler*, const char* name) { + // FIXME: As topology changes are allowed, strictly speaking a >= IMGUI_TABLE_MAX_COLUMNS tables stored in .ini file + // that was emitted with a higher max count could still be meaningful in some unlikely cases. + // We might want to use another MAX defined as (1<<(sizeof(ImGuiTableColumnIdx)*8-1))-1. ImGuiID id = 0; int columns_count = 0; - if (sscanf(name, "0x%08X,%d", &id, &columns_count) < 2) + if (sscanf(name, "0x%08X,%d", &id, &columns_count) < 2 || columns_count <= 0 || columns_count >= IMGUI_TABLE_MAX_COLUMNS) return NULL; return ImGui::TableSettingsCreate(id, columns_count); } From 0302703a7dc290dbed3a312a1fb288e8e07d1232 Mon Sep 17 00:00:00 2001 From: Turtle Dove Date: Wed, 15 Jul 2026 07:36:59 -0500 Subject: [PATCH 5/5] CI: Android: Gradle 9.4.1 via setup-gradle action for AGP 9.2.0 (#8878) (#9467) --- .github/workflows/build.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 540578ef4..5bbaefd1a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -661,10 +661,10 @@ jobs: name: Build - Android steps: - #- name: Setup Gradle - # uses: gradle/actions/setup-gradle@v6 - # with: - # gradle-version: '8.14.5' + - name: Setup Gradle 9.4.1 + uses: gradle/actions/setup-gradle@v6 + with: + gradle-version: '9.4.1' - uses: actions/checkout@v6 - name: Build example_android_opengl3