aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMs2ger <Ms2ger@gmail.com>2016-06-15 00:16:49 +0100
committerMs2ger <Ms2ger@gmail.com>2016-06-20 19:02:39 +0200
commitbea96f60e322dae5262c4024a0b3d65f469b2979 (patch)
treeac3e4d834647e6278c3b04d621b162f13cdb86ab
parent6aaf3e6a0153725c2c458b791cc18c72c1e46115 (diff)
downloadservo-bea96f60e322dae5262c4024a0b3d65f469b2979.tar.gz
servo-bea96f60e322dae5262c4024a0b3d65f469b2979.zip
Introduce PartialStyleAndLayoutData.
-rw-r--r--components/layout/layout_thread.rs5
-rw-r--r--components/layout/wrapper.rs4
-rw-r--r--components/script_layout_interface/lib.rs10
3 files changed, 14 insertions, 5 deletions
diff --git a/components/layout/layout_thread.rs b/components/layout/layout_thread.rs
index d0c27743667..64d37f889d4 100644
--- a/components/layout/layout_thread.rs
+++ b/components/layout/layout_thread.rs
@@ -49,13 +49,14 @@ use query::{process_node_overflow_request, process_resolved_style_request, proce
use script::layout_interface::{LayoutRPC, OffsetParentResponse, NodeOverflowResponse, MarginStyleResponse};
use script::layout_interface::{Msg, NewLayoutThreadInfo, Reflow, ReflowQueryType, ScriptReflow};
use script::reporter::CSSErrorReporter;
-use script_layout_interface::OpaqueStyleAndLayoutData;
use script_layout_interface::restyle_damage::{REPAINT, STORE_OVERFLOW, REFLOW_OUT_OF_FLOW, REFLOW};
+use script_layout_interface::{OpaqueStyleAndLayoutData, PartialStyleAndLayoutData};
use script_traits::{ConstellationControlMsg, LayoutControlMsg, LayoutMsg as ConstellationMsg};
use script_traits::{StackingContextScrollState, UntrustedNodeAddress};
use sequential;
use serde_json;
use std::borrow::ToOwned;
+use std::cell::RefCell;
use std::collections::HashMap;
use std::hash::BuildHasherDefault;
use std::ops::{Deref, DerefMut};
@@ -1480,7 +1481,7 @@ impl LayoutThread {
/// Handles a message to destroy layout data. Layout data must be destroyed on *this* thread
/// because the struct type is transmuted to a different type on the script side.
unsafe fn handle_reap_style_and_layout_data(&self, data: OpaqueStyleAndLayoutData) {
- let ptr: *mut () = *data.ptr;
+ let ptr: *mut RefCell<PartialStyleAndLayoutData> = *data.ptr;
let non_opaque: NonOpaqueStyleAndLayoutData = ptr as *mut _;
let _ = Box::from_raw(non_opaque);
}
diff --git a/components/layout/wrapper.rs b/components/layout/wrapper.rs
index 82c3d1416d5..88c001ca4d6 100644
--- a/components/layout/wrapper.rs
+++ b/components/layout/wrapper.rs
@@ -44,8 +44,8 @@ use script::layout_interface::{HTMLCanvasData, HTMLElementTypeId, LayoutCharacte
use script::layout_interface::{LayoutDocumentHelpers, LayoutElementHelpers, LayoutJS};
use script::layout_interface::{LayoutNodeHelpers, Node, NodeTypeId};
use script::layout_interface::{RawLayoutElementHelpers, Text, TrustedNodeAddress};
-use script_layout_interface::OpaqueStyleAndLayoutData;
use script_layout_interface::restyle_damage::RestyleDamage;
+use script_layout_interface::{OpaqueStyleAndLayoutData, PartialStyleAndLayoutData};
use selectors::matching::{DeclarationBlock, ElementFlags};
use selectors::parser::{AttrSelector, NamespaceConstraint};
use smallvec::VecLike;
@@ -127,7 +127,7 @@ impl<'ln> ServoLayoutNode<'ln> {
let ptr: NonOpaqueStyleAndLayoutData =
Box::into_raw(box RefCell::new(PrivateLayoutData::new()));
let opaque = OpaqueStyleAndLayoutData {
- ptr: unsafe { NonZero::new(ptr as *mut ()) }
+ ptr: unsafe { NonZero::new(ptr as *mut RefCell<PartialStyleAndLayoutData>) }
};
unsafe {
self.node.init_style_and_layout_data(opaque);
diff --git a/components/script_layout_interface/lib.rs b/components/script_layout_interface/lib.rs
index b2e3b6fd475..7c1a4e28e29 100644
--- a/components/script_layout_interface/lib.rs
+++ b/components/script_layout_interface/lib.rs
@@ -24,12 +24,20 @@ extern crate style;
pub mod restyle_damage;
use core::nonzero::NonZero;
+use restyle_damage::RestyleDamage;
+use std::cell::RefCell;
+use style::servo::PrivateStyleData;
+
+pub struct PartialStyleAndLayoutData {
+ pub style_data: PrivateStyleData,
+ pub restyle_damage: RestyleDamage,
+}
#[derive(Copy, Clone, HeapSizeOf)]
pub struct OpaqueStyleAndLayoutData {
#[ignore_heap_size_of = "TODO(#6910) Box value that should be counted but \
the type lives in layout"]
- pub ptr: NonZero<*mut ()>
+ pub ptr: NonZero<*mut RefCell<PartialStyleAndLayoutData>>
}
#[allow(unsafe_code)]