mirror of
https://github.com/servo/servo.git
synced 2025-08-05 21:50:18 +01:00
compositing: Move image output and shutdown management out of the compositor (#35538)
This is a step toward the renderer-per-WebView goal. It moves various details out of `IOCompositor`. - Image output: This is moved to servoshell as now applications can access the image contents of a `WebView` via `RenderingContext::read_to_image`. Most options for this are moved to `ServoShellPreferences` apart from `wait_for_stable_image` as this requires a specific kind of coordination in the `ScriptThread` that is also very expensive. Instead, paint is now simply delayed until a stable image is reached and `WebView::paint()` returns a boolean. Maybe this can be revisited in the future. - Shutdown: Shutdown is now managed by libservo itself. Shutdown state is shared between the compositor and `Servo` instance. In the future, this sharing might be unecessary. - `CompositeTarget` has been removed entirely. This no longer needs to be passed when creating a Servo instance. Signed-off-by: Martin Robinson <mrobinson@igalia.com> Co-authored-by: Ngo Iok Ui (Wu Yu Wei) <yuweiwu@pm.me>
This commit is contained in:
parent
7d33e72bfc
commit
54b5c7b632
25 changed files with 233 additions and 270 deletions
|
@ -65,7 +65,7 @@ use script_traits::{
|
|||
use selectors::attr::CaseSensitivity;
|
||||
use servo_arc::Arc as ServoArc;
|
||||
use servo_atoms::Atom;
|
||||
use servo_config::pref;
|
||||
use servo_config::{opts, pref};
|
||||
use servo_geometry::{f32_rect_to_au_rect, DeviceIndependentIntRect, MaxRect};
|
||||
use servo_url::{ImmutableOrigin, MutableOrigin, ServoUrl};
|
||||
use style::dom::OpaqueNode;
|
||||
|
@ -368,9 +368,6 @@ pub(crate) struct Window {
|
|||
/// Emits notifications when there is a relayout.
|
||||
relayout_event: bool,
|
||||
|
||||
/// True if it is safe to write to the image.
|
||||
prepare_for_screenshot: bool,
|
||||
|
||||
/// Unminify Css.
|
||||
unminify_css: bool,
|
||||
|
||||
|
@ -2071,7 +2068,7 @@ impl Window {
|
|||
// When all these conditions are met, notify the constellation
|
||||
// that this pipeline is ready to write the image (from the script thread
|
||||
// perspective at least).
|
||||
if self.prepare_for_screenshot && updating_the_rendering {
|
||||
if opts::get().wait_for_stable_image && updating_the_rendering {
|
||||
// Checks if the html element has reftest-wait attribute present.
|
||||
// See http://testthewebforward.org/docs/reftests.html
|
||||
// and https://web-platform-tests.org/writing-tests/crashtest.html
|
||||
|
@ -2166,7 +2163,7 @@ impl Window {
|
|||
/// If writing a screenshot, synchronously update the layout epoch that it set
|
||||
/// in the constellation.
|
||||
pub(crate) fn update_constellation_epoch(&self) {
|
||||
if !self.prepare_for_screenshot {
|
||||
if !opts::get().wait_for_stable_image {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -2772,7 +2769,6 @@ impl Window {
|
|||
webrender_document: DocumentId,
|
||||
compositor_api: CrossProcessCompositorApi,
|
||||
relayout_event: bool,
|
||||
prepare_for_screenshot: bool,
|
||||
unminify_js: bool,
|
||||
unminify_css: bool,
|
||||
local_script_source: Option<String>,
|
||||
|
@ -2862,7 +2858,6 @@ impl Window {
|
|||
compositor_api,
|
||||
has_sent_idle_message: Cell::new(false),
|
||||
relayout_event,
|
||||
prepare_for_screenshot,
|
||||
unminify_css,
|
||||
userscripts_path,
|
||||
player_context,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue