mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
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:
parent
83a46f68db
commit
8255e8e318
7 changed files with 15 additions and 78 deletions
|
@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue