From acb43bab29a1e2349999dd0afe73d13ebd09897b Mon Sep 17 00:00:00 2001 From: Mark Harfouche Date: Mon, 10 Nov 2025 08:08:38 -0500 Subject: [PATCH 1/2] Fix compatibility with rendercanvas 2.4.0 I think there might be more places but now my application runs again --- pyproject.toml | 2 +- wgpu/utils/imgui/imgui_renderer.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index a147f5d0..1380a3f4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,7 +29,7 @@ tests = [ "imageio", "anyio", "trio", - "rendercanvas", + "rendercanvas>=2.4.0", ] examples = ["pypng", "rendercanvas", "glfw"] docs = ["sphinx>7.2", "sphinx_rtd_theme"] diff --git a/wgpu/utils/imgui/imgui_renderer.py b/wgpu/utils/imgui/imgui_renderer.py index 3f7bba9b..7ce9375b 100644 --- a/wgpu/utils/imgui/imgui_renderer.py +++ b/wgpu/utils/imgui/imgui_renderer.py @@ -144,8 +144,8 @@ def render(self): imgui.set_current_context(self.imgui_context) - pixel_ratio = self._canvas_context.canvas.get_pixel_ratio() - lsize = self._canvas_context.canvas.get_logical_size() + pixel_ratio = self._canvas_context.pixel_ratio + lsize = self._canvas_context.logical_size self._backend.io.display_framebuffer_scale = (pixel_ratio, pixel_ratio) self._backend.io.display_size = lsize From 9891a571573c4349e5906471f5a218f63e2a0f08 Mon Sep 17 00:00:00 2001 From: Almar Klein Date: Mon, 10 Nov 2025 14:26:27 +0100 Subject: [PATCH 2/2] use context where it makes sense --- examples/imgui_backend_sea.py | 7 ++----- wgpu/utils/imgui/imgui_renderer.py | 4 ++-- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/examples/imgui_backend_sea.py b/examples/imgui_backend_sea.py index d387459d..e41706de 100644 --- a/examples/imgui_backend_sea.py +++ b/examples/imgui_backend_sea.py @@ -341,11 +341,8 @@ def gui(app_state): # init imgui backend imgui.create_context() imgui_backend = ImguiWgpuBackend(device, render_texture_format) -imgui_backend.io.display_size = canvas.get_logical_size() -imgui_backend.io.display_framebuffer_scale = ( - canvas.get_pixel_ratio(), - canvas.get_pixel_ratio(), -) +imgui_backend.io.display_size = present_context.logical_size +imgui_backend.io.display_framebuffer_scale = (present_context.pixel_ratio,) * 2 # register event handlers diff --git a/wgpu/utils/imgui/imgui_renderer.py b/wgpu/utils/imgui/imgui_renderer.py index 8a95dd2e..ebbe49ac 100644 --- a/wgpu/utils/imgui/imgui_renderer.py +++ b/wgpu/utils/imgui/imgui_renderer.py @@ -91,8 +91,8 @@ def __init__(self, device, canvas, render_target_format=None): self._backend = ImguiWgpuBackend(device, render_target_format) - self._backend.io.display_size = canvas.get_logical_size() - scale = canvas.get_pixel_ratio() + self._backend.io.display_size = self._canvas_context.logical_size + scale = self._canvas_context.pixel_ratio self._backend.io.display_framebuffer_scale = (scale, scale) canvas.add_event_handler(self._on_resize, "resize")