Remove EventLoopWaker from Constellation (#30101)

* remove event_loop_waker that is always None

* remove None event_loop_waker form InitialScriptState

* fix formatting

* remove None event_loop_waker from ScriptThread

* remove None EventLoopWaker from Window

* remove None and use of wake_after_send in webgl code
This commit is contained in:
Atbrakhi 2023-08-15 20:02:02 +02:00 committed by GitHub
parent 83a46f68db
commit 8255e8e318
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 15 additions and 78 deletions

View file

@ -63,7 +63,6 @@ use canvas_traits::webgl::{
YAxisTreatment,
};
use dom_struct::dom_struct;
use embedder_traits::EventLoopWaker;
use euclid::default::{Point2D, Rect, Size2D};
use ipc_channel::ipc::{self, IpcSharedMemory};
use js::jsapi::{JSContext, JSObject, Type};
@ -236,10 +235,7 @@ impl WebGLRenderingContext {
let max_vertex_attribs = ctx_data.limits.max_vertex_attribs as usize;
Self {
reflector_: Reflector::new(),
webgl_sender: WebGLMessageSender::new(
ctx_data.sender,
window.get_event_loop_waker(),
),
webgl_sender: WebGLMessageSender::new(ctx_data.sender),
webrender_image: ctx_data.image_key,
webgl_version,
glsl_version: ctx_data.glsl_version,
@ -4895,21 +4891,15 @@ pub enum TexSource {
pub struct WebGLCommandSender {
#[no_trace]
sender: WebGLChan,
#[no_trace]
waker: Option<Box<dyn EventLoopWaker>>,
}
impl WebGLCommandSender {
pub fn new(sender: WebGLChan, waker: Option<Box<dyn EventLoopWaker>>) -> WebGLCommandSender {
WebGLCommandSender { sender, waker }
pub fn new(sender: WebGLChan) -> WebGLCommandSender {
WebGLCommandSender { sender }
}
pub fn send(&self, msg: WebGLMsg) -> WebGLSendResult {
let result = self.sender.send(msg);
if let Some(ref waker) = self.waker {
waker.wake();
}
result
self.sender.send(msg)
}
}
@ -4917,34 +4907,19 @@ impl WebGLCommandSender {
pub(crate) struct WebGLMessageSender {
#[no_trace]
sender: WebGLMsgSender,
#[ignore_malloc_size_of = "traits are cumbersome"]
#[no_trace]
waker: Option<Box<dyn EventLoopWaker>>,
}
impl Clone for WebGLMessageSender {
fn clone(&self) -> WebGLMessageSender {
WebGLMessageSender {
sender: self.sender.clone(),
waker: self.waker.as_ref().map(|w| (*w).clone_box()),
}
}
}
impl WebGLMessageSender {
fn wake_after_send<F: FnOnce() -> WebGLSendResult>(&self, f: F) -> WebGLSendResult {
let result = f();
if let Some(ref waker) = self.waker {
waker.wake();
}
result
}
pub fn new(
sender: WebGLMsgSender,
waker: Option<Box<dyn EventLoopWaker>>,
) -> WebGLMessageSender {
WebGLMessageSender { sender, waker }
pub fn new(sender: WebGLMsgSender) -> WebGLMessageSender {
WebGLMessageSender { sender }
}
pub fn context_id(&self) -> WebGLContextId {
@ -4952,7 +4927,7 @@ impl WebGLMessageSender {
}
pub fn send(&self, msg: WebGLCommand, backtrace: WebGLCommandBacktrace) -> WebGLSendResult {
self.wake_after_send(|| self.sender.send(msg, backtrace))
self.sender.send(msg, backtrace)
}
pub fn send_resize(
@ -4960,11 +4935,11 @@ impl WebGLMessageSender {
size: Size2D<u32>,
sender: WebGLSender<Result<(), String>>,
) -> WebGLSendResult {
self.wake_after_send(|| self.sender.send_resize(size, sender))
self.sender.send_resize(size, sender)
}
pub fn send_remove(&self) -> WebGLSendResult {
self.wake_after_send(|| self.sender.send_remove())
self.sender.send_remove()
}
}