servo: Merge #14622 - stylo: Track the last restyle generation properly (from emilio:last-restyle); r=bholley

I couldn't reproduce locally, but I believe this fixes:

https://bugzilla.mozilla.org/show_bug.cgi?id=1323890

r? @heycam

Source-Repo: https://github.com/servo/servo
Source-Revision: f6163c77b9ac979f8406ef6ffe90e8c8e4a054cc
This commit is contained in:
Emilio Cobos Álvarez 2016-12-17 14:40:33 -08:00
Родитель 7b2299345c
Коммит 950451a844
2 изменённых файлов: 11 добавлений и 1 удалений

Просмотреть файл

@ -25,6 +25,9 @@ pub struct PerDocumentStyleDataImpl {
/// Rule processor.
pub stylist: Arc<Stylist>,
/// Last restyle generation.
pub last_restyle_generation: u32,
/// List of stylesheets, mirrored from Gecko.
pub stylesheets: Vec<Arc<Stylesheet>>,
@ -64,6 +67,7 @@ impl PerDocumentStyleData {
PerDocumentStyleData(AtomicRefCell::new(PerDocumentStyleDataImpl {
stylist: Arc::new(Stylist::new(device)),
last_restyle_generation: 0,
stylesheets: vec![],
stylesheets_changed: true,
new_animations_sender: new_anims_sender,
@ -101,6 +105,12 @@ impl PerDocumentStyleDataImpl {
self.stylesheets_changed = false;
}
}
pub fn next_generation(&mut self) -> u32 {
self.last_restyle_generation =
self.last_restyle_generation.wrapping_add(1);
self.last_restyle_generation
}
}
unsafe impl HasFFI for PerDocumentStyleData {

Просмотреть файл

@ -106,7 +106,7 @@ fn create_shared_context(mut per_doc_data: &mut AtomicRefMut<PerDocumentStyleDat
// FIXME (bug 1303229): Use the actual viewport size here
viewport_size: Size2D::new(Au(0), Au(0)),
screen_size_changed: false,
generation: 0,
generation: per_doc_data.next_generation(),
goal: ReflowGoal::ForScriptQuery,
stylist: per_doc_data.stylist.clone(),
running_animations: per_doc_data.running_animations.clone(),