mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
canvas: Don't panic if webrender isn't reachable.
This commit is contained in:
parent
04fae2fdca
commit
55fee1fb35
3 changed files with 7 additions and 4 deletions
|
@ -982,7 +982,10 @@ impl<'a> CanvasData<'a> {
|
||||||
updates.push(ImageUpdate::Update(image_key, descriptor, data));
|
updates.push(ImageUpdate::Update(image_key, descriptor, data));
|
||||||
},
|
},
|
||||||
None => {
|
None => {
|
||||||
let key = self.webrender_api.generate_key();
|
let key = match self.webrender_api.generate_key() {
|
||||||
|
Ok(key) => key,
|
||||||
|
Err(()) => return,
|
||||||
|
};
|
||||||
updates.push(ImageUpdate::Add(key, descriptor, data));
|
updates.push(ImageUpdate::Add(key, descriptor, data));
|
||||||
self.image_key = Some(key);
|
self.image_key = Some(key);
|
||||||
debug!("New image {:?}.", self.image_key);
|
debug!("New image {:?}.", self.image_key);
|
||||||
|
|
|
@ -26,7 +26,7 @@ pub enum ImageUpdate {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait WebrenderApi {
|
pub trait WebrenderApi {
|
||||||
fn generate_key(&self) -> webrender_api::ImageKey;
|
fn generate_key(&self) -> Result<webrender_api::ImageKey, ()>;
|
||||||
fn update_images(&self, updates: Vec<ImageUpdate>);
|
fn update_images(&self, updates: Vec<ImageUpdate>);
|
||||||
fn clone(&self) -> Box<dyn WebrenderApi>;
|
fn clone(&self) -> Box<dyn WebrenderApi>;
|
||||||
}
|
}
|
||||||
|
|
|
@ -949,12 +949,12 @@ impl gfx_traits::WebrenderApi for FontCacheWR {
|
||||||
struct CanvasWebrenderApi(CompositorProxy);
|
struct CanvasWebrenderApi(CompositorProxy);
|
||||||
|
|
||||||
impl canvas_paint_thread::WebrenderApi for CanvasWebrenderApi {
|
impl canvas_paint_thread::WebrenderApi for CanvasWebrenderApi {
|
||||||
fn generate_key(&self) -> webrender_api::ImageKey {
|
fn generate_key(&self) -> Result<webrender_api::ImageKey, ()> {
|
||||||
let (sender, receiver) = unbounded();
|
let (sender, receiver) = unbounded();
|
||||||
let _ = self.0.send(Msg::Webrender(WebrenderMsg::Canvas(
|
let _ = self.0.send(Msg::Webrender(WebrenderMsg::Canvas(
|
||||||
WebrenderCanvasMsg::GenerateKey(sender),
|
WebrenderCanvasMsg::GenerateKey(sender),
|
||||||
)));
|
)));
|
||||||
receiver.recv().unwrap()
|
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(Msg::Webrender(WebrenderMsg::Canvas(
|
let _ = self.0.send(Msg::Webrender(WebrenderMsg::Canvas(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue