Remove RenderBox.get_image() and data.background_image; fix broken image drawing regression

Add TODO about Issue 84
This commit is contained in:
Brian J. Burg 2012-09-21 17:40:43 -07:00
parent 42cf023f63
commit a2c65cd075
2 changed files with 7 additions and 25 deletions

View file

@ -239,6 +239,7 @@ fn parse_html(scope: NodeScope,
let img_url = make_url(copy img_url_str, Some(copy *url));
d.image = Some(copy img_url);
// inform the image cache to load this, but don't store a handle.
// TODO (Issue #84) : don't prefetch if we are within a <noscript> tag.
image_cache_task.send(image_cache_task::Prefetch(move img_url));
}
}

View file

@ -71,14 +71,14 @@ padding, backgrounds. It is analogous to a CSS nonreplaced content box.
struct BoxLayoutData {
mut position: Rect<au>,
mut font_size: Length,
mut background_image: Option<ImageHolder>,
}
/* TODO: this should eventually be just 'position', and
merged into the base RenderBox struct */
fn BoxLayoutData() -> BoxLayoutData {
BoxLayoutData {
position : au::zero_rect(),
font_size : Px(0.0),
background_image : None,
}
}
@ -89,7 +89,7 @@ enum BoxData {
}
struct RenderBox {
/* references to children, parent */
/* references to children, parent inline flow boxes */
tree : tree::Tree<@RenderBox>,
/* originating DOM node */
node : Node,
@ -106,7 +106,7 @@ struct RenderBox {
fn RenderBox(id: int, node: Node, ctx: @FlowContext, kind: BoxData) -> RenderBox {
RenderBox {
/* will be set when box is parented */
/* will be set if box is parented */
tree : tree::empty(),
node : node,
ctx : ctx,
@ -221,25 +221,6 @@ impl @RenderBox {
self.content_box()
}
// This will be very unhappy if it is getting run in parallel with
// anything trying to read the background image
fn get_image() -> Option<ARC<~Image>> {
let mut image = None;
// Do a dance where we swap the ImageHolder out before we can
// get the image out of it because we can't match against it
// because holder.get_image() is not pure.
if (self.data.background_image).is_some() {
let mut temp = None;
temp <-> self.data.background_image;
let holder <- option::unwrap(temp);
image = holder.get_image();
self.data.background_image = Some(holder);
}
image
}
// TODO: to implement stacking contexts correctly, we need to
// create a set of display lists, one per each layer of a stacking
// context. (CSS 2.1, Section 9.9.1). Each box is passed the list
@ -290,8 +271,8 @@ impl @RenderBox {
},
// TODO: items for background, border, outline
GenericBox(*) => { },
ImageBox(*) => {
match self.get_image() {
ImageBox(i) => {
match i.get_image() {
Some(image) => list.push(~dl::Image(bounds, image)),
/* No image data at all? Okay, add some fallback content instead. */
None => {