1
0
mirror of https://github.com/emilk/egui.git synced 2026-08-30 13:20:05 -04:00

Use explicit Arc::clone to clarify when clones are cheap (#7784)

This commit is contained in:
Emil Ernerfeldt
2025-12-17 17:19:18 +01:00
committed by GitHub
parent 6157a35985
commit 986c2c0ffb
40 changed files with 80 additions and 71 deletions

View File

@@ -216,7 +216,7 @@ impl<'app> GlowWinitApp<'app> {
storage.as_deref(),
&mut self.native_options,
)?;
let gl = painter.gl().clone();
let gl = Arc::clone(painter.gl());
let max_texture_side = painter.max_texture_side();
glutin.max_texture_side = Some(max_texture_side);
@@ -234,9 +234,9 @@ impl<'app> GlowWinitApp<'app> {
&self.app_name,
&self.native_options,
storage,
Some(gl.clone()),
Some(Arc::clone(&gl)),
Some(Box::new({
let painter = painter.clone();
let painter = Rc::clone(&painter);
move |native| painter.borrow_mut().register_native_texture(native)
})),
#[cfg(feature = "wgpu_no_default_features")]
@@ -244,7 +244,7 @@ impl<'app> GlowWinitApp<'app> {
);
{
let event_loop_proxy = self.repaint_proxy.clone();
let event_loop_proxy = Arc::clone(&self.repaint_proxy);
integration
.egui_ctx
.set_request_repaint_callback(move |info| {

View File

@@ -219,7 +219,7 @@ impl<'app> WgpuWinitApp<'app> {
{
profiling::scope!("set_window");
pollster::block_on(painter.set_window(ViewportId::ROOT, Some(window.clone())))?;
pollster::block_on(painter.set_window(ViewportId::ROOT, Some(Arc::clone(&window))))?;
}
let wgpu_render_state = painter.render_state();
@@ -238,7 +238,7 @@ impl<'app> WgpuWinitApp<'app> {
);
{
let event_loop_proxy = self.repaint_proxy.clone();
let event_loop_proxy = Arc::clone(&self.repaint_proxy);
egui_ctx.set_request_repaint_callback(move |info| {
log::trace!("request_repaint_callback: {info:?}");
@@ -610,7 +610,7 @@ impl WgpuWinitRunning<'_> {
{
profiling::scope!("set_window");
pollster::block_on(painter.set_window(viewport_id, Some(window.clone())))?;
pollster::block_on(painter.set_window(viewport_id, Some(Arc::clone(window))))?;
}
let Some(egui_winit) = egui_winit.as_mut() else {
@@ -919,7 +919,7 @@ impl Viewport {
let window = Arc::new(window);
if let Err(err) =
pollster::block_on(painter.set_window(viewport_id, Some(window.clone())))
pollster::block_on(painter.set_window(viewport_id, Some(Arc::clone(&window))))
{
log::error!("on set_window: viewport_id {viewport_id:?} {err}");
}
@@ -1051,7 +1051,8 @@ fn render_immediate_viewport(
{
profiling::scope!("set_window");
if let Err(err) = pollster::block_on(painter.set_window(ids.this, Some(window.clone()))) {
if let Err(err) = pollster::block_on(painter.set_window(ids.this, Some(Arc::clone(window))))
{
log::error!(
"when rendering viewport_id={:?}, set_window Error {err}",
ids.this

View File

@@ -1,3 +1,5 @@
use std::sync::Arc;
use egui::{TexturesDelta, UserData, ViewportCommand};
use crate::{App, epi, web::web_painter::WebPainter};
@@ -12,7 +14,7 @@ pub struct AppRunner {
painter: Box<dyn WebPainter>,
pub(crate) input: super::WebInput,
app: Box<dyn epi::App>,
pub(crate) needs_repaint: std::sync::Arc<NeedRepaint>,
pub(crate) needs_repaint: Arc<NeedRepaint>,
last_save_time: f64,
pub(crate) text_agent: TextAgent,
@@ -63,7 +65,7 @@ impl AppRunner {
canvas,
&web_options,
)?;
gl = Some(painter.gl().clone());
gl = Some(Arc::clone(painter.gl()));
Box::new(painter) as Box<dyn WebPainter>
}
@@ -138,10 +140,9 @@ impl AppRunner {
wgpu_render_state,
};
let needs_repaint: std::sync::Arc<NeedRepaint> =
std::sync::Arc::new(NeedRepaint::new(web_options.max_fps));
let needs_repaint: Arc<NeedRepaint> = Arc::new(NeedRepaint::new(web_options.max_fps));
{
let needs_repaint = needs_repaint.clone();
let needs_repaint = Arc::clone(&needs_repaint);
egui_ctx.set_request_repaint_callback(move |info| {
needs_repaint.repaint_after(info.delay.as_secs_f64());
});

View File

@@ -91,7 +91,7 @@ impl WebPainter for WebPainterGlow {
for data in data {
events.push(Event::Screenshot {
viewport_id: ViewportId::default(),
image: image.clone(),
image: Arc::clone(&image),
user_data: data,
});
}

View File

@@ -105,7 +105,7 @@ impl WebPainterWgpu {
surface_configuration,
depth_stencil_format,
depth_texture_view: None,
on_surface_error: options.wgpu_options.on_surface_error.clone(),
on_surface_error: Arc::clone(&options.wgpu_options.on_surface_error) as _,
screen_capture_state: None,
capture_tx,
capture_rx,
@@ -336,7 +336,7 @@ impl WebPainter for WebPainterWgpu {
events.push(Event::Screenshot {
viewport_id,
user_data: data,
image: screenshot.clone(),
image: Arc::clone(&screenshot),
});
}
}