mirror of
https://github.com/servo/servo.git
synced 2025-06-22 16:18:59 +01:00
Rename messages forwarded from the constellation to the compositor (#30496)
The constellation forwards messages from other tasks to the compositor. Mainly, these are passed to WebRender. This change updates the names of these messages so it is clearer where they are coming from and where they are going.
This commit is contained in:
parent
aadf48bd4d
commit
28315ba48a
6 changed files with 110 additions and 66 deletions
|
@ -11,8 +11,9 @@ use std::rc::Rc;
|
||||||
|
|
||||||
use canvas::canvas_paint_thread::ImageUpdate;
|
use canvas::canvas_paint_thread::ImageUpdate;
|
||||||
use compositing_traits::{
|
use compositing_traits::{
|
||||||
CompositingReason, CompositionPipeline, CompositorMsg, CompositorReceiver, ConstellationMsg,
|
CanvasToCompositorMsg, CompositingReason, CompositionPipeline, CompositorMsg,
|
||||||
SendableFrameTree, WebrenderCanvasMsg, WebrenderFontMsg, WebrenderMsg,
|
CompositorReceiver, ConstellationMsg, FontToCompositorMsg, ForwardedToCompositorMsg,
|
||||||
|
SendableFrameTree,
|
||||||
};
|
};
|
||||||
use crossbeam_channel::Sender;
|
use crossbeam_channel::Sender;
|
||||||
use embedder_traits::Cursor;
|
use embedder_traits::Cursor;
|
||||||
|
@ -645,7 +646,7 @@ impl<Window: WindowMethods + ?Sized> IOCompositor<Window> {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
(CompositorMsg::Webrender(msg), ShutdownState::NotShuttingDown) => {
|
(CompositorMsg::Forwarded(msg), ShutdownState::NotShuttingDown) => {
|
||||||
self.handle_webrender_message(msg);
|
self.handle_webrender_message(msg);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -660,9 +661,11 @@ impl<Window: WindowMethods + ?Sized> IOCompositor<Window> {
|
||||||
|
|
||||||
/// Accept messages from content processes that need to be relayed to the WebRender
|
/// Accept messages from content processes that need to be relayed to the WebRender
|
||||||
/// instance in the parent process.
|
/// instance in the parent process.
|
||||||
fn handle_webrender_message(&mut self, msg: WebrenderMsg) {
|
fn handle_webrender_message(&mut self, msg: ForwardedToCompositorMsg) {
|
||||||
match msg {
|
match msg {
|
||||||
WebrenderMsg::Layout(script_traits::WebrenderMsg::SendInitialTransaction(pipeline)) => {
|
ForwardedToCompositorMsg::Layout(
|
||||||
|
script_traits::ScriptToCompositorMsg::SendInitialTransaction(pipeline),
|
||||||
|
) => {
|
||||||
self.waiting_on_pending_frame = true;
|
self.waiting_on_pending_frame = true;
|
||||||
let mut txn = Transaction::new();
|
let mut txn = Transaction::new();
|
||||||
txn.set_display_list(
|
txn.set_display_list(
|
||||||
|
@ -677,7 +680,9 @@ impl<Window: WindowMethods + ?Sized> IOCompositor<Window> {
|
||||||
.send_transaction(self.webrender_document, txn);
|
.send_transaction(self.webrender_document, txn);
|
||||||
},
|
},
|
||||||
|
|
||||||
WebrenderMsg::Layout(script_traits::WebrenderMsg::SendScrollNode(point, scroll_id)) => {
|
ForwardedToCompositorMsg::Layout(
|
||||||
|
script_traits::ScriptToCompositorMsg::SendScrollNode(point, scroll_id),
|
||||||
|
) => {
|
||||||
self.waiting_for_results_of_scroll = true;
|
self.waiting_for_results_of_scroll = true;
|
||||||
|
|
||||||
let mut txn = Transaction::new();
|
let mut txn = Transaction::new();
|
||||||
|
@ -687,11 +692,13 @@ impl<Window: WindowMethods + ?Sized> IOCompositor<Window> {
|
||||||
.send_transaction(self.webrender_document, txn);
|
.send_transaction(self.webrender_document, txn);
|
||||||
},
|
},
|
||||||
|
|
||||||
WebrenderMsg::Layout(script_traits::WebrenderMsg::SendDisplayList {
|
ForwardedToCompositorMsg::Layout(
|
||||||
|
script_traits::ScriptToCompositorMsg::SendDisplayList {
|
||||||
display_list_info,
|
display_list_info,
|
||||||
display_list_descriptor,
|
display_list_descriptor,
|
||||||
display_list_receiver,
|
display_list_receiver,
|
||||||
}) => {
|
},
|
||||||
|
) => {
|
||||||
let display_list_data = match display_list_receiver.recv() {
|
let display_list_data = match display_list_receiver.recv() {
|
||||||
Ok(display_list_data) => display_list_data,
|
Ok(display_list_data) => display_list_data,
|
||||||
_ => return warn!("Could not recieve WebRender display list."),
|
_ => return warn!("Could not recieve WebRender display list."),
|
||||||
|
@ -721,7 +728,7 @@ impl<Window: WindowMethods + ?Sized> IOCompositor<Window> {
|
||||||
.send_transaction(self.webrender_document, txn);
|
.send_transaction(self.webrender_document, txn);
|
||||||
},
|
},
|
||||||
|
|
||||||
WebrenderMsg::Layout(script_traits::WebrenderMsg::HitTest(
|
ForwardedToCompositorMsg::Layout(script_traits::ScriptToCompositorMsg::HitTest(
|
||||||
pipeline,
|
pipeline,
|
||||||
point,
|
point,
|
||||||
flags,
|
flags,
|
||||||
|
@ -743,12 +750,18 @@ impl<Window: WindowMethods + ?Sized> IOCompositor<Window> {
|
||||||
let _ = sender.send(result);
|
let _ = sender.send(result);
|
||||||
},
|
},
|
||||||
|
|
||||||
WebrenderMsg::Layout(script_traits::WebrenderMsg::GenerateImageKey(sender)) |
|
ForwardedToCompositorMsg::Layout(
|
||||||
WebrenderMsg::Net(net_traits::WebrenderImageMsg::GenerateImageKey(sender)) => {
|
script_traits::ScriptToCompositorMsg::GenerateImageKey(sender),
|
||||||
|
) |
|
||||||
|
ForwardedToCompositorMsg::Net(net_traits::NetToCompositorMsg::GenerateImageKey(
|
||||||
|
sender,
|
||||||
|
)) => {
|
||||||
let _ = sender.send(self.webrender_api.generate_image_key());
|
let _ = sender.send(self.webrender_api.generate_image_key());
|
||||||
},
|
},
|
||||||
|
|
||||||
WebrenderMsg::Layout(script_traits::WebrenderMsg::UpdateImages(updates)) => {
|
ForwardedToCompositorMsg::Layout(
|
||||||
|
script_traits::ScriptToCompositorMsg::UpdateImages(updates),
|
||||||
|
) => {
|
||||||
let mut txn = Transaction::new();
|
let mut txn = Transaction::new();
|
||||||
for update in updates {
|
for update in updates {
|
||||||
match update {
|
match update {
|
||||||
|
@ -773,14 +786,22 @@ impl<Window: WindowMethods + ?Sized> IOCompositor<Window> {
|
||||||
.send_transaction(self.webrender_document, txn);
|
.send_transaction(self.webrender_document, txn);
|
||||||
},
|
},
|
||||||
|
|
||||||
WebrenderMsg::Net(net_traits::WebrenderImageMsg::AddImage(key, desc, data)) => {
|
ForwardedToCompositorMsg::Net(net_traits::NetToCompositorMsg::AddImage(
|
||||||
|
key,
|
||||||
|
desc,
|
||||||
|
data,
|
||||||
|
)) => {
|
||||||
let mut txn = Transaction::new();
|
let mut txn = Transaction::new();
|
||||||
txn.add_image(key, desc, data, None);
|
txn.add_image(key, desc, data, None);
|
||||||
self.webrender_api
|
self.webrender_api
|
||||||
.send_transaction(self.webrender_document, txn);
|
.send_transaction(self.webrender_document, txn);
|
||||||
},
|
},
|
||||||
|
|
||||||
WebrenderMsg::Font(WebrenderFontMsg::AddFontInstance(font_key, size, sender)) => {
|
ForwardedToCompositorMsg::Font(FontToCompositorMsg::AddFontInstance(
|
||||||
|
font_key,
|
||||||
|
size,
|
||||||
|
sender,
|
||||||
|
)) => {
|
||||||
let key = self.webrender_api.generate_font_instance_key();
|
let key = self.webrender_api.generate_font_instance_key();
|
||||||
let mut txn = Transaction::new();
|
let mut txn = Transaction::new();
|
||||||
txn.add_font_instance(key, font_key, size, None, None, Vec::new());
|
txn.add_font_instance(key, font_key, size, None, None, Vec::new());
|
||||||
|
@ -789,7 +810,7 @@ impl<Window: WindowMethods + ?Sized> IOCompositor<Window> {
|
||||||
let _ = sender.send(key);
|
let _ = sender.send(key);
|
||||||
},
|
},
|
||||||
|
|
||||||
WebrenderMsg::Font(WebrenderFontMsg::AddFont(data, sender)) => {
|
ForwardedToCompositorMsg::Font(FontToCompositorMsg::AddFont(data, sender)) => {
|
||||||
let font_key = self.webrender_api.generate_font_key();
|
let font_key = self.webrender_api.generate_font_key();
|
||||||
let mut txn = Transaction::new();
|
let mut txn = Transaction::new();
|
||||||
match data {
|
match data {
|
||||||
|
@ -801,11 +822,11 @@ impl<Window: WindowMethods + ?Sized> IOCompositor<Window> {
|
||||||
let _ = sender.send(font_key);
|
let _ = sender.send(font_key);
|
||||||
},
|
},
|
||||||
|
|
||||||
WebrenderMsg::Canvas(WebrenderCanvasMsg::GenerateKey(sender)) => {
|
ForwardedToCompositorMsg::Canvas(CanvasToCompositorMsg::GenerateKey(sender)) => {
|
||||||
let _ = sender.send(self.webrender_api.generate_image_key());
|
let _ = sender.send(self.webrender_api.generate_image_key());
|
||||||
},
|
},
|
||||||
|
|
||||||
WebrenderMsg::Canvas(WebrenderCanvasMsg::UpdateImages(updates)) => {
|
ForwardedToCompositorMsg::Canvas(CanvasToCompositorMsg::UpdateImages(updates)) => {
|
||||||
let mut txn = Transaction::new();
|
let mut txn = Transaction::new();
|
||||||
for update in updates {
|
for update in updates {
|
||||||
match update {
|
match update {
|
||||||
|
|
|
@ -18,9 +18,10 @@ use ipc_channel::ipc::IpcSender;
|
||||||
use log::warn;
|
use log::warn;
|
||||||
use msg::constellation_msg::{PipelineId, TopLevelBrowsingContextId};
|
use msg::constellation_msg::{PipelineId, TopLevelBrowsingContextId};
|
||||||
use net_traits::image::base::Image;
|
use net_traits::image::base::Image;
|
||||||
|
use net_traits::NetToCompositorMsg;
|
||||||
use script_traits::{
|
use script_traits::{
|
||||||
AnimationState, ConstellationControlMsg, EventResult, LayoutControlMsg, MouseButton,
|
AnimationState, ConstellationControlMsg, EventResult, LayoutControlMsg, MouseButton,
|
||||||
MouseEventType,
|
MouseEventType, ScriptToCompositorMsg,
|
||||||
};
|
};
|
||||||
use style_traits::CSSPixel;
|
use style_traits::CSSPixel;
|
||||||
use webrender_api::units::{DeviceIntPoint, DeviceIntSize};
|
use webrender_api::units::{DeviceIntPoint, DeviceIntSize};
|
||||||
|
@ -148,8 +149,9 @@ pub enum CompositorMsg {
|
||||||
/// Get screen available size.
|
/// Get screen available size.
|
||||||
GetScreenAvailSize(IpcSender<DeviceIntSize>),
|
GetScreenAvailSize(IpcSender<DeviceIntSize>),
|
||||||
|
|
||||||
/// Webrender operations requested from non-compositor threads.
|
/// Messages forwarded to the compositor by the constellation from other crates. These
|
||||||
Webrender(WebrenderMsg),
|
/// messages are mainly passed on from the compositor to WebRender.
|
||||||
|
Forwarded(ForwardedToCompositorMsg),
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct SendableFrameTree {
|
pub struct SendableFrameTree {
|
||||||
|
@ -166,21 +168,22 @@ pub struct CompositionPipeline {
|
||||||
pub layout_chan: IpcSender<LayoutControlMsg>,
|
pub layout_chan: IpcSender<LayoutControlMsg>,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub enum WebrenderFontMsg {
|
pub enum FontToCompositorMsg {
|
||||||
AddFontInstance(FontKey, f32, Sender<FontInstanceKey>),
|
AddFontInstance(FontKey, f32, Sender<FontInstanceKey>),
|
||||||
AddFont(gfx_traits::FontData, Sender<FontKey>),
|
AddFont(gfx_traits::FontData, Sender<FontKey>),
|
||||||
}
|
}
|
||||||
|
|
||||||
pub enum WebrenderCanvasMsg {
|
pub enum CanvasToCompositorMsg {
|
||||||
GenerateKey(Sender<ImageKey>),
|
GenerateKey(Sender<ImageKey>),
|
||||||
UpdateImages(Vec<ImageUpdate>),
|
UpdateImages(Vec<ImageUpdate>),
|
||||||
}
|
}
|
||||||
|
|
||||||
pub enum WebrenderMsg {
|
/// Messages forwarded by the Constellation to the Compositor.
|
||||||
Layout(script_traits::WebrenderMsg),
|
pub enum ForwardedToCompositorMsg {
|
||||||
Net(net_traits::WebrenderImageMsg),
|
Layout(ScriptToCompositorMsg),
|
||||||
Font(WebrenderFontMsg),
|
Net(NetToCompositorMsg),
|
||||||
Canvas(WebrenderCanvasMsg),
|
Font(FontToCompositorMsg),
|
||||||
|
Canvas(CanvasToCompositorMsg),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Debug for CompositorMsg {
|
impl Debug for CompositorMsg {
|
||||||
|
@ -206,7 +209,7 @@ impl Debug for CompositorMsg {
|
||||||
CompositorMsg::GetClientWindow(..) => write!(f, "GetClientWindow"),
|
CompositorMsg::GetClientWindow(..) => write!(f, "GetClientWindow"),
|
||||||
CompositorMsg::GetScreenSize(..) => write!(f, "GetScreenSize"),
|
CompositorMsg::GetScreenSize(..) => write!(f, "GetScreenSize"),
|
||||||
CompositorMsg::GetScreenAvailSize(..) => write!(f, "GetScreenAvailSize"),
|
CompositorMsg::GetScreenAvailSize(..) => write!(f, "GetScreenAvailSize"),
|
||||||
CompositorMsg::Webrender(..) => write!(f, "Webrender"),
|
CompositorMsg::Forwarded(..) => write!(f, "Webrender"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -104,8 +104,8 @@ use canvas_traits::canvas::{CanvasId, CanvasMsg};
|
||||||
use canvas_traits::webgl::WebGLThreads;
|
use canvas_traits::webgl::WebGLThreads;
|
||||||
use canvas_traits::ConstellationCanvasMsg;
|
use canvas_traits::ConstellationCanvasMsg;
|
||||||
use compositing_traits::{
|
use compositing_traits::{
|
||||||
CompositorMsg, CompositorProxy, ConstellationMsg as FromCompositorMsg, SendableFrameTree,
|
CompositorMsg, CompositorProxy, ConstellationMsg as FromCompositorMsg,
|
||||||
WebrenderMsg,
|
ForwardedToCompositorMsg, SendableFrameTree,
|
||||||
};
|
};
|
||||||
use crossbeam_channel::{after, never, select, unbounded, Receiver, Sender};
|
use crossbeam_channel::{after, never, select, unbounded, Receiver, Sender};
|
||||||
use devtools_traits::{
|
use devtools_traits::{
|
||||||
|
@ -716,8 +716,10 @@ where
|
||||||
ROUTER.add_route(
|
ROUTER.add_route(
|
||||||
webrender_ipc_receiver.to_opaque(),
|
webrender_ipc_receiver.to_opaque(),
|
||||||
Box::new(move |message| {
|
Box::new(move |message| {
|
||||||
let _ = compositor_proxy.send(CompositorMsg::Webrender(
|
let _ = compositor_proxy.send(CompositorMsg::Forwarded(
|
||||||
WebrenderMsg::Layout(message.to().expect("conversion failure")),
|
ForwardedToCompositorMsg::Layout(
|
||||||
|
message.to().expect("conversion failure"),
|
||||||
|
),
|
||||||
));
|
));
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
@ -726,9 +728,11 @@ where
|
||||||
ROUTER.add_route(
|
ROUTER.add_route(
|
||||||
webrender_image_ipc_receiver.to_opaque(),
|
webrender_image_ipc_receiver.to_opaque(),
|
||||||
Box::new(move |message| {
|
Box::new(move |message| {
|
||||||
let _ = compositor_proxy.send(CompositorMsg::Webrender(WebrenderMsg::Net(
|
let _ = compositor_proxy.send(CompositorMsg::Forwarded(
|
||||||
|
ForwardedToCompositorMsg::Net(
|
||||||
message.to().expect("conversion failure"),
|
message.to().expect("conversion failure"),
|
||||||
)));
|
),
|
||||||
|
));
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -823,23 +823,23 @@ pub fn http_percent_encode(bytes: &[u8]) -> String {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Serialize)]
|
#[derive(Deserialize, Serialize)]
|
||||||
pub enum WebrenderImageMsg {
|
pub enum NetToCompositorMsg {
|
||||||
AddImage(ImageKey, ImageDescriptor, ImageData),
|
AddImage(ImageKey, ImageDescriptor, ImageData),
|
||||||
GenerateImageKey(IpcSender<ImageKey>),
|
GenerateImageKey(IpcSender<ImageKey>),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Deserialize, Serialize)]
|
#[derive(Clone, Deserialize, Serialize)]
|
||||||
pub struct WebrenderIpcSender(IpcSender<WebrenderImageMsg>);
|
pub struct WebrenderIpcSender(IpcSender<NetToCompositorMsg>);
|
||||||
|
|
||||||
impl WebrenderIpcSender {
|
impl WebrenderIpcSender {
|
||||||
pub fn new(sender: IpcSender<WebrenderImageMsg>) -> Self {
|
pub fn new(sender: IpcSender<NetToCompositorMsg>) -> Self {
|
||||||
Self(sender)
|
Self(sender)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn generate_image_key(&self) -> ImageKey {
|
pub fn generate_image_key(&self) -> ImageKey {
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
self.0
|
self.0
|
||||||
.send(WebrenderImageMsg::GenerateImageKey(sender))
|
.send(NetToCompositorMsg::GenerateImageKey(sender))
|
||||||
.expect("error sending image key generation");
|
.expect("error sending image key generation");
|
||||||
receiver.recv().expect("error receiving image key result")
|
receiver.recv().expect("error receiving image key result")
|
||||||
}
|
}
|
||||||
|
@ -847,7 +847,7 @@ impl WebrenderIpcSender {
|
||||||
pub fn add_image(&self, key: ImageKey, descriptor: ImageDescriptor, data: ImageData) {
|
pub fn add_image(&self, key: ImageKey, descriptor: ImageDescriptor, data: ImageData) {
|
||||||
if let Err(e) = self
|
if let Err(e) = self
|
||||||
.0
|
.0
|
||||||
.send(WebrenderImageMsg::AddImage(key, descriptor, data))
|
.send(NetToCompositorMsg::AddImage(key, descriptor, data))
|
||||||
{
|
{
|
||||||
warn!("Error sending image update: {}", e);
|
warn!("Error sending image update: {}", e);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1116,7 +1116,7 @@ pub struct CompositorHitTestResult {
|
||||||
|
|
||||||
/// The set of WebRender operations that can be initiated by the content process.
|
/// The set of WebRender operations that can be initiated by the content process.
|
||||||
#[derive(Deserialize, Serialize)]
|
#[derive(Deserialize, Serialize)]
|
||||||
pub enum WebrenderMsg {
|
pub enum ScriptToCompositorMsg {
|
||||||
/// Inform WebRender of the existence of this pipeline.
|
/// Inform WebRender of the existence of this pipeline.
|
||||||
SendInitialTransaction(WebRenderPipelineId),
|
SendInitialTransaction(WebRenderPipelineId),
|
||||||
/// Perform a scroll operation.
|
/// Perform a scroll operation.
|
||||||
|
@ -1147,24 +1147,30 @@ pub enum WebrenderMsg {
|
||||||
|
|
||||||
#[derive(Clone, Deserialize, Serialize)]
|
#[derive(Clone, Deserialize, Serialize)]
|
||||||
/// A mechanism to communicate with the parent process' WebRender instance.
|
/// A mechanism to communicate with the parent process' WebRender instance.
|
||||||
pub struct WebrenderIpcSender(IpcSender<WebrenderMsg>);
|
pub struct WebrenderIpcSender(IpcSender<ScriptToCompositorMsg>);
|
||||||
|
|
||||||
impl WebrenderIpcSender {
|
impl WebrenderIpcSender {
|
||||||
/// Create a new WebrenderIpcSender object that wraps the provided channel sender.
|
/// Create a new WebrenderIpcSender object that wraps the provided channel sender.
|
||||||
pub fn new(sender: IpcSender<WebrenderMsg>) -> Self {
|
pub fn new(sender: IpcSender<ScriptToCompositorMsg>) -> Self {
|
||||||
Self(sender)
|
Self(sender)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Inform WebRender of the existence of this pipeline.
|
/// Inform WebRender of the existence of this pipeline.
|
||||||
pub fn send_initial_transaction(&self, pipeline: WebRenderPipelineId) {
|
pub fn send_initial_transaction(&self, pipeline: WebRenderPipelineId) {
|
||||||
if let Err(e) = self.0.send(WebrenderMsg::SendInitialTransaction(pipeline)) {
|
if let Err(e) = self
|
||||||
|
.0
|
||||||
|
.send(ScriptToCompositorMsg::SendInitialTransaction(pipeline))
|
||||||
|
{
|
||||||
warn!("Error sending initial transaction: {}", e);
|
warn!("Error sending initial transaction: {}", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Perform a scroll operation.
|
/// Perform a scroll operation.
|
||||||
pub fn send_scroll_node(&self, point: LayoutPoint, scroll_id: ExternalScrollId) {
|
pub fn send_scroll_node(&self, point: LayoutPoint, scroll_id: ExternalScrollId) {
|
||||||
if let Err(e) = self.0.send(WebrenderMsg::SendScrollNode(point, scroll_id)) {
|
if let Err(e) = self
|
||||||
|
.0
|
||||||
|
.send(ScriptToCompositorMsg::SendScrollNode(point, scroll_id))
|
||||||
|
{
|
||||||
warn!("Error sending scroll node: {}", e);
|
warn!("Error sending scroll node: {}", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1177,7 +1183,7 @@ impl WebrenderIpcSender {
|
||||||
) {
|
) {
|
||||||
let (display_list_data, display_list_descriptor) = list.into_data();
|
let (display_list_data, display_list_descriptor) = list.into_data();
|
||||||
let (display_list_sender, display_list_receiver) = ipc::bytes_channel().unwrap();
|
let (display_list_sender, display_list_receiver) = ipc::bytes_channel().unwrap();
|
||||||
if let Err(e) = self.0.send(WebrenderMsg::SendDisplayList {
|
if let Err(e) = self.0.send(ScriptToCompositorMsg::SendDisplayList {
|
||||||
display_list_info,
|
display_list_info,
|
||||||
display_list_descriptor,
|
display_list_descriptor,
|
||||||
display_list_receiver,
|
display_list_receiver,
|
||||||
|
@ -1200,7 +1206,9 @@ impl WebrenderIpcSender {
|
||||||
) -> Vec<CompositorHitTestResult> {
|
) -> Vec<CompositorHitTestResult> {
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
self.0
|
self.0
|
||||||
.send(WebrenderMsg::HitTest(pipeline, point, flags, sender))
|
.send(ScriptToCompositorMsg::HitTest(
|
||||||
|
pipeline, point, flags, sender,
|
||||||
|
))
|
||||||
.expect("error sending hit test");
|
.expect("error sending hit test");
|
||||||
receiver.recv().expect("error receiving hit test result")
|
receiver.recv().expect("error receiving hit test result")
|
||||||
}
|
}
|
||||||
|
@ -1209,7 +1217,7 @@ impl WebrenderIpcSender {
|
||||||
pub fn generate_image_key(&self) -> Result<ImageKey, ()> {
|
pub fn generate_image_key(&self) -> Result<ImageKey, ()> {
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
self.0
|
self.0
|
||||||
.send(WebrenderMsg::GenerateImageKey(sender))
|
.send(ScriptToCompositorMsg::GenerateImageKey(sender))
|
||||||
.map_err(|_| ())?;
|
.map_err(|_| ())?;
|
||||||
receiver.recv().map_err(|_| ())
|
receiver.recv().map_err(|_| ())
|
||||||
}
|
}
|
||||||
|
@ -1249,7 +1257,7 @@ impl WebrenderIpcSender {
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
if let Err(e) = self.0.send(WebrenderMsg::UpdateImages(updates)) {
|
if let Err(e) = self.0.send(ScriptToCompositorMsg::UpdateImages(updates)) {
|
||||||
warn!("error sending image updates: {}", e);
|
warn!("error sending image updates: {}", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,8 +32,8 @@ use canvas_traits::webgl::WebGLThreads;
|
||||||
use compositing::windowing::{EmbedderEvent, EmbedderMethods, WindowMethods};
|
use compositing::windowing::{EmbedderEvent, EmbedderMethods, WindowMethods};
|
||||||
use compositing::{IOCompositor, InitialCompositorState, ShutdownState};
|
use compositing::{IOCompositor, InitialCompositorState, ShutdownState};
|
||||||
use compositing_traits::{
|
use compositing_traits::{
|
||||||
CompositingReason, CompositorMsg, CompositorProxy, CompositorReceiver, ConstellationMsg,
|
CanvasToCompositorMsg, CompositingReason, CompositorMsg, CompositorProxy, CompositorReceiver,
|
||||||
WebrenderCanvasMsg, WebrenderFontMsg, WebrenderMsg,
|
ConstellationMsg, FontToCompositorMsg, ForwardedToCompositorMsg,
|
||||||
};
|
};
|
||||||
#[cfg(all(
|
#[cfg(all(
|
||||||
not(target_os = "windows"),
|
not(target_os = "windows"),
|
||||||
|
@ -897,15 +897,19 @@ struct FontCacheWR(CompositorProxy);
|
||||||
impl gfx_traits::WebrenderApi for FontCacheWR {
|
impl gfx_traits::WebrenderApi for FontCacheWR {
|
||||||
fn add_font_instance(&self, font_key: FontKey, size: f32) -> FontInstanceKey {
|
fn add_font_instance(&self, font_key: FontKey, size: f32) -> FontInstanceKey {
|
||||||
let (sender, receiver) = unbounded();
|
let (sender, receiver) = unbounded();
|
||||||
let _ = self.0.send(CompositorMsg::Webrender(WebrenderMsg::Font(
|
let _ = self
|
||||||
WebrenderFontMsg::AddFontInstance(font_key, size, sender),
|
.0
|
||||||
|
.send(CompositorMsg::Forwarded(ForwardedToCompositorMsg::Font(
|
||||||
|
FontToCompositorMsg::AddFontInstance(font_key, size, sender),
|
||||||
)));
|
)));
|
||||||
receiver.recv().unwrap()
|
receiver.recv().unwrap()
|
||||||
}
|
}
|
||||||
fn add_font(&self, data: gfx_traits::FontData) -> FontKey {
|
fn add_font(&self, data: gfx_traits::FontData) -> FontKey {
|
||||||
let (sender, receiver) = unbounded();
|
let (sender, receiver) = unbounded();
|
||||||
let _ = self.0.send(CompositorMsg::Webrender(WebrenderMsg::Font(
|
let _ = self
|
||||||
WebrenderFontMsg::AddFont(data, sender),
|
.0
|
||||||
|
.send(CompositorMsg::Forwarded(ForwardedToCompositorMsg::Font(
|
||||||
|
FontToCompositorMsg::AddFont(data, sender),
|
||||||
)));
|
)));
|
||||||
receiver.recv().unwrap()
|
receiver.recv().unwrap()
|
||||||
}
|
}
|
||||||
|
@ -917,14 +921,18 @@ struct CanvasWebrenderApi(CompositorProxy);
|
||||||
impl canvas_paint_thread::WebrenderApi for CanvasWebrenderApi {
|
impl canvas_paint_thread::WebrenderApi for CanvasWebrenderApi {
|
||||||
fn generate_key(&self) -> Result<ImageKey, ()> {
|
fn generate_key(&self) -> Result<ImageKey, ()> {
|
||||||
let (sender, receiver) = unbounded();
|
let (sender, receiver) = unbounded();
|
||||||
let _ = self.0.send(CompositorMsg::Webrender(WebrenderMsg::Canvas(
|
let _ = self
|
||||||
WebrenderCanvasMsg::GenerateKey(sender),
|
.0
|
||||||
|
.send(CompositorMsg::Forwarded(ForwardedToCompositorMsg::Canvas(
|
||||||
|
CanvasToCompositorMsg::GenerateKey(sender),
|
||||||
)));
|
)));
|
||||||
receiver.recv().map_err(|_| ())
|
receiver.recv().map_err(|_| ())
|
||||||
}
|
}
|
||||||
fn update_images(&self, updates: Vec<canvas_paint_thread::ImageUpdate>) {
|
fn update_images(&self, updates: Vec<canvas_paint_thread::ImageUpdate>) {
|
||||||
let _ = self.0.send(CompositorMsg::Webrender(WebrenderMsg::Canvas(
|
let _ = self
|
||||||
WebrenderCanvasMsg::UpdateImages(updates),
|
.0
|
||||||
|
.send(CompositorMsg::Forwarded(ForwardedToCompositorMsg::Canvas(
|
||||||
|
CanvasToCompositorMsg::UpdateImages(updates),
|
||||||
)));
|
)));
|
||||||
}
|
}
|
||||||
fn clone(&self) -> Box<dyn canvas_paint_thread::WebrenderApi> {
|
fn clone(&self) -> Box<dyn canvas_paint_thread::WebrenderApi> {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue