Run UserInterface::update only when events are present
This commit is contained in:
parent
df62075040
commit
30e6605650
1 changed files with 22 additions and 14 deletions
|
|
@ -499,21 +499,29 @@ async fn run_instance<A, E, C>(
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
let interact_timer = debug::interact_time(window::Id::MAIN);
|
let interface_state = if events.is_empty() {
|
||||||
let (interface_state, statuses) = user_interface.update(
|
user_interface::State::Updated {
|
||||||
&events,
|
redraw_request: None,
|
||||||
state.cursor(),
|
}
|
||||||
&mut renderer,
|
} else {
|
||||||
&mut clipboard,
|
let interact_timer = debug::interact_time(window::Id::MAIN);
|
||||||
&mut messages,
|
let (interface_state, statuses) = user_interface.update(
|
||||||
);
|
&events,
|
||||||
interact_timer.finish();
|
state.cursor(),
|
||||||
|
&mut renderer,
|
||||||
|
&mut clipboard,
|
||||||
|
&mut messages,
|
||||||
|
);
|
||||||
|
|
||||||
for (event, status) in
|
for (event, status) in
|
||||||
events.drain(..).zip(statuses.into_iter())
|
events.drain(..).zip(statuses.into_iter())
|
||||||
{
|
{
|
||||||
runtime.broadcast(event, status);
|
runtime.broadcast(event, status);
|
||||||
}
|
}
|
||||||
|
interact_timer.finish();
|
||||||
|
|
||||||
|
interface_state
|
||||||
|
};
|
||||||
|
|
||||||
if !messages.is_empty()
|
if !messages.is_empty()
|
||||||
|| matches!(
|
|| matches!(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue