Closed
Bug 1388298
Opened 7 years ago
Closed 7 years ago
stylo: Add a ServoRestyleManager API that processes all invalidations on the main thread.
Categories
(Core :: CSS Parsing and Computation, enhancement, P4)
Core
CSS Parsing and Computation
Tracking
()
RESOLVED
FIXED
mozilla57
Tracking | Status | |
---|---|---|
firefox57 | --- | fixed |
People
(Reporter: emilio, Assigned: emilio)
References
Details
Attachments
(2 files)
(deleted),
text/x-review-board-request
|
emilio
:
review+
|
Details |
(deleted),
patch
|
Details | Diff | Splinter Review |
Updated•7 years ago
|
Priority: -- → P4
Comment hidden (mozreview-request) |
Assignee | ||
Comment 2•7 years ago
|
||
mozreview-review |
Comment on attachment 8900664 [details]
Bug 1388298 - Add an API to process all invalidations on the main thread.
https://reviewboard.mozilla.org/r/172082/#review177364
::: servo/ports/geckolib/glue.rs:3663
(Diff revision 1)
> + let per_doc_data = PerDocumentStyleData::from_ffi(set).borrow();
> + let shared_style_context = create_shared_context(&global_style_data,
> + &guard,
> + &per_doc_data,
> + TraversalFlags::empty(),
> + unsafe { &*snapshots });
It'd be nice not to do this work only once... But probably not a huge deal. We can improve it if it becomes hot.
::: servo/ports/geckolib/glue.rs:3664
(Diff revision 1)
> + let shared_style_context = create_shared_context(&global_style_data,
> + &guard,
> + &per_doc_data,
> + TraversalFlags::empty(),
> + unsafe { &*snapshots });
> + let element = GeckoElement(element);
Let's:
`debug_assert!(element.has_snapshot())`.
And also:
`debug_assert!(!element.handled_snapshot())`.
::: servo/ports/geckolib/glue.rs:3666
(Diff revision 1)
> + &per_doc_data,
> + TraversalFlags::empty(),
> + unsafe { &*snapshots });
> + let element = GeckoElement(element);
> + let mut data = element.mutate_data();
> + let mut data = data.as_mut().map(|d| &mut **d);
nit: You can probably assert that the element has data here...
Attachment #8900664 -
Flags: review?(emilio+bugs) → review+
Assignee | ||
Comment 3•7 years ago
|
||
mozreview-review-reply |
Comment on attachment 8900664 [details]
Bug 1388298 - Add an API to process all invalidations on the main thread.
https://reviewboard.mozilla.org/r/172082/#review177364
> It'd be nice not to do this work only once... But probably not a huge deal. We can improve it if it becomes hot.
Err, to do this work only once, I meant :)
Comment hidden (mozreview-request) |
Comment 5•7 years ago
|
||
hg error in cmd: hg push -r tip ssh://hg.mozilla.org/integration/autoland: pushing to ssh://hg.mozilla.org/integration/autoland
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: added 1 changesets with 4 changes to 4 files
remote: (4b95ebddff8b modifies servo/ports/geckolib/glue.rs from Servo; not enforcing peer review)
remote: (1 changesets contain changes to protected servo/ directory: 4b95ebddff8b)
remote: ************************************************************************
remote: you do not have permissions to modify files under servo/
remote:
remote: the servo/ directory is kept in sync with the canonical upstream
remote: repository at https://github.com/servo/servo
remote:
remote: changes to servo/ are only allowed by the syncing tool and by sheriffs
remote: performing cross-repository "merges"
remote:
remote: to make changes to servo/, submit a Pull Request against the servo/servo
remote: GitHub project
remote: ************************************************************************
remote: transaction abort!
remote: rollback completed
remote: pretxnchangegroup.e_prevent_vendored hook failed
abort: push failed on remote
Keywords: checkin-needed
Comment 6•7 years ago
|
||
Unfortunately you have to manually split the patch up into two -- one for the Gecko changes to land here, and one for the Servo changes, that you'll need to file a PR for on GitHub. Once the Servo part merges, you can click autoland here to land the Gecko-only part.
Flags: needinfo?(wpan)
Comment 7•7 years ago
|
||
hg error in cmd: hg push -r tip ssh://hg.mozilla.org/integration/autoland: pushing to ssh://hg.mozilla.org/integration/autoland
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: added 1 changesets with 4 changes to 4 files
remote: (d54b504fe5f0 modifies servo/ports/geckolib/glue.rs from Servo; not enforcing peer review)
remote: (1 changesets contain changes to protected servo/ directory: d54b504fe5f0)
remote: ************************************************************************
remote: you do not have permissions to modify files under servo/
remote:
remote: the servo/ directory is kept in sync with the canonical upstream
remote: repository at https://github.com/servo/servo
remote:
remote: changes to servo/ are only allowed by the syncing tool and by sheriffs
remote: performing cross-repository "merges"
remote:
remote: to make changes to servo/, submit a Pull Request against the servo/servo
remote: GitHub project
remote: ************************************************************************
remote: transaction abort!
remote: rollback completed
remote: pretxnchangegroup.e_prevent_vendored hook failed
abort: push failed on remote
Updated•7 years ago
|
Keywords: checkin-needed
Comment hidden (mozreview-request) |
Not sure why CI failed though.
Flags: needinfo?(wpan)
Comment 10•7 years ago
|
||
Don't know. Maybe because the tree was closed earlier and homu got confused. I told it to retry.
Comment 11•7 years ago
|
||
Pushed by ecoal95@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/4142a9865b92
Add an API to process all invalidations on the main thread. r=emilio
Assignee | ||
Comment 12•7 years ago
|
||
I pushed this since this landed and this looked good. However, I think we may've missed something, which is propagating the dirty bits up the tree. So if you're experimenting with it, probably you need to fix that.
Comment 13•7 years ago
|
||
bugherder |
Status: NEW → RESOLVED
Closed: 7 years ago
status-firefox57:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla57
I guess this should do the work, am I correct? Probably need another bug for this though.
Attachment #8901721 -
Flags: feedback?(emilio)
Assignee | ||
Comment 15•7 years ago
|
||
Comment on attachment 8901721 [details] [diff] [review]
x.patch
Review of attachment 8901721 [details] [diff] [review]:
-----------------------------------------------------------------
Almost but not quite. You need to also check whether the element itself got an invalidation. The FFI function you added could return a boolean that basically does that, or call `Gecko_NoteDirtyElement` from there.
But yeah, let's move this to another bug.
Attachment #8901721 -
Flags: feedback?(emilio)
You need to log in
before you can comment on or make changes to this bug.
Description
•