Remove internal event loop proxy clone in the GL renderer

We don't need it since we can send events through the TLS
This commit is contained in:
Simon Hausmann 2021-05-27 13:22:38 +02:00
parent e4b679227f
commit 8d2554ff3b
2 changed files with 17 additions and 19 deletions

View file

@ -201,20 +201,15 @@ impl CachedImage {
let image_id = image_id.clone(); let image_id = image_id.clone();
let window_weak = Rc::downgrade(&renderer.window); let window_weak = Rc::downgrade(&renderer.window);
let cached_image_weak = Rc::downgrade(&cached_image); let cached_image_weak = Rc::downgrade(&cached_image);
let event_loop_proxy_weak = Rc::downgrade(&renderer.event_loop_proxy);
move || { move || {
let (canvas, window, event_loop_proxy, cached_image) = match ( let (canvas, window, cached_image) = match (
canvas_weak.upgrade(), canvas_weak.upgrade(),
window_weak.upgrade(), window_weak.upgrade(),
event_loop_proxy_weak.upgrade(),
cached_image_weak.upgrade(), cached_image_weak.upgrade(),
) { ) {
( (Some(canvas), Some(window), Some(cached_image)) => {
Some(canvas), (canvas, window, cached_image)
Some(window), }
Some(event_loop_proxy),
Some(cached_image),
) => (canvas, window, event_loop_proxy, cached_image),
_ => return, _ => return,
}; };
canvas canvas
@ -236,7 +231,12 @@ impl CachedImage {
// be dispatched as the next event. We are however not in an event loop // be dispatched as the next event. We are however not in an event loop
// call, so we also need to wake up the event loop. // call, so we also need to wake up the event loop.
window.request_redraw(); window.request_redraw();
event_loop_proxy.send_event(crate::eventloop::CustomEvent::WakeUpAndPoll).ok(); crate::eventloop::with_window_target(|event_loop| {
event_loop
.event_loop_proxy()
.send_event(crate::eventloop::CustomEvent::WakeUpAndPoll)
.ok();
});
} }
}) })
.into(), .into(),

View file

@ -215,8 +215,7 @@ struct GLRendererData {
window: Rc<winit::window::Window>, window: Rc<winit::window::Window>,
#[cfg(not(target_arch = "wasm32"))] #[cfg(not(target_arch = "wasm32"))]
windowed_context: RefCell<Option<WindowedContextWrapper>>, windowed_context: RefCell<Option<WindowedContextWrapper>>,
#[cfg(target_arch = "wasm32")]
event_loop_proxy: Rc<winit::event_loop::EventLoopProxy<eventloop::CustomEvent>>,
item_graphics_cache: RefCell<RenderingCache<Option<ItemGraphicsCacheEntry>>>, item_graphics_cache: RefCell<RenderingCache<Option<ItemGraphicsCacheEntry>>>,
// Cache used to avoid repeatedly decoding images from disk. Entries with a count // Cache used to avoid repeatedly decoding images from disk. Entries with a count
@ -309,9 +308,6 @@ impl GLRenderer {
(windowed_context, renderer) (windowed_context, renderer)
}; };
#[cfg(target_arch = "wasm32")]
let event_loop_proxy = Rc::new(event_loop.event_loop_proxy().clone());
#[cfg(target_arch = "wasm32")] #[cfg(target_arch = "wasm32")]
let (window, renderer) = { let (window, renderer) = {
use wasm_bindgen::JsCast; use wasm_bindgen::JsCast;
@ -344,7 +340,6 @@ impl GLRenderer {
// on the web will always have 1024x768 as size otherwise. // on the web will always have 1024x768 as size otherwise.
let resize_canvas = { let resize_canvas = {
let event_loop_proxy = event_loop_proxy.clone();
let window = window.clone(); let window = window.clone();
let canvas = canvas.clone(); let canvas = canvas.clone();
move |_: web_sys::Event| { move |_: web_sys::Event| {
@ -355,7 +350,12 @@ impl GLRenderer {
window.set_inner_size(existing_canvas_size); window.set_inner_size(existing_canvas_size);
window.request_redraw(); window.request_redraw();
event_loop_proxy.send_event(eventloop::CustomEvent::WakeUpAndPoll).ok(); crate::eventloop::with_window_target(|event_loop| {
event_loop
.event_loop_proxy()
.send_event(crate::eventloop::CustomEvent::WakeUpAndPoll)
.ok();
})
} }
}; };
@ -402,8 +402,6 @@ impl GLRenderer {
}))), }))),
#[cfg(target_arch = "wasm32")] #[cfg(target_arch = "wasm32")]
window, window,
#[cfg(target_arch = "wasm32")]
event_loop_proxy,
item_graphics_cache: Default::default(), item_graphics_cache: Default::default(),
image_cache: Default::default(), image_cache: Default::default(),