mirror of
https://github.com/slint-ui/slint.git
synced 2025-10-01 14:21:16 +00:00
Fix event loop being blocked because it wouldn't notice that animation is still running
The active_animation was set to false, but if the animation tick did not change, the animation tick was not maked dirty, and we wouldn't then re-evaluate animated property that would set the active_animation to true again
This commit is contained in:
parent
c72c2a58ff
commit
e75f617125
2 changed files with 5 additions and 3 deletions
|
@ -98,8 +98,10 @@ impl AnimationDriver {
|
|||
/// Iterates through all animations based on the new time tick and updates their state. This should be called by
|
||||
/// the windowing system driver for every frame.
|
||||
pub fn update_animations(&self, new_tick: Instant) {
|
||||
self.active_animations.set(false);
|
||||
self.global_instant.as_ref().set(new_tick);
|
||||
if self.global_instant.as_ref().get() != new_tick {
|
||||
self.active_animations.set(false);
|
||||
self.global_instant.as_ref().set(new_tick);
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns true if there are any active or ready animations. This is used by the windowing system to determine
|
||||
|
|
|
@ -214,6 +214,7 @@ pub(crate) fn unregister_window(id: winit::window::WindowId) {
|
|||
|
||||
/// This enum captures run-time specific events that can be dispatched to the event loop in
|
||||
/// addition to the winit events.
|
||||
#[derive(Debug)]
|
||||
pub enum CustomEvent {
|
||||
/// Request for the event loop to wake up and poll. This is used on the web for example to
|
||||
/// request an animation frame.
|
||||
|
@ -476,7 +477,6 @@ impl EventLoop {
|
|||
return;
|
||||
}
|
||||
*control_flow = ControlFlow::Poll;
|
||||
//println!("Scheduling a redraw due to active animations");
|
||||
ALL_WINDOWS.with(|windows| {
|
||||
windows.borrow().values().for_each(|window| {
|
||||
if let Some(window) = window.upgrade() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue