geckolib: Fix geckolib build after style and layout changes

This commit is contained in:
Emilio Cobos Álvarez 2016-04-24 19:36:02 +02:00
parent 5577a083ec
commit 1a0175fdbb
No known key found for this signature in database
GPG key ID: 056B727BB9C1027C
4 changed files with 87 additions and 9 deletions

View file

@ -22,7 +22,7 @@ use util::workqueue::WorkQueue;
pub struct PerDocumentStyleData {
/// Rule processor.
pub stylist: Stylist,
pub stylist: Arc<Stylist>,
/// List of stylesheets, mirrored from Gecko.
pub stylesheets: Vec<Arc<Stylesheet>>,
@ -50,8 +50,8 @@ impl PerDocumentStyleData {
let num_threads = cmp::max(num_cpus::get() * 3 / 4, 1);
PerDocumentStyleData {
stylist: Stylist::new(device),
stylesheets: Vec::new(),
stylist: Arc::new(Stylist::new(device)),
stylesheets: vec![],
stylesheets_changed: true,
new_animations_sender: new_anims_sender,
new_animations_receiver: new_anims_receiver,

View file

@ -18,7 +18,7 @@ use std::ptr;
use std::slice;
use std::str::from_utf8_unchecked;
use std::sync::{Arc, Mutex};
use style::context::{ReflowGoal, StylistWrapper};
use style::context::{ReflowGoal};
use style::dom::{TDocument, TElement, TNode};
use style::error_reporting::StdoutErrorReporter;
use style::parallel;
@ -51,7 +51,8 @@ pub extern "C" fn Servo_RestyleDocument(doc: *mut RawGeckoDocument, raw_data: *m
// into a runtime-wide init hook at some point.
GeckoComputedValues::initial_values();
let _needs_dirtying = data.stylist.update(&data.stylesheets, data.stylesheets_changed);
let _needs_dirtying = Arc::get_mut(&mut data.stylist).unwrap()
.update(&data.stylesheets, data.stylesheets_changed);
data.stylesheets_changed = false;
let shared_style_context = SharedStyleContext {
@ -59,7 +60,7 @@ pub extern "C" fn Servo_RestyleDocument(doc: *mut RawGeckoDocument, raw_data: *m
screen_size_changed: false,
generation: 0,
goal: ReflowGoal::ForScriptQuery,
stylist: StylistWrapper(&data.stylist),
stylist: data.stylist.clone(),
new_animations_sender: Mutex::new(data.new_animations_sender.clone()),
running_animations: data.running_animations.clone(),
expired_animations: data.expired_animations.clone(),

View file

@ -232,12 +232,89 @@ impl SelectorImpl for GeckoSelectorImpl {
}
impl SelectorImplExt for GeckoSelectorImpl {
type ComputedValues = GeckoComputedValues;
#[inline]
fn each_eagerly_cascaded_pseudo_element<F>(mut fun: F)
fn is_eagerly_cascaded_pseudo_element(pseudo: &PseudoElement) -> bool {
match *pseudo {
PseudoElement::Before |
PseudoElement::After |
PseudoElement::FirstLine => true,
_ => false,
}
}
#[inline]
fn each_pseudo_element<F>(mut fun: F)
where F: FnMut(PseudoElement) {
fun(PseudoElement::Before);
fun(PseudoElement::After);
// TODO: probably a lot more are missing here
fun(PseudoElement::FirstLine);
fun(PseudoElement::MozNonElement);
fun(PseudoElement::MozAnonymousBlock);
fun(PseudoElement::MozAnonymousPositionedBlock);
fun(PseudoElement::MozMathMLAnonymousBlock);
fun(PseudoElement::MozXULAnonymousBlock);
fun(PseudoElement::MozHorizontalFramesetBorder);
fun(PseudoElement::MozVerticalFramesetBorder);
fun(PseudoElement::MozLineFrame);
fun(PseudoElement::MozButtonContent);
fun(PseudoElement::MozButtonLabel);
fun(PseudoElement::MozCellContent);
fun(PseudoElement::MozDropdownList);
fun(PseudoElement::MozFieldsetContent);
fun(PseudoElement::MozFramesetBlank);
fun(PseudoElement::MozDisplayComboboxControlFrame);
fun(PseudoElement::MozHTMLCanvasContent);
fun(PseudoElement::MozInlineTable);
fun(PseudoElement::MozTable);
fun(PseudoElement::MozTableCell);
fun(PseudoElement::MozTableColumnGroup);
fun(PseudoElement::MozTableColumn);
fun(PseudoElement::MozTableOuter);
fun(PseudoElement::MozTableRowGroup);
fun(PseudoElement::MozTableRow);
fun(PseudoElement::MozCanvas);
fun(PseudoElement::MozPageBreak);
fun(PseudoElement::MozPage);
fun(PseudoElement::MozPageContent);
fun(PseudoElement::MozPageSequence);
fun(PseudoElement::MozScrolledContent);
fun(PseudoElement::MozScrolledCanvas);
fun(PseudoElement::MozScrolledPageSequence);
fun(PseudoElement::MozColumnContent);
fun(PseudoElement::MozViewport);
fun(PseudoElement::MozViewportScroll);
fun(PseudoElement::MozAnonymousFlexItem);
fun(PseudoElement::MozAnonymousGridItem);
fun(PseudoElement::MozRuby);
fun(PseudoElement::MozRubyBase);
fun(PseudoElement::MozRubyBaseContainer);
fun(PseudoElement::MozRubyText);
fun(PseudoElement::MozRubyTextContainer);
fun(PseudoElement::MozTreeColumn);
fun(PseudoElement::MozTreeRow);
fun(PseudoElement::MozTreeSeparator);
fun(PseudoElement::MozTreeCell);
fun(PseudoElement::MozTreeIndentation);
fun(PseudoElement::MozTreeLine);
fun(PseudoElement::MozTreeTwisty);
fun(PseudoElement::MozTreeImage);
fun(PseudoElement::MozTreeCellText);
fun(PseudoElement::MozTreeCheckbox);
fun(PseudoElement::MozTreeProgressMeter);
fun(PseudoElement::MozTreeDropFeedback);
fun(PseudoElement::MozSVGMarkerAnonChild);
fun(PseudoElement::MozSVGOuterSVGAnonChild);
fun(PseudoElement::MozSVGForeignContent);
fun(PseudoElement::MozSVGText);
}
#[inline]

View file

@ -52,7 +52,7 @@ impl<'a> StandaloneStyleContext<'a> {
}
}
impl<'a> StyleContext<'a, GeckoSelectorImpl, GeckoComputedValues> for StandaloneStyleContext<'a> {
impl<'a> StyleContext<'a, GeckoSelectorImpl> for StandaloneStyleContext<'a> {
fn shared_context(&self) -> &'a SharedStyleContext {
&self.shared
}