Fix Android crash on resume with Glow backend (#3867)
Addition for <https://github.com/emilk/egui/pull/3847> In previous one i only fixed crash occurring with Wgpu backend. This fixes crash with Glow backend as well. I only tested this change with android so most things i changed are behind ```#[cfg(target_os = "android")]```. Both fixes are dirty thought. As <https://github.com/emilk/egui/pull/3172> says that "The root viewport is the original viewport, and cannot be closed without closing the application.". So they break rules i guess? But i can't think about better solution for now. Closes <https://github.com/emilk/egui/issues/3861>.
This commit is contained in:
parent
5e7fa46451
commit
200051d5d8
|
|
@ -39,18 +39,6 @@ use super::{
|
|||
*,
|
||||
};
|
||||
|
||||
// Note: that the current Glutin API design tightly couples the GL context with
|
||||
// the Window which means it's not practically possible to just destroy the
|
||||
// window and re-create a new window while continuing to use the same GL context.
|
||||
//
|
||||
// For now this means it's not possible to support Android as well as we can with
|
||||
// wgpu because we're basically forced to destroy and recreate _everything_ when
|
||||
// the application suspends and resumes.
|
||||
//
|
||||
// There is work in progress to improve the Glutin API so it has a separate Surface
|
||||
// API that would allow us to just destroy a Window/Surface when suspending, see:
|
||||
// https://github.com/rust-windowing/glutin/pull/1435
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Types:
|
||||
|
||||
|
|
@ -525,7 +513,9 @@ impl GlowWinitRunning {
|
|||
let mut glutin = self.glutin.borrow_mut();
|
||||
let egui_ctx = glutin.egui_ctx.clone();
|
||||
let viewport = glutin.viewports.get_mut(&viewport_id).unwrap();
|
||||
let window = viewport.window.as_ref().unwrap();
|
||||
let Some(window) = viewport.window.as_ref() else {
|
||||
return EventResult::Wait;
|
||||
};
|
||||
egui_winit::update_viewport_info(&mut viewport.info, &egui_ctx, window);
|
||||
|
||||
let egui_winit = viewport.egui_winit.as_mut().unwrap();
|
||||
|
|
|
|||
Loading…
Reference in New Issue