From 3159f625ece457fd0859939f61485090d5d99693 Mon Sep 17 00:00:00 2001 From: skal Date: Wed, 11 Feb 2026 12:01:08 +0100 Subject: fix: Use initialized_ flag instead of ctx_.device check ctx_.device exists before init() but Renderer3D not initialized yet. Changed guard from !ctx_.device to !initialized_ flag. Set initialized_ = true after renderer_.init() in both effects. All 36 tests pass. Demo runs without crash. Co-Authored-By: Claude Sonnet 4.5 --- src/gpu/effects/flash_cube_effect.cc | 3 ++- src/gpu/effects/flash_cube_effect.h | 1 + src/gpu/effects/hybrid_3d_effect.cc | 3 ++- src/gpu/effects/hybrid_3d_effect.h | 1 + 4 files changed, 6 insertions(+), 2 deletions(-) (limited to 'src/gpu/effects') diff --git a/src/gpu/effects/flash_cube_effect.cc b/src/gpu/effects/flash_cube_effect.cc index fe6b2a7..506f11c 100644 --- a/src/gpu/effects/flash_cube_effect.cc +++ b/src/gpu/effects/flash_cube_effect.cc @@ -17,7 +17,7 @@ void FlashCubeEffect::resize(int width, int height) { Effect::resize(width, height); - if (!ctx_.device) + if (!initialized_) return; renderer_.resize(width_, height_); @@ -29,6 +29,7 @@ void FlashCubeEffect::init(MainSequence* demo) { renderer_.init(ctx_.device, ctx_.queue, ctx_.format); renderer_.resize(width_, height_); + initialized_ = true; // Texture Manager texture_manager_.init(ctx_.device, ctx_.queue); diff --git a/src/gpu/effects/flash_cube_effect.h b/src/gpu/effects/flash_cube_effect.h index 1c71164..df30b5b 100644 --- a/src/gpu/effects/flash_cube_effect.h +++ b/src/gpu/effects/flash_cube_effect.h @@ -24,4 +24,5 @@ class FlashCubeEffect : public Effect { Camera camera_; float last_beat_ = 0.0f; float flash_intensity_ = 0.0f; + bool initialized_ = false; }; diff --git a/src/gpu/effects/hybrid_3d_effect.cc b/src/gpu/effects/hybrid_3d_effect.cc index 61b3734..a46ab4c 100644 --- a/src/gpu/effects/hybrid_3d_effect.cc +++ b/src/gpu/effects/hybrid_3d_effect.cc @@ -17,7 +17,7 @@ void Hybrid3DEffect::resize(int width, int height) { Effect::resize(width, height); - if (!ctx_.device) + if (!initialized_) return; renderer_.resize(width_, height_); @@ -31,6 +31,7 @@ void Hybrid3DEffect::init(MainSequence* demo) { renderer_.init(ctx_.device, ctx_.queue, ctx_.format); renderer_.resize(width_, height_); + initialized_ = true; // Texture Manager texture_manager_.init(ctx_.device, ctx_.queue); diff --git a/src/gpu/effects/hybrid_3d_effect.h b/src/gpu/effects/hybrid_3d_effect.h index ea8285b..818b65c 100644 --- a/src/gpu/effects/hybrid_3d_effect.h +++ b/src/gpu/effects/hybrid_3d_effect.h @@ -25,4 +25,5 @@ class Hybrid3DEffect : public Effect { TextureManager texture_manager_; Scene scene_; Camera camera_; + bool initialized_ = false; }; -- cgit v1.2.3