diff options
author | bors-servo <metajack+bors@gmail.com> | 2015-07-05 21:39:12 -0600 |
---|---|---|
committer | bors-servo <metajack+bors@gmail.com> | 2015-07-05 21:39:12 -0600 |
commit | cc73aad447f0455606a5a6005d31aa55334668a8 (patch) | |
tree | 88c95a498e0ad40fa7998d4595f9aa0e9ca8c77e /components/script/dom | |
parent | db9e29a5f3c3600dcdd5c2b4e5a3e1e0baf917d7 (diff) | |
parent | 1a014beb08b143d57f8d8f138cb47ef60213be6a (diff) | |
download | servo-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.rs | 22 |
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(); } |