From fd1c01cf1f3cadf43e721765b404b48097dfc2cc Mon Sep 17 00:00:00 2001 From: Konkitoman Date: Sun, 30 Jul 2023 20:03:56 +0300 Subject: [PATCH] Removed Context::set_current_rendering_viewport Now we always need to say what viewport we rendering in Context::beagin or Context::run --- crates/eframe/src/native/epi_integration.rs | 2 +- crates/eframe/src/native/run.rs | 2 -- crates/egui/src/context.rs | 19 +++++++++++-------- crates/egui/src/lib.rs | 4 ++-- crates/egui_demo_lib/benches/benchmark.rs | 12 ++++++------ crates/egui_demo_lib/src/lib.rs | 4 ++-- 6 files changed, 22 insertions(+), 21 deletions(-) diff --git a/crates/eframe/src/native/epi_integration.rs b/crates/eframe/src/native/epi_integration.rs index 5dbbf9900..79327c80e 100644 --- a/crates/eframe/src/native/epi_integration.rs +++ b/crates/eframe/src/native/epi_integration.rs @@ -515,7 +515,7 @@ impl EpiIntegration { self.frame.info.parent_viewport = parent_id; // Run user code: - let full_output = self.egui_ctx.run(raw_input, |egui_ctx| { + let full_output = self.egui_ctx.run(raw_input, viewport_id, |egui_ctx| { crate::profile_scope!("App::update"); app.update(egui_ctx, &mut self.frame, render.as_ref().map(|r| &***r)); }); diff --git a/crates/eframe/src/native/run.rs b/crates/eframe/src/native/run.rs index 822587946..2a4ad170e 100644 --- a/crates/eframe/src/native/run.rs +++ b/crates/eframe/src/native/run.rs @@ -1062,7 +1062,6 @@ mod glow_integration { app.clear_color(&integration.egui_ctx.style().visuals), ); - integration.egui_ctx.set_current_viewport_id(win.window_id); egui::FullOutput { platform_output, repaint_after, @@ -1786,7 +1785,6 @@ mod wgpu_integration { }; { let Some((viewport_id, (Some(window), Some(state), render, parent_viewport_id, _))) = windows_id.get(&window_id).and_then(|id|(windows.get_mut(id).map(|w|(*id, w)))) else{return vec![]}; - integration.egui_ctx.set_current_viewport_id(viewport_id); let _ = pollster::block_on(painter.set_window(viewport_id, Some(window))); diff --git a/crates/egui/src/context.rs b/crates/egui/src/context.rs index 00a93c34e..6b4acdf18 100644 --- a/crates/egui/src/context.rs +++ b/crates/egui/src/context.rs @@ -219,7 +219,8 @@ struct ContextImpl { } impl ContextImpl { - fn begin_frame_mut(&mut self, mut new_raw_input: RawInput) { + fn begin_frame_mut(&mut self, mut new_raw_input: RawInput, viewport_id: u64) { + self.current_rendering_viewport = viewport_id; self.repaint.start_frame(self.current_rendering_viewport); if let Some(new_pixels_per_point) = self.memory.new_pixels_per_point.take() { @@ -420,8 +421,13 @@ impl Context { /// // handle full_output /// ``` #[must_use] - pub fn run(&self, new_input: RawInput, run_ui: impl FnOnce(&Context)) -> FullOutput { - self.begin_frame(new_input); + pub fn run( + &self, + new_input: RawInput, + viewport_id: u64, + run_ui: impl FnOnce(&Context), + ) -> FullOutput { + self.begin_frame(new_input, viewport_id); run_ui(self); self.end_frame() } @@ -443,8 +449,8 @@ impl Context { /// let full_output = ctx.end_frame(); /// // handle full_output /// ``` - pub fn begin_frame(&self, new_input: RawInput) { - self.write(|ctx| ctx.begin_frame_mut(new_input)); + pub fn begin_frame(&self, new_input: RawInput, viewport_id: u64) { + self.write(|ctx| ctx.begin_frame_mut(new_input, viewport_id)); } } @@ -1973,9 +1979,6 @@ impl Context { use containers::window::ViewportBuilder; /// # Windows impl Context { - pub fn set_current_viewport_id(&self, viewport_id: u64) { - self.write(|ctx| ctx.current_rendering_viewport = viewport_id); - } pub fn current_rendering_viewport(&self) -> u64 { self.read(|ctx| ctx.current_rendering_viewport) } diff --git a/crates/egui/src/lib.rs b/crates/egui/src/lib.rs index 05e83fdf4..b742fe2e1 100644 --- a/crates/egui/src/lib.rs +++ b/crates/egui/src/lib.rs @@ -555,7 +555,7 @@ pub type ViewportRender = dyn Fn(&Context, u64, u64) + Sync + Send; pub fn __run_test_ctx(mut run_ui: impl FnMut(&Context)) { let ctx = Context::default(); ctx.set_fonts(FontDefinitions::empty()); // prevent fonts from being loaded (save CPU time) - let _ = ctx.run(Default::default(), |ctx| { + let _ = ctx.run(Default::default(), 0, |ctx| { run_ui(ctx); }); } @@ -564,7 +564,7 @@ pub fn __run_test_ctx(mut run_ui: impl FnMut(&Context)) { pub fn __run_test_ui(mut add_contents: impl FnMut(&mut Ui)) { let ctx = Context::default(); ctx.set_fonts(FontDefinitions::empty()); // prevent fonts from being loaded (save CPU time) - let _ = ctx.run(Default::default(), |ctx| { + let _ = ctx.run(Default::default(), 0, |ctx| { crate::CentralPanel::default().show(ctx, |ui| { add_contents(ui); }); diff --git a/crates/egui_demo_lib/benches/benchmark.rs b/crates/egui_demo_lib/benches/benchmark.rs index dcc55ea6e..e9ee67199 100644 --- a/crates/egui_demo_lib/benches/benchmark.rs +++ b/crates/egui_demo_lib/benches/benchmark.rs @@ -13,7 +13,7 @@ pub fn criterion_benchmark(c: &mut Criterion) { // The most end-to-end benchmark. c.bench_function("demo_with_tessellate__realistic", |b| { b.iter(|| { - let full_output = ctx.run(RawInput::default(), |ctx| { + let full_output = ctx.run(RawInput::default(), 0, |ctx| { demo_windows.ui(ctx); }); ctx.tessellate(full_output.shapes) @@ -22,13 +22,13 @@ pub fn criterion_benchmark(c: &mut Criterion) { c.bench_function("demo_no_tessellate", |b| { b.iter(|| { - ctx.run(RawInput::default(), |ctx| { + ctx.run(RawInput::default(), 0, |ctx| { demo_windows.ui(ctx); }) }); }); - let full_output = ctx.run(RawInput::default(), |ctx| { + let full_output = ctx.run(RawInput::default(), 0, |ctx| { demo_windows.ui(ctx); }); c.bench_function("demo_only_tessellate", |b| { @@ -42,7 +42,7 @@ pub fn criterion_benchmark(c: &mut Criterion) { let mut demo_windows = egui_demo_lib::DemoWindows::default(); c.bench_function("demo_full_no_tessellate", |b| { b.iter(|| { - ctx.run(RawInput::default(), |ctx| { + ctx.run(RawInput::default(), 0, |ctx| { demo_windows.ui(ctx); }) }); @@ -51,7 +51,7 @@ pub fn criterion_benchmark(c: &mut Criterion) { { let ctx = egui::Context::default(); - let _ = ctx.run(RawInput::default(), |ctx| { + let _ = ctx.run(RawInput::default(), 0, |ctx| { egui::CentralPanel::default().show(ctx, |ui| { c.bench_function("label &str", |b| { b.iter(|| { @@ -69,7 +69,7 @@ pub fn criterion_benchmark(c: &mut Criterion) { { let ctx = egui::Context::default(); - ctx.begin_frame(RawInput::default()); + ctx.begin_frame(RawInput::default(), 0); egui::CentralPanel::default().show(&ctx, |ui| { c.bench_function("Painter::rect", |b| { diff --git a/crates/egui_demo_lib/src/lib.rs b/crates/egui_demo_lib/src/lib.rs index 43db89f2d..31d2bbcbf 100644 --- a/crates/egui_demo_lib/src/lib.rs +++ b/crates/egui_demo_lib/src/lib.rs @@ -68,7 +68,7 @@ fn test_egui_e2e() { const NUM_FRAMES: usize = 5; for _ in 0..NUM_FRAMES { - let full_output = ctx.run(raw_input.clone(), |ctx| { + let full_output = ctx.run(raw_input.clone(), 0, |ctx| { demo_windows.ui(ctx); }); let clipped_primitives = ctx.tessellate(full_output.shapes); @@ -87,7 +87,7 @@ fn test_egui_zero_window_size() { const NUM_FRAMES: usize = 5; for _ in 0..NUM_FRAMES { - let full_output = ctx.run(raw_input.clone(), |ctx| { + let full_output = ctx.run(raw_input.clone(), 0, |ctx| { demo_windows.ui(ctx); }); let clipped_primitives = ctx.tessellate(full_output.shapes);