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

Update wgpu to 0.19 (#3824)

* Closes https://github.com/emilk/egui/issues/3675

---------

Co-authored-by: Andreas Reich <r_andreas2@web.de>
Co-authored-by: Mingun <Alexander_Sergey@mail.ru>
This commit is contained in:
Emil Ernerfeldt
2024-01-19 10:14:13 +01:00
committed by GitHub
parent 7733d1d87c
commit b766a48fa7
27 changed files with 578 additions and 344 deletions

View File

@@ -8,7 +8,7 @@
use std::{cell::RefCell, rc::Rc, sync::Arc, time::Instant};
use parking_lot::Mutex;
use raw_window_handle::{HasRawDisplayHandle as _, HasRawWindowHandle as _};
use raw_window_handle::{HasDisplayHandle as _, HasWindowHandle as _};
use winit::{
event_loop::{EventLoop, EventLoopProxy, EventLoopWindowTarget},
window::{Window, WindowId},
@@ -84,7 +84,7 @@ pub struct Viewport {
/// Window surface state that's initialized when the app starts running via a Resumed event
/// and on Android will also be destroyed if the application is paused.
window: Option<Rc<Window>>,
window: Option<Arc<Window>>,
/// `window` and `egui_winit` are initialized together.
egui_winit: Option<egui_winit::State>,
@@ -170,9 +170,11 @@ impl WgpuWinitApp {
self.native_options.viewport.transparent.unwrap_or(false),
);
let window = Arc::new(window);
{
crate::profile_scope!("set_window");
pollster::block_on(painter.set_window(ViewportId::ROOT, Some(&window)))?;
pollster::block_on(painter.set_window(ViewportId::ROOT, Some(window.clone())))?;
}
let wgpu_render_state = painter.render_state();
@@ -235,8 +237,8 @@ impl WgpuWinitApp {
#[cfg(feature = "glow")]
gl: None,
wgpu_render_state,
raw_display_handle: window.raw_display_handle(),
raw_window_handle: window.raw_window_handle(),
raw_display_handle: window.display_handle().map(|h| h.as_raw()),
raw_window_handle: window.window_handle().map(|h| h.as_raw()),
};
let app = {
crate::profile_scope!("user_app_creator");
@@ -260,7 +262,7 @@ impl WgpuWinitApp {
},
screenshot_requested: false,
viewport_ui_cb: None,
window: Some(Rc::new(window)),
window: Some(window),
egui_winit: Some(egui_winit),
},
);
@@ -323,7 +325,7 @@ impl WinitApp for WgpuWinitApp {
self.running.as_ref().map(|r| &r.integration)
}
fn window(&self, window_id: WindowId) -> Option<Rc<Window>> {
fn window(&self, window_id: WindowId) -> Option<Arc<Window>> {
self.running
.as_ref()
.and_then(|r| {
@@ -544,7 +546,8 @@ impl WgpuWinitRunning {
{
crate::profile_scope!("set_window");
if let Err(err) = pollster::block_on(painter.set_window(viewport_id, Some(window)))
if let Err(err) =
pollster::block_on(painter.set_window(viewport_id, Some(window.clone())))
{
log::warn!("Failed to set window: {err}");
}
@@ -797,7 +800,10 @@ impl Viewport {
Ok(window) => {
windows_id.insert(window.id(), viewport_id);
if let Err(err) = pollster::block_on(painter.set_window(viewport_id, Some(&window)))
let window = Arc::new(window);
if let Err(err) =
pollster::block_on(painter.set_window(viewport_id, Some(window.clone())))
{
log::error!("on set_window: viewport_id {viewport_id:?} {err}");
}
@@ -813,7 +819,7 @@ impl Viewport {
self.info.minimized = window.is_minimized();
self.info.maximized = Some(window.is_maximized());
self.window = Some(Rc::new(window));
self.window = Some(window);
}
Err(err) => {
log::error!("Failed to create window: {err}");
@@ -930,7 +936,7 @@ fn render_immediate_viewport(
{
crate::profile_scope!("set_window");
if let Err(err) = pollster::block_on(painter.set_window(ids.this, Some(window))) {
if let Err(err) = pollster::block_on(painter.set_window(ids.this, Some(window.clone()))) {
log::error!(
"when rendering viewport_id={:?}, set_window Error {err}",
ids.this