mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
Auto merge of #5586 - pcwalton:no-broken-background-image-redux, r=glennw
r? @jdm <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/5586) <!-- Reviewable:end -->
This commit is contained in:
commit
77099b25d5
11 changed files with 135 additions and 38 deletions
|
@ -33,14 +33,12 @@ use canvas_traits::{FillOrStrokeStyle, LinearGradientStyle, RadialGradientStyle}
|
|||
use canvas_traits::{LineCapStyle, LineJoinStyle, CompositionOrBlending};
|
||||
use canvas::canvas_paint_task::CanvasPaintTask;
|
||||
|
||||
use net_traits::image::base::Image;
|
||||
use net_traits::image_cache_task::ImageCacheChan;
|
||||
use net_traits::image_cache_task::{ImageCacheChan, ImageResponse};
|
||||
use png::PixelsByColorType;
|
||||
|
||||
use num::{Float, ToPrimitive};
|
||||
use std::borrow::ToOwned;
|
||||
use std::cell::RefCell;
|
||||
use std::sync::{Arc};
|
||||
use std::sync::mpsc::{channel, Sender};
|
||||
|
||||
use util::str::DOMString;
|
||||
|
@ -260,8 +258,8 @@ impl CanvasRenderingContext2D {
|
|||
};
|
||||
|
||||
let img = match self.request_image_from_cache(url) {
|
||||
Some(img) => img,
|
||||
None => return None,
|
||||
ImageResponse::Loaded(img) => img,
|
||||
ImageResponse::PlaceholderLoaded(_) | ImageResponse::None => return None,
|
||||
};
|
||||
|
||||
let image_size = Size2D(img.width as f64, img.height as f64);
|
||||
|
@ -277,7 +275,7 @@ impl CanvasRenderingContext2D {
|
|||
return Some((image_data, image_size));
|
||||
}
|
||||
|
||||
fn request_image_from_cache(&self, url: Url) -> Option<Arc<Image>> {
|
||||
fn request_image_from_cache(&self, url: Url) -> ImageResponse {
|
||||
let canvas = self.canvas.root();
|
||||
let window = window_from_node(canvas.r()).root();
|
||||
let window = window.r();
|
||||
|
@ -285,7 +283,7 @@ impl CanvasRenderingContext2D {
|
|||
let (response_chan, response_port) = channel();
|
||||
image_cache.request_image(url, ImageCacheChan(response_chan), None);
|
||||
let result = response_port.recv().unwrap();
|
||||
result.image
|
||||
result.image_response
|
||||
}
|
||||
|
||||
fn create_drawable_rect(&self, x: f64, y: f64, w: f64, h: f64) -> Option<Rect<f32>> {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue