From 040e29415b059869648098713fec534feae5ca5f Mon Sep 17 00:00:00 2001 From: Mukilan Thiyagarajan Date: Thu, 9 Jan 2025 14:54:50 +0530 Subject: [PATCH] webgl: shutdown webrender before acknowledging Exit message (#34917) Fixes #34847. Signed-off-by: Mukilan Thiyagarajan --- components/canvas/webgl_thread.rs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/components/canvas/webgl_thread.rs b/components/canvas/webgl_thread.rs index 2cc8e816273..06c3f579327 100644 --- a/components/canvas/webgl_thread.rs +++ b/components/canvas/webgl_thread.rs @@ -296,15 +296,7 @@ impl WebGLThread { while let Ok(msg) = self.receiver.recv() { let exit = self.handle_msg(msg, &webgl_chan); if exit { - // Call remove_context functions in order to correctly delete WebRender image keys. - let context_ids: Vec = self.contexts.keys().copied().collect(); - for id in context_ids { - self.remove_webgl_context(id); - } - - // Block on shutting-down WebRender. - self.webrender_api.shut_down(true); - return; + break; } } } @@ -388,6 +380,14 @@ impl WebGLThread { self.handle_swap_buffers(swap_ids, sender, sent_time); }, WebGLMsg::Exit(sender) => { + // Call remove_context functions in order to correctly delete WebRender image keys. + let context_ids: Vec = self.contexts.keys().copied().collect(); + for id in context_ids { + self.remove_webgl_context(id); + } + + // Block on shutting-down WebRender. + self.webrender_api.shut_down(true); if let Err(e) = sender.send(()) { warn!("Failed to send response to WebGLMsg::Exit ({e})"); }