From b5c1ba48675bfad978e3f4746703cd601d80c57e Mon Sep 17 00:00:00 2001 From: funman300 Date: Thu, 9 Jul 2026 11:25:23 -0700 Subject: [PATCH 1/2] =?UTF-8?q?fix(engine):=20emit=20RequestRedraw=20from?= =?UTF-8?q?=20animation=20systems=20=E2=80=94=20restores=2060=20fps=20card?= =?UTF-8?q?=20animation=20on=20Android?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Commit 38e4c03 (shipped in v0.40.0) switched Android's focused_mode to reactive_low_power(100 ms) on the premise that every animation tick system writes RequestRedraw while it has active work. The writers were never actually added — the diff only contained the WinitSettings change, imports, and add_message registrations. Result: with no touch input, nothing wakes the winit loop during a card slide except the 100 ms fallback ceiling, so animations render at ~10 fps on Android. Desktop and web keep Continuous mode, which is why only Android was affected (reported by Rhys the day v0.40.0 shipped; confirmed absent on v0.39.1). Adds the missing MessageWriter to all seven systems the original commit message named: - advance_card_animations (CardAnimationPlugin) - advance_card_anims (AnimationPlugin — deal/win cascade/slides) - tick_shake_anim, tick_settle_anim, tick_foundation_flourish (FeedbackAnimPlugin) - drive_toast_display (AnimationPlugin — toast countdown) - drive_auto_complete (AutoCompletePlugin — step-interval keepalive) Each writes one RequestRedraw per frame while active work exists (including delay phases, which also need per-frame ticks). Regression test asserts an active CardAnimation emits RequestRedraw and an idle board does not. Co-Authored-By: Claude Fable 5 --- solitaire_engine/src/animation_plugin.rs | 14 ++++++ solitaire_engine/src/auto_complete_plugin.rs | 5 +++ .../src/card_animation/animation.rs | 9 ++++ solitaire_engine/src/card_animation/mod.rs | 43 +++++++++++++++++++ solitaire_engine/src/feedback_anim_plugin.rs | 18 ++++++++ 5 files changed, 89 insertions(+) diff --git a/solitaire_engine/src/animation_plugin.rs b/solitaire_engine/src/animation_plugin.rs index eb31866..44e7323 100644 --- a/solitaire_engine/src/animation_plugin.rs +++ b/solitaire_engine/src/animation_plugin.rs @@ -252,10 +252,17 @@ fn advance_card_anims( time: Res