mirror of
https://github.com/servo/servo.git
synced 2025-07-22 23:03:42 +01:00
Use non-IPC webrender API over explicit IPC channels.
This commit is contained in:
parent
a922c497fa
commit
564c16d754
77 changed files with 494 additions and 360 deletions
|
@ -33,6 +33,7 @@ use msg::constellation_msg::HistoryStateId;
|
|||
use servo_url::ServoUrl;
|
||||
use std::error::Error;
|
||||
use time::precise_time_ns;
|
||||
use webrender_api::ImageKey;
|
||||
|
||||
pub mod blob_url_store;
|
||||
pub mod filemanager_thread;
|
||||
|
@ -755,3 +756,32 @@ pub fn http_percent_encode(bytes: &[u8]) -> String {
|
|||
|
||||
percent_encoding::percent_encode(bytes, HTTP_VALUE).to_string()
|
||||
}
|
||||
|
||||
#[derive(Deserialize, Serialize)]
|
||||
pub enum WebrenderImageMsg {
|
||||
UpdateResources(Vec<webrender_api::ResourceUpdate>),
|
||||
GenerateImageKey(IpcSender<ImageKey>),
|
||||
}
|
||||
|
||||
#[derive(Clone, Deserialize, Serialize)]
|
||||
pub struct WebrenderIpcSender(IpcSender<WebrenderImageMsg>);
|
||||
|
||||
impl WebrenderIpcSender {
|
||||
pub fn new(sender: IpcSender<WebrenderImageMsg>) -> Self {
|
||||
Self(sender)
|
||||
}
|
||||
|
||||
pub fn generate_image_key(&self) -> ImageKey {
|
||||
let (sender, receiver) = ipc::channel().unwrap();
|
||||
self.0
|
||||
.send(WebrenderImageMsg::GenerateImageKey(sender))
|
||||
.expect("error sending image key generation");
|
||||
receiver.recv().expect("error receiving image key result")
|
||||
}
|
||||
|
||||
pub fn update_resources(&self, updates: Vec<webrender_api::ResourceUpdate>) {
|
||||
if let Err(e) = self.0.send(WebrenderImageMsg::UpdateResources(updates)) {
|
||||
warn!("Error sending image update: {}", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue