Run UserInterface::update only when events are present

This commit is contained in:
Héctor Ramón Jiménez 2024-02-28 19:37:26 +01:00
parent df62075040
commit 30e6605650
No known key found for this signature in database
GPG key ID: 7CC46565708259A7

View file

@ -499,21 +499,29 @@ async fn run_instance<A, E, C>(
continue;
}
let interact_timer = debug::interact_time(window::Id::MAIN);
let (interface_state, statuses) = user_interface.update(
&events,
state.cursor(),
&mut renderer,
&mut clipboard,
&mut messages,
);
interact_timer.finish();
let interface_state = if events.is_empty() {
user_interface::State::Updated {
redraw_request: None,
}
} else {
let interact_timer = debug::interact_time(window::Id::MAIN);
let (interface_state, statuses) = user_interface.update(
&events,
state.cursor(),
&mut renderer,
&mut clipboard,
&mut messages,
);
for (event, status) in
events.drain(..).zip(statuses.into_iter())
{
runtime.broadcast(event, status);
}
for (event, status) in
events.drain(..).zip(statuses.into_iter())
{
runtime.broadcast(event, status);
}
interact_timer.finish();
interface_state
};
if !messages.is_empty()
|| matches!(