aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
authorbors-servo <metajack+bors@gmail.com>2015-07-05 21:39:12 -0600
committerbors-servo <metajack+bors@gmail.com>2015-07-05 21:39:12 -0600
commitcc73aad447f0455606a5a6005d31aa55334668a8 (patch)
tree88c95a498e0ad40fa7998d4595f9aa0e9ca8c77e /components/script/dom
parentdb9e29a5f3c3600dcdd5c2b4e5a3e1e0baf917d7 (diff)
parent1a014beb08b143d57f8d8f138cb47ef60213be6a (diff)
downloadservo-cc73aad447f0455606a5a6005d31aa55334668a8.tar.gz
servo-cc73aad447f0455606a5a6005d31aa55334668a8.zip
Auto merge of #6546 - michaelwu:slim-layoutdatawrapper, r=Ms2ger
Remove LayoutChan from LayoutDataWrapper Saves 32 bytes in Node. <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/6546) <!-- Reviewable:end -->
Diffstat (limited to 'components/script/dom')
-rw-r--r--components/script/dom/node.rs22
1 files changed, 8 insertions, 14 deletions
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs
index b69dd3fad46..2d009dd4159 100644
--- a/components/script/dom/node.rs
+++ b/components/script/dom/node.rs
@@ -191,7 +191,7 @@ impl NodeFlags {
impl Drop for Node {
#[allow(unsafe_code)]
fn drop(&mut self) {
- self.layout_data.dispose();
+ self.layout_data.dispose(self);
}
}
@@ -212,7 +212,6 @@ pub struct SharedLayoutData {
/// Encapsulates the abstract layout data.
pub struct LayoutData {
- chan: Option<LayoutChan>,
_shared_data: SharedLayoutData,
_data: NonZero<*const ()>,
}
@@ -234,17 +233,12 @@ impl LayoutDataRef {
}
/// Sends layout data, if any, back to the layout task to be destroyed.
- pub fn dispose(&self) {
+ pub fn dispose(&self, node: &Node) {
debug_assert!(task_state::get().is_script());
- if let Some(mut layout_data) = mem::replace(&mut *self.data_cell.borrow_mut(), None) {
- let layout_chan = layout_data.chan.take();
- match layout_chan {
- None => {}
- Some(chan) => {
- let LayoutChan(chan) = chan;
- chan.send(Msg::ReapLayoutData(layout_data)).unwrap()
- }
- }
+ if let Some(layout_data) = mem::replace(&mut *self.data_cell.borrow_mut(), None) {
+ let win = window_from_node(node);
+ let LayoutChan(chan) = win.layout_chan();
+ chan.send(Msg::ReapLayoutData(layout_data)).unwrap()
}
}
@@ -317,7 +311,7 @@ impl<'a> PrivateNodeHelpers for &'a Node {
node.r().set_flag(IS_IN_DOC, false);
vtable_for(&node.r()).unbind_from_tree(parent_in_doc);
}
- self.layout_data.dispose();
+ self.layout_data.dispose(self);
}
//
@@ -535,7 +529,7 @@ pub trait NodeHelpers {
impl<'a> NodeHelpers for &'a Node {
fn teardown(self) {
- self.layout_data.dispose();
+ self.layout_data.dispose(self);
for kid in self.children() {
kid.r().teardown();
}