mirror of
https://github.com/emilk/egui.git
synced 2026-09-02 23:00:04 -04:00
Use less RwLocks and Arcs in public interfaces
This commit is contained in:
@@ -1583,17 +1583,21 @@ mod glow_integration {
|
|||||||
|
|
||||||
Self::process_viewport_builders(&glutin, viewports);
|
Self::process_viewport_builders(&glutin, viewports);
|
||||||
|
|
||||||
egui_winit::process_viewports_commands(
|
for (viewport_id, command) in viewport_commands {
|
||||||
viewport_commands,
|
if let Some(window) = glutin
|
||||||
*self.is_focused.read(),
|
.read()
|
||||||
|viewport_id| {
|
.viewports
|
||||||
glutin
|
.get(&viewport_id)
|
||||||
.read()
|
.and_then(|w| w.read().window.clone())
|
||||||
.viewports
|
{
|
||||||
.get(&viewport_id)
|
egui_winit::process_viewport_commands(
|
||||||
.and_then(|w| w.read().window.clone())
|
vec![command],
|
||||||
},
|
viewport_id,
|
||||||
);
|
*self.is_focused.read(),
|
||||||
|
&window.read(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
control_flow
|
control_flow
|
||||||
} else {
|
} else {
|
||||||
@@ -2431,16 +2435,20 @@ mod wgpu_integration {
|
|||||||
active_viewports_ids.push(id);
|
active_viewports_ids.push(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
egui_winit::process_viewports_commands(
|
for (viewport_id, command) in viewport_commands {
|
||||||
viewport_commands,
|
if let Some(window) = windows
|
||||||
*self.is_focused.read(),
|
.read()
|
||||||
|viewport_id| {
|
.get(&viewport_id)
|
||||||
windows
|
.and_then(|w| w.window.clone())
|
||||||
.read()
|
{
|
||||||
.get(&viewport_id)
|
egui_winit::process_viewport_commands(
|
||||||
.and_then(|w| w.window.clone())
|
vec![command],
|
||||||
},
|
viewport_id,
|
||||||
);
|
*self.is_focused.read(),
|
||||||
|
&window.read(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
windows
|
windows
|
||||||
.write()
|
.write()
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ pub use accesskit_winit;
|
|||||||
pub use egui;
|
pub use egui;
|
||||||
#[cfg(feature = "accesskit")]
|
#[cfg(feature = "accesskit")]
|
||||||
use egui::accesskit;
|
use egui::accesskit;
|
||||||
use egui::{mutex::RwLock, Pos2, Rect, Vec2, ViewportBuilder, ViewportCommand, ViewportId};
|
use egui::{Pos2, Rect, Vec2, ViewportBuilder, ViewportCommand, ViewportId};
|
||||||
pub use winit;
|
pub use winit;
|
||||||
|
|
||||||
pub mod clipboard;
|
pub mod clipboard;
|
||||||
@@ -1113,18 +1113,6 @@ pub fn process_viewport_commands(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn process_viewports_commands(
|
|
||||||
commands: Vec<(ViewportId, ViewportCommand)>,
|
|
||||||
focused: Option<ViewportId>,
|
|
||||||
get_window: impl Fn(ViewportId) -> Option<Arc<RwLock<winit::window::Window>>>,
|
|
||||||
) {
|
|
||||||
for (viewport_id, command) in commands {
|
|
||||||
if let Some(window) = get_window(viewport_id) {
|
|
||||||
process_viewport_commands(vec![command], viewport_id, focused, &window.read());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn create_winit_window_builder(builder: &ViewportBuilder) -> winit::window::WindowBuilder {
|
pub fn create_winit_window_builder(builder: &ViewportBuilder) -> winit::window::WindowBuilder {
|
||||||
let mut window_builder = winit::window::WindowBuilder::new()
|
let mut window_builder = winit::window::WindowBuilder::new()
|
||||||
.with_title(builder.title.clone())
|
.with_title(builder.title.clone())
|
||||||
|
|||||||
Reference in New Issue
Block a user