webgl: shutdown webrender before acknowledging Exit message (#34917)

Fixes #34847.

Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
This commit is contained in:
Mukilan Thiyagarajan 2025-01-09 14:54:50 +05:30 committed by GitHub
parent 3d1b7f8f06
commit 040e29415b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -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<WebGLContextId> = 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<WebGLContextId> = 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})");
}