From 54ad92ce913629d1d1f623f4b14d51244554a59c Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Tue, 2 Aug 2022 17:34:04 +0200 Subject: Build `UserInterface` only once on `Outcome::Chain` --- winit/src/application.rs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/winit/src/application.rs b/winit/src/application.rs index 3d58da0f..3a5c3dac 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -662,17 +662,16 @@ pub fn run_command( let mut current_cache = std::mem::take(cache); let mut current_operation = Some(action.into_operation()); - while let Some(mut operation) = current_operation.take() { - let mut user_interface = build_user_interface( - application, - current_cache, - renderer, - state.logical_size(), - debug, - ); + let mut user_interface = build_user_interface( + application, + current_cache, + renderer, + state.logical_size(), + debug, + ); + while let Some(mut operation) = current_operation.take() { user_interface.operate(renderer, operation.as_mut()); - current_cache = user_interface.into_cache(); match operation.finish() { operation::Outcome::None => {} @@ -687,6 +686,7 @@ pub fn run_command( } } + current_cache = user_interface.into_cache(); *cache = current_cache; } } -- cgit