From db00fba836f48bfb701c123ee14de0668535f6bb Mon Sep 17 00:00:00 2001 From: Ed_ Date: Fri, 13 Mar 2026 21:07:09 -0400 Subject: [PATCH] fix(gui): Guard against invalid display_size in blur pipeline init - Remove _init_blur_pipeline call from _post_init (display_size not valid yet) - Add dimension validation in _init_blur_pipeline (ws.x > 0 and ws.y > 0) - Add fb_scale validation (default to 1.0 if <= 0) - Lazy init only happens when frosted glass is enabled and dimensions are valid - Fixes GLError 1281 'invalid value' crash on startup --- src/gui_2.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/gui_2.py b/src/gui_2.py index bea9b1c..cc48fab 100644 --- a/src/gui_2.py +++ b/src/gui_2.py @@ -4039,24 +4039,33 @@ def hello(): def _post_init(self) -> None: theme.apply_current() - self._init_blur_pipeline() def _init_blur_pipeline(self): if self._blur_pipeline is None: self._blur_pipeline = BlurPipeline() ws = imgui.get_io().display_size fb_scale = imgui.get_io().display_framebuffer_scale.x + if ws.x <= 0 or ws.y <= 0: + return False + if fb_scale <= 0: + fb_scale = 1.0 self._blur_pipeline.setup_fbos(int(ws.x), int(ws.y), fb_scale) self._blur_pipeline.compile_deepsea_shader() self._blur_pipeline.compile_blur_shaders() + return True def _pre_new_frame(self) -> None: if not self.ui_frosted_glass_enabled: return - if self._blur_pipeline is None: - self._init_blur_pipeline() ws = imgui.get_io().display_size fb_scale = imgui.get_io().display_framebuffer_scale.x + if ws.x <= 0 or ws.y <= 0: + return + if fb_scale <= 0: + fb_scale = 1.0 + if self._blur_pipeline is None: + if not self._init_blur_pipeline(): + return import time t = time.time() self._blur_pipeline.prepare_global_blur(int(ws.x), int(ws.y), t, fb_scale)