Fixed state syncing issue with MW.

This commit is contained in:
Bingus 2023-02-21 16:46:32 -08:00
parent bd58d5fe25
commit 50b9c778b1
No known key found for this signature in database
GPG key ID: 5F84D2AA40A9F170

View file

@ -502,12 +502,16 @@ async fn run_instance<A, E, C>(
|| compositor.fetch_information(),
);
// synchronize window state with application state.
states.get_mut(&id).unwrap().synchronize(
&application,
id,
windows.get(&id).expect("No window found with ID."),
);
// synchronize window states with application states.
for (id, state) in states.iter_mut() {
state.synchronize(
&application,
*id,
windows
.get(id)
.expect("No window found with ID."),
);
}
interfaces = ManuallyDrop::new(build_user_interfaces(
&application,
@ -575,20 +579,19 @@ async fn run_instance<A, E, C>(
crate::event::Status::Ignored,
));
let _ =
control_sender.start_send(match interface_state {
user_interface::State::Updated {
redraw_request: Some(redraw_request),
} => match redraw_request {
window::RedrawRequest::NextFrame => {
ControlFlow::Poll
}
window::RedrawRequest::At(at) => {
ControlFlow::WaitUntil(at)
}
},
_ => ControlFlow::Wait,
});
let _ = control_sender.start_send(match interface_state {
user_interface::State::Updated {
redraw_request: Some(redraw_request),
} => match redraw_request {
window::RedrawRequest::NextFrame => {
ControlFlow::Poll
}
window::RedrawRequest::At(at) => {
ControlFlow::WaitUntil(at)
}
},
_ => ControlFlow::Wait,
});
redraw_pending = false;
}