Remove get_ipc_sender from OffscreenCanvasRenderingContext2D (#35625)

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
This commit is contained in:
Samson 2025-02-24 09:23:13 +01:00 committed by GitHub
parent 47f6c50dd9
commit 9efe7ad45d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 7 additions and 36 deletions

View file

@ -117,10 +117,6 @@ impl CanvasRenderingContext2D {
let msg = CanvasMsg::FromLayout(FromLayoutMsg::SendData(sender), self.get_canvas_id()); let msg = CanvasMsg::FromLayout(FromLayoutMsg::SendData(sender), self.get_canvas_id());
let _ = self.canvas_state.get_ipc_renderer().send(msg); let _ = self.canvas_state.get_ipc_renderer().send(msg);
} }
pub(crate) fn get_ipc_renderer(&self) -> IpcSender<CanvasMsg> {
self.canvas_state.get_ipc_renderer().clone()
}
} }
pub(crate) trait LayoutCanvasRenderingContext2DHelpers { pub(crate) trait LayoutCanvasRenderingContext2DHelpers {

View file

@ -6,7 +6,7 @@ use std::cell::{Cell, RefCell};
use std::collections::HashMap; use std::collections::HashMap;
use std::rc::Rc; use std::rc::Rc;
use canvas_traits::canvas::{CanvasId, CanvasMsg, FromScriptMsg}; use canvas_traits::canvas::CanvasId;
use canvas_traits::webgl::{GLContextAttributes, WebGLVersion}; use canvas_traits::webgl::{GLContextAttributes, WebGLVersion};
use dom_struct::dom_struct; use dom_struct::dom_struct;
use euclid::default::Size2D; use euclid::default::Size2D;
@ -20,7 +20,6 @@ use ipc_channel::ipc::IpcSharedMemory;
use ipc_channel::ipc::{self as ipcchan}; use ipc_channel::ipc::{self as ipcchan};
use js::error::throw_type_error; use js::error::throw_type_error;
use js::rust::{HandleObject, HandleValue}; use js::rust::{HandleObject, HandleValue};
use profile_traits::ipc;
use script_layout_interface::{HTMLCanvasData, HTMLCanvasDataSource}; use script_layout_interface::{HTMLCanvasData, HTMLCanvasDataSource};
use script_traits::serializable::BlobImpl; use script_traits::serializable::BlobImpl;
#[cfg(feature = "webgpu")] #[cfg(feature = "webgpu")]
@ -401,17 +400,7 @@ impl HTMLCanvasElement {
}, },
#[cfg(feature = "webgpu")] #[cfg(feature = "webgpu")]
Some(CanvasContext::WebGPU(context)) => context.get_image_data_as_shared_memory(), Some(CanvasContext::WebGPU(context)) => context.get_image_data_as_shared_memory(),
Some(CanvasContext::Placeholder(context)) => { Some(CanvasContext::Placeholder(context)) => context.get_image_data_as_shared_memory(),
let (sender, receiver) =
ipc::channel(self.global().time_profiler_chan().clone()).unwrap();
let msg = CanvasMsg::FromScript(
FromScriptMsg::SendPixels(sender),
context.get_canvas_id(),
);
context.get_ipc_renderer().send(msg).unwrap();
Some(receiver.recv().unwrap())
},
None => None, None => None,
}; };

View file

@ -4,12 +4,10 @@
use std::cell::Cell; use std::cell::Cell;
use canvas_traits::canvas::{CanvasMsg, FromScriptMsg};
use dom_struct::dom_struct; use dom_struct::dom_struct;
use euclid::default::Size2D; use euclid::default::Size2D;
use ipc_channel::ipc::IpcSharedMemory; use ipc_channel::ipc::IpcSharedMemory;
use js::rust::{HandleObject, HandleValue}; use js::rust::{HandleObject, HandleValue};
use profile_traits::ipc;
use crate::dom::bindings::cell::{ref_filter_map, DomRefCell, Ref}; use crate::dom::bindings::cell::{ref_filter_map, DomRefCell, Ref};
use crate::dom::bindings::codegen::Bindings::OffscreenCanvasBinding::{ use crate::dom::bindings::codegen::Bindings::OffscreenCanvasBinding::{
@ -99,15 +97,7 @@ impl OffscreenCanvas {
let data = match self.context.borrow().as_ref() { let data = match self.context.borrow().as_ref() {
Some(OffscreenCanvasContext::OffscreenContext2d(context)) => { Some(OffscreenCanvasContext::OffscreenContext2d(context)) => {
let (sender, receiver) = context.get_image_data_as_shared_memory()
ipc::channel(self.global().time_profiler_chan().clone()).unwrap();
let msg = CanvasMsg::FromScript(
FromScriptMsg::SendPixels(sender),
context.get_canvas_id(),
);
context.get_ipc_renderer().send(msg).unwrap();
Some(receiver.recv().unwrap())
}, },
None => None, None => None,
}; };

View file

@ -5,10 +5,10 @@
use crate::dom::bindings::codegen::GenericBindings::CanvasRenderingContext2DBinding::CanvasRenderingContext2D_Binding::CanvasRenderingContext2DMethods; use crate::dom::bindings::codegen::GenericBindings::CanvasRenderingContext2DBinding::CanvasRenderingContext2D_Binding::CanvasRenderingContext2DMethods;
use crate::canvas_context::CanvasContext as _; use crate::canvas_context::CanvasContext as _;
use crate::dom::bindings::codegen::UnionTypes::HTMLCanvasElementOrOffscreenCanvas; use crate::dom::bindings::codegen::UnionTypes::HTMLCanvasElementOrOffscreenCanvas;
use canvas_traits::canvas::{Canvas2dMsg, CanvasId, CanvasMsg}; use canvas_traits::canvas::Canvas2dMsg;
use dom_struct::dom_struct; use dom_struct::dom_struct;
use euclid::default::Size2D; use euclid::default::Size2D;
use ipc_channel::ipc::IpcSender; use ipc_channel::ipc::IpcSharedMemory;
use crate::dom::bindings::codegen::Bindings::CanvasRenderingContext2DBinding::{ use crate::dom::bindings::codegen::Bindings::CanvasRenderingContext2DBinding::{
CanvasDirection, CanvasFillRule, CanvasImageSource, CanvasLineCap, CanvasLineJoin, CanvasDirection, CanvasFillRule, CanvasImageSource, CanvasLineCap, CanvasLineJoin,
@ -75,12 +75,8 @@ impl OffscreenCanvasRenderingContext2D {
self.context.origin_is_clean() self.context.origin_is_clean()
} }
pub(crate) fn get_canvas_id(&self) -> CanvasId { pub(crate) fn get_image_data_as_shared_memory(&self) -> Option<IpcSharedMemory> {
self.context.get_canvas_id() self.context.get_image_data_as_shared_memory()
}
pub(crate) fn get_ipc_renderer(&self) -> IpcSender<CanvasMsg> {
self.context.get_ipc_renderer()
} }
} }