mirror of
https://github.com/servo/servo.git
synced 2025-07-24 15:50:21 +01:00
config: Remove legacy-layout and unused Preferences
and Opts
(#34994)
There are some preferences and options that are only used by legacy layout or not used at all. This PR removes them. Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
parent
2c0c36f238
commit
f5ef8aaed3
8 changed files with 12 additions and 305 deletions
|
@ -20,9 +20,6 @@ pub struct Opts {
|
||||||
/// Whether or not the legacy layout system is enabled.
|
/// Whether or not the legacy layout system is enabled.
|
||||||
pub legacy_layout: bool,
|
pub legacy_layout: bool,
|
||||||
|
|
||||||
/// The maximum size of each tile in pixels (`-s`).
|
|
||||||
pub tile_size: usize,
|
|
||||||
|
|
||||||
/// `None` to disable the time profiler or `Some` to enable it with:
|
/// `None` to disable the time profiler or `Some` to enable it with:
|
||||||
///
|
///
|
||||||
/// - an interval in seconds to cause it to produce output on that interval.
|
/// - an interval in seconds to cause it to produce output on that interval.
|
||||||
|
@ -124,12 +121,6 @@ pub struct DebugOptions {
|
||||||
/// List all the debug options.
|
/// List all the debug options.
|
||||||
pub help: bool,
|
pub help: bool,
|
||||||
|
|
||||||
/// True if we should bubble intrinsic widths sequentially. If this is true,
|
|
||||||
/// then intrinsic widths are computed as a separate pass instead of during
|
|
||||||
/// flow construction. You may wish to turn this flag on in order to
|
|
||||||
/// benchmark style recalculation against other browser engines.
|
|
||||||
pub bubble_inline_sizes_separately: bool,
|
|
||||||
|
|
||||||
/// If set with `disable-text-aa`, disable antialiasing on fonts. This is
|
/// If set with `disable-text-aa`, disable antialiasing on fonts. This is
|
||||||
/// primarily useful for reftests where pixel perfect results are required
|
/// primarily useful for reftests where pixel perfect results are required
|
||||||
/// when using fonts such as the Ahem font for layout tests.
|
/// when using fonts such as the Ahem font for layout tests.
|
||||||
|
@ -159,21 +150,12 @@ pub struct DebugOptions {
|
||||||
/// Print the display list after each layout.
|
/// Print the display list after each layout.
|
||||||
pub dump_display_list: bool,
|
pub dump_display_list: bool,
|
||||||
|
|
||||||
/// Print the display list in JSON form.
|
|
||||||
pub dump_display_list_json: bool,
|
|
||||||
|
|
||||||
/// Print notifications when there is a relayout.
|
/// Print notifications when there is a relayout.
|
||||||
pub relayout_event: bool,
|
pub relayout_event: bool,
|
||||||
|
|
||||||
/// Periodically print out on which events script threads spend their processing time.
|
/// Periodically print out on which events script threads spend their processing time.
|
||||||
pub profile_script_events: bool,
|
pub profile_script_events: bool,
|
||||||
|
|
||||||
/// Paint borders along fragment boundaries.
|
|
||||||
pub show_fragment_borders: bool,
|
|
||||||
|
|
||||||
/// Mark which thread laid each flow out with colors.
|
|
||||||
pub show_parallel_layout: bool,
|
|
||||||
|
|
||||||
/// True if each step of layout is traced to an external JSON file
|
/// True if each step of layout is traced to an external JSON file
|
||||||
/// for debugging purposes. Setting this implies sequential layout
|
/// for debugging purposes. Setting this implies sequential layout
|
||||||
/// and paint.
|
/// and paint.
|
||||||
|
@ -216,14 +198,12 @@ impl DebugOptions {
|
||||||
for option in debug_string.split(',') {
|
for option in debug_string.split(',') {
|
||||||
match option {
|
match option {
|
||||||
"help" => self.help = true,
|
"help" => self.help = true,
|
||||||
"bubble-inline-sizes-separately" => self.bubble_inline_sizes_separately = true,
|
|
||||||
"convert-mouse-to-touch" => self.convert_mouse_to_touch = true,
|
"convert-mouse-to-touch" => self.convert_mouse_to_touch = true,
|
||||||
"disable-canvas-aa" => self.disable_canvas_antialiasing = true,
|
"disable-canvas-aa" => self.disable_canvas_antialiasing = true,
|
||||||
"disable-share-style-cache" => self.disable_share_style_cache = true,
|
"disable-share-style-cache" => self.disable_share_style_cache = true,
|
||||||
"disable-subpixel-aa" => self.disable_subpixel_text_antialiasing = true,
|
"disable-subpixel-aa" => self.disable_subpixel_text_antialiasing = true,
|
||||||
"disable-text-aa" => self.disable_text_antialiasing = true,
|
"disable-text-aa" => self.disable_text_antialiasing = true,
|
||||||
"dump-display-list" => self.dump_display_list = true,
|
"dump-display-list" => self.dump_display_list = true,
|
||||||
"dump-display-list-json" => self.dump_display_list_json = true,
|
|
||||||
"dump-stacking-context-tree" => self.dump_stacking_context_tree = true,
|
"dump-stacking-context-tree" => self.dump_stacking_context_tree = true,
|
||||||
"dump-flow-tree" => self.dump_flow_tree = true,
|
"dump-flow-tree" => self.dump_flow_tree = true,
|
||||||
"dump-rule-tree" => self.dump_rule_tree = true,
|
"dump-rule-tree" => self.dump_rule_tree = true,
|
||||||
|
@ -234,8 +214,6 @@ impl DebugOptions {
|
||||||
"profile-script-events" => self.profile_script_events = true,
|
"profile-script-events" => self.profile_script_events = true,
|
||||||
"relayout-event" => self.relayout_event = true,
|
"relayout-event" => self.relayout_event = true,
|
||||||
"replace-surrogates" => self.replace_surrogates = true,
|
"replace-surrogates" => self.replace_surrogates = true,
|
||||||
"show-fragment-borders" => self.show_fragment_borders = true,
|
|
||||||
"show-parallel-layout" => self.show_parallel_layout = true,
|
|
||||||
"signpost" => self.signpost = true,
|
"signpost" => self.signpost = true,
|
||||||
"dump-style-stats" => self.dump_style_statistics = true,
|
"dump-style-stats" => self.dump_style_statistics = true,
|
||||||
"trace-layout" => self.trace_layout = true,
|
"trace-layout" => self.trace_layout = true,
|
||||||
|
@ -245,10 +223,6 @@ impl DebugOptions {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
if self.trace_layout {
|
|
||||||
self.bubble_inline_sizes_separately = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -263,7 +237,6 @@ pub enum OutputOptions {
|
||||||
pub fn default_opts() -> Opts {
|
pub fn default_opts() -> Opts {
|
||||||
Opts {
|
Opts {
|
||||||
legacy_layout: false,
|
legacy_layout: false,
|
||||||
tile_size: 512,
|
|
||||||
time_profiling: None,
|
time_profiling: None,
|
||||||
time_profiler_trace_path: None,
|
time_profiler_trace_path: None,
|
||||||
mem_profiler_period: None,
|
mem_profiler_period: None,
|
||||||
|
|
|
@ -23,7 +23,6 @@ use script_layout_interface::wrapper_traits::{
|
||||||
PseudoElementType, ThreadSafeLayoutElement, ThreadSafeLayoutNode,
|
PseudoElementType, ThreadSafeLayoutElement, ThreadSafeLayoutNode,
|
||||||
};
|
};
|
||||||
use script_layout_interface::{LayoutElementType, LayoutNodeType};
|
use script_layout_interface::{LayoutElementType, LayoutNodeType};
|
||||||
use servo_config::opts;
|
|
||||||
use servo_url::ServoUrl;
|
use servo_url::ServoUrl;
|
||||||
use style::computed_values::caption_side::T as CaptionSide;
|
use style::computed_values::caption_side::T as CaptionSide;
|
||||||
use style::computed_values::display::T as Display;
|
use style::computed_values::display::T as Display;
|
||||||
|
@ -2075,13 +2074,11 @@ impl FlowRef {
|
||||||
/// All flows must be finished at some point, or they will not have their intrinsic inline-sizes
|
/// All flows must be finished at some point, or they will not have their intrinsic inline-sizes
|
||||||
/// properly computed. (This is not, however, a memory safety problem.)
|
/// properly computed. (This is not, however, a memory safety problem.)
|
||||||
fn finish(&mut self) {
|
fn finish(&mut self) {
|
||||||
if !opts::get().debug.bubble_inline_sizes_separately {
|
FlowRef::deref_mut(self).bubble_inline_sizes();
|
||||||
FlowRef::deref_mut(self).bubble_inline_sizes();
|
FlowRef::deref_mut(self)
|
||||||
FlowRef::deref_mut(self)
|
.mut_base()
|
||||||
.mut_base()
|
.restyle_damage
|
||||||
.restyle_damage
|
.remove(ServoRestyleDamage::BUBBLE_ISIZES);
|
||||||
.remove(ServoRestyleDamage::BUBBLE_ISIZES);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,6 @@ use range::Range;
|
||||||
use script_layout_interface::{
|
use script_layout_interface::{
|
||||||
combine_id_with_fragment_type, FragmentType, IFrameSize, IFrameSizes,
|
combine_id_with_fragment_type, FragmentType, IFrameSize, IFrameSizes,
|
||||||
};
|
};
|
||||||
use servo_config::opts;
|
|
||||||
use servo_geometry::{self, MaxRect};
|
use servo_geometry::{self, MaxRect};
|
||||||
use style::color::AbsoluteColor;
|
use style::color::AbsoluteColor;
|
||||||
use style::computed_values::border_style::T as BorderStyle;
|
use style::computed_values::border_style::T as BorderStyle;
|
||||||
|
@ -48,9 +47,9 @@ use style::values::specified::ui::CursorKind;
|
||||||
use style_traits::ToCss;
|
use style_traits::ToCss;
|
||||||
use webrender_api::units::{LayoutRect, LayoutTransform, LayoutVector2D};
|
use webrender_api::units::{LayoutRect, LayoutTransform, LayoutVector2D};
|
||||||
use webrender_api::{
|
use webrender_api::{
|
||||||
self, BorderDetails, BorderRadius, BorderSide, BoxShadowClipMode, ColorF, ColorU,
|
self, BorderDetails, BorderRadius, BorderSide, BoxShadowClipMode, ColorF, ExternalScrollId,
|
||||||
ExternalScrollId, FilterOp, GlyphInstance, ImageRendering, LineStyle, NinePatchBorder,
|
FilterOp, GlyphInstance, ImageRendering, LineStyle, NinePatchBorder, NinePatchBorderSource,
|
||||||
NinePatchBorderSource, NormalBorder, PropertyBinding, StickyOffsetBounds,
|
NormalBorder, PropertyBinding, StickyOffsetBounds,
|
||||||
};
|
};
|
||||||
use webrender_traits::display_list::ScrollSensitivity;
|
use webrender_traits::display_list::ScrollSensitivity;
|
||||||
|
|
||||||
|
@ -76,57 +75,6 @@ use crate::model::MaybeAuto;
|
||||||
use crate::table_cell::CollapsedBordersForCell;
|
use crate::table_cell::CollapsedBordersForCell;
|
||||||
use crate::text_run::TextRun;
|
use crate::text_run::TextRun;
|
||||||
|
|
||||||
static THREAD_TINT_COLORS: [ColorF; 8] = [
|
|
||||||
ColorF {
|
|
||||||
r: 6.0 / 255.0,
|
|
||||||
g: 153.0 / 255.0,
|
|
||||||
b: 198.0 / 255.0,
|
|
||||||
a: 0.7,
|
|
||||||
},
|
|
||||||
ColorF {
|
|
||||||
r: 1.0,
|
|
||||||
g: 212.0 / 255.0,
|
|
||||||
b: 83.0 / 255.0,
|
|
||||||
a: 0.7,
|
|
||||||
},
|
|
||||||
ColorF {
|
|
||||||
r: 116.0 / 255.0,
|
|
||||||
g: 29.0 / 255.0,
|
|
||||||
b: 109.0 / 255.0,
|
|
||||||
a: 0.7,
|
|
||||||
},
|
|
||||||
ColorF {
|
|
||||||
r: 204.0 / 255.0,
|
|
||||||
g: 158.0 / 255.0,
|
|
||||||
b: 199.0 / 255.0,
|
|
||||||
a: 0.7,
|
|
||||||
},
|
|
||||||
ColorF {
|
|
||||||
r: 242.0 / 255.0,
|
|
||||||
g: 46.0 / 255.0,
|
|
||||||
b: 121.0 / 255.0,
|
|
||||||
a: 0.7,
|
|
||||||
},
|
|
||||||
ColorF {
|
|
||||||
r: 116.0 / 255.0,
|
|
||||||
g: 203.0 / 255.0,
|
|
||||||
b: 196.0 / 255.0,
|
|
||||||
a: 0.7,
|
|
||||||
},
|
|
||||||
ColorF {
|
|
||||||
r: 1.0,
|
|
||||||
g: 249.0 / 255.0,
|
|
||||||
b: 201.0 / 255.0,
|
|
||||||
a: 0.7,
|
|
||||||
},
|
|
||||||
ColorF {
|
|
||||||
r: 137.0 / 255.0,
|
|
||||||
g: 196.0 / 255.0,
|
|
||||||
b: 78.0 / 255.0,
|
|
||||||
a: 0.7,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
// An internal WebRender limit.
|
// An internal WebRender limit.
|
||||||
//
|
//
|
||||||
// See: https://github.com/servo/servo/issues/17230#issuecomment-564307277
|
// See: https://github.com/servo/servo/issues/17230#issuecomment-564307277
|
||||||
|
@ -1375,104 +1323,6 @@ impl Fragment {
|
||||||
)));
|
)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Adds display items necessary to draw debug boxes around a scanned text fragment.
|
|
||||||
fn build_debug_borders_around_text_fragments(
|
|
||||||
&self,
|
|
||||||
state: &mut DisplayListBuildState,
|
|
||||||
style: &ComputedValues,
|
|
||||||
stacking_relative_border_box: Rect<Au>,
|
|
||||||
stacking_relative_content_box: Rect<Au>,
|
|
||||||
text_fragment: &ScannedTextFragmentInfo,
|
|
||||||
clip: Rect<Au>,
|
|
||||||
) {
|
|
||||||
// FIXME(pcwalton, #2795): Get the real container size.
|
|
||||||
let container_size = Size2D::zero();
|
|
||||||
|
|
||||||
// Compute the text fragment bounds and draw a border surrounding them.
|
|
||||||
let base = state.create_base_display_item(
|
|
||||||
clip,
|
|
||||||
self.node,
|
|
||||||
self.unique_id(),
|
|
||||||
get_cursor(style, Cursor::Default),
|
|
||||||
DisplayListSection::Content,
|
|
||||||
);
|
|
||||||
state.add_display_item(DisplayItem::Border(CommonDisplayItem::with_data(
|
|
||||||
base,
|
|
||||||
webrender_api::BorderDisplayItem {
|
|
||||||
bounds: stacking_relative_border_box.to_layout(),
|
|
||||||
common: items::empty_common_item_properties(),
|
|
||||||
widths: SideOffsets2D::new_all_same(Au::from_px(1)).to_layout(),
|
|
||||||
details: BorderDetails::Normal(border::simple(
|
|
||||||
ColorU::new(0, 0, 200, 1).into(),
|
|
||||||
webrender_api::BorderStyle::Solid,
|
|
||||||
)),
|
|
||||||
},
|
|
||||||
Vec::new(),
|
|
||||||
)));
|
|
||||||
|
|
||||||
// Draw a rectangle representing the baselines.
|
|
||||||
let mut baseline = LogicalRect::from_physical(
|
|
||||||
self.style.writing_mode,
|
|
||||||
stacking_relative_content_box,
|
|
||||||
container_size,
|
|
||||||
);
|
|
||||||
baseline.start.b += text_fragment.run.ascent();
|
|
||||||
baseline.size.block = Au(0);
|
|
||||||
let baseline = baseline.to_physical(self.style.writing_mode, container_size);
|
|
||||||
|
|
||||||
let base = state.create_base_display_item(
|
|
||||||
clip,
|
|
||||||
self.node,
|
|
||||||
self.unique_id(),
|
|
||||||
get_cursor(style, Cursor::Default),
|
|
||||||
DisplayListSection::Content,
|
|
||||||
);
|
|
||||||
// TODO(gw): Use a better estimate for wavy line thickness.
|
|
||||||
let area = baseline.to_layout();
|
|
||||||
let wavy_line_thickness = (0.33 * area.size().height).ceil();
|
|
||||||
state.add_display_item(DisplayItem::Line(CommonDisplayItem::new(
|
|
||||||
base,
|
|
||||||
webrender_api::LineDisplayItem {
|
|
||||||
common: items::empty_common_item_properties(),
|
|
||||||
area,
|
|
||||||
orientation: webrender_api::LineOrientation::Horizontal,
|
|
||||||
wavy_line_thickness,
|
|
||||||
color: ColorU::new(0, 200, 0, 1).into(),
|
|
||||||
style: LineStyle::Dashed,
|
|
||||||
},
|
|
||||||
)));
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Adds display items necessary to draw debug boxes around this fragment.
|
|
||||||
fn build_debug_borders_around_fragment(
|
|
||||||
&self,
|
|
||||||
state: &mut DisplayListBuildState,
|
|
||||||
stacking_relative_border_box: Rect<Au>,
|
|
||||||
clip: Rect<Au>,
|
|
||||||
) {
|
|
||||||
// This prints a debug border around the border of this fragment.
|
|
||||||
let base = state.create_base_display_item(
|
|
||||||
clip,
|
|
||||||
self.node,
|
|
||||||
self.unique_id(),
|
|
||||||
get_cursor(&self.style, Cursor::Default),
|
|
||||||
DisplayListSection::Content,
|
|
||||||
);
|
|
||||||
state.add_display_item(DisplayItem::Border(CommonDisplayItem::with_data(
|
|
||||||
base,
|
|
||||||
webrender_api::BorderDisplayItem {
|
|
||||||
bounds: stacking_relative_border_box.to_layout(),
|
|
||||||
common: items::empty_common_item_properties(),
|
|
||||||
widths: SideOffsets2D::new_all_same(Au::from_px(1)).to_layout(),
|
|
||||||
details: BorderDetails::Normal(border::simple(
|
|
||||||
ColorU::new(0, 0, 200, 1).into(),
|
|
||||||
webrender_api::BorderStyle::Solid,
|
|
||||||
)),
|
|
||||||
},
|
|
||||||
Vec::new(),
|
|
||||||
)));
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Builds the display items necessary to paint the selection and/or caret for this fragment,
|
/// Builds the display items necessary to paint the selection and/or caret for this fragment,
|
||||||
/// if any.
|
/// if any.
|
||||||
fn build_display_items_for_selection_if_necessary(
|
fn build_display_items_for_selection_if_necessary(
|
||||||
|
@ -1758,10 +1608,6 @@ impl Fragment {
|
||||||
clip,
|
clip,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
if opts::get().debug.show_fragment_borders {
|
|
||||||
self.build_debug_borders_around_fragment(state, stacking_relative_border_box, clip)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A helper method that `build_display_list` calls to create per-fragment-type display items.
|
/// A helper method that `build_display_list` calls to create per-fragment-type display items.
|
||||||
|
@ -1818,17 +1664,6 @@ impl Fragment {
|
||||||
&self.style.get_inherited_text().text_shadow.0,
|
&self.style.get_inherited_text().text_shadow.0,
|
||||||
clip,
|
clip,
|
||||||
);
|
);
|
||||||
|
|
||||||
if opts::get().debug.show_fragment_borders {
|
|
||||||
self.build_debug_borders_around_text_fragments(
|
|
||||||
state,
|
|
||||||
self.style(),
|
|
||||||
stacking_relative_border_box,
|
|
||||||
stacking_relative_content_box,
|
|
||||||
text_fragment,
|
|
||||||
clip,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
SpecificFragmentInfo::ScannedText(ref text_fragment) => {
|
SpecificFragmentInfo::ScannedText(ref text_fragment) => {
|
||||||
// Create the main text display item.
|
// Create the main text display item.
|
||||||
|
@ -1839,17 +1674,6 @@ impl Fragment {
|
||||||
&self.style.get_inherited_text().text_shadow.0,
|
&self.style.get_inherited_text().text_shadow.0,
|
||||||
clip,
|
clip,
|
||||||
);
|
);
|
||||||
|
|
||||||
if opts::get().debug.show_fragment_borders {
|
|
||||||
self.build_debug_borders_around_text_fragments(
|
|
||||||
state,
|
|
||||||
self.style(),
|
|
||||||
stacking_relative_border_box,
|
|
||||||
stacking_relative_content_box,
|
|
||||||
text_fragment,
|
|
||||||
clip,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
SpecificFragmentInfo::Generic |
|
SpecificFragmentInfo::Generic |
|
||||||
SpecificFragmentInfo::GeneratedContent(..) |
|
SpecificFragmentInfo::GeneratedContent(..) |
|
||||||
|
@ -1863,15 +1687,7 @@ impl Fragment {
|
||||||
SpecificFragmentInfo::InlineAbsoluteHypothetical(_) |
|
SpecificFragmentInfo::InlineAbsoluteHypothetical(_) |
|
||||||
SpecificFragmentInfo::InlineAbsolute(_) |
|
SpecificFragmentInfo::InlineAbsolute(_) |
|
||||||
SpecificFragmentInfo::TruncatedFragment(_) |
|
SpecificFragmentInfo::TruncatedFragment(_) |
|
||||||
SpecificFragmentInfo::Svg(_) => {
|
SpecificFragmentInfo::Svg(_) => {},
|
||||||
if opts::get().debug.show_fragment_borders {
|
|
||||||
self.build_debug_borders_around_fragment(
|
|
||||||
state,
|
|
||||||
stacking_relative_border_box,
|
|
||||||
clip,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
SpecificFragmentInfo::Iframe(ref fragment_info) => {
|
SpecificFragmentInfo::Iframe(ref fragment_info) => {
|
||||||
if !stacking_relative_content_box.is_empty() {
|
if !stacking_relative_content_box.is_empty() {
|
||||||
let Some(browsing_context_id) = fragment_info.browsing_context_id else {
|
let Some(browsing_context_id) = fragment_info.browsing_context_id else {
|
||||||
|
@ -2888,9 +2704,6 @@ impl BlockFlow {
|
||||||
content_size,
|
content_size,
|
||||||
);
|
);
|
||||||
|
|
||||||
self.base
|
|
||||||
.build_display_items_for_debugging_tint(state, self.fragment.node);
|
|
||||||
|
|
||||||
state.processing_scrolling_overflow_element = false;
|
state.processing_scrolling_overflow_element = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2960,50 +2773,6 @@ impl BlockFlow {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl BaseFlow {
|
|
||||||
pub fn build_display_items_for_debugging_tint(
|
|
||||||
&self,
|
|
||||||
state: &mut DisplayListBuildState,
|
|
||||||
node: OpaqueNode,
|
|
||||||
) {
|
|
||||||
if !opts::get().debug.show_parallel_layout {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let thread_id = self.thread_id;
|
|
||||||
let stacking_context_relative_bounds = Rect::new(
|
|
||||||
self.stacking_relative_position.to_point(),
|
|
||||||
self.position.size.to_physical(self.writing_mode),
|
|
||||||
);
|
|
||||||
|
|
||||||
let mut color = THREAD_TINT_COLORS[thread_id as usize % THREAD_TINT_COLORS.len()];
|
|
||||||
color.a = 1.0;
|
|
||||||
let base = state.create_base_display_item(
|
|
||||||
self.clip,
|
|
||||||
node,
|
|
||||||
// This item will never become a spatial tree node, so it's fine
|
|
||||||
// to pass 0 here.
|
|
||||||
0,
|
|
||||||
None,
|
|
||||||
DisplayListSection::Content,
|
|
||||||
);
|
|
||||||
let bounds = stacking_context_relative_bounds.inflate(Au::from_px(2), Au::from_px(2));
|
|
||||||
state.add_display_item(DisplayItem::Border(CommonDisplayItem::with_data(
|
|
||||||
base,
|
|
||||||
webrender_api::BorderDisplayItem {
|
|
||||||
bounds: bounds.to_layout(),
|
|
||||||
common: items::empty_common_item_properties(),
|
|
||||||
widths: SideOffsets2D::new_all_same(Au::from_px(2)).to_layout(),
|
|
||||||
details: BorderDetails::Normal(border::simple(
|
|
||||||
color,
|
|
||||||
webrender_api::BorderStyle::Solid,
|
|
||||||
)),
|
|
||||||
},
|
|
||||||
Vec::new(),
|
|
||||||
)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Gets the cursor to use given the specific ComputedValues. `default_cursor` specifies
|
/// Gets the cursor to use given the specific ComputedValues. `default_cursor` specifies
|
||||||
/// the cursor to use if `cursor` is `auto`. Typically, this will be `PointerCursor`, but for
|
/// the cursor to use if `cursor` is `auto`. Typically, this will be `PointerCursor`, but for
|
||||||
/// text display items it may be `TextCursor` or `VerticalTextCursor`.
|
/// text display items it may be `TextCursor` or `VerticalTextCursor`.
|
||||||
|
|
|
@ -1948,11 +1948,6 @@ impl Flow for InlineFlow {
|
||||||
state.current_stacking_context_id = parent_stacking_context_id
|
state.current_stacking_context_id = parent_stacking_context_id
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if !self.fragments.fragments.is_empty() {
|
|
||||||
self.base
|
|
||||||
.build_display_items_for_debugging_tint(state, self.fragments.fragments[0].node);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn repair_style(&mut self, _: &ServoArc<ComputedValues>) {}
|
fn repair_style(&mut self, _: &ServoArc<ComputedValues>) {}
|
||||||
|
|
|
@ -13,16 +13,13 @@ use std::{mem, ptr};
|
||||||
|
|
||||||
use profile_traits::time::{self, TimerMetadata};
|
use profile_traits::time::{self, TimerMetadata};
|
||||||
use profile_traits::time_profile;
|
use profile_traits::time_profile;
|
||||||
use servo_config::opts;
|
|
||||||
use smallvec::SmallVec;
|
use smallvec::SmallVec;
|
||||||
|
|
||||||
use crate::block::BlockFlow;
|
use crate::block::BlockFlow;
|
||||||
use crate::context::LayoutContext;
|
use crate::context::LayoutContext;
|
||||||
use crate::flow::{Flow, GetBaseFlow};
|
use crate::flow::{Flow, GetBaseFlow};
|
||||||
use crate::flow_ref::FlowRef;
|
use crate::flow_ref::FlowRef;
|
||||||
use crate::traversal::{
|
use crate::traversal::{AssignBSizes, AssignISizes, PostorderFlowTraversal, PreorderFlowTraversal};
|
||||||
AssignBSizes, AssignISizes, BubbleISizes, PostorderFlowTraversal, PreorderFlowTraversal,
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Traversal chunk size.
|
/// Traversal chunk size.
|
||||||
const CHUNK_SIZE: usize = 16;
|
const CHUNK_SIZE: usize = 16;
|
||||||
|
@ -213,13 +210,6 @@ pub fn reflow(
|
||||||
context: &LayoutContext,
|
context: &LayoutContext,
|
||||||
queue: &rayon::ThreadPool,
|
queue: &rayon::ThreadPool,
|
||||||
) {
|
) {
|
||||||
if opts::get().debug.bubble_inline_sizes_separately {
|
|
||||||
let bubble_inline_sizes = BubbleISizes {
|
|
||||||
layout_context: context,
|
|
||||||
};
|
|
||||||
bubble_inline_sizes.traverse(root);
|
|
||||||
}
|
|
||||||
|
|
||||||
let assign_isize_traversal = &AssignISizes {
|
let assign_isize_traversal = &AssignISizes {
|
||||||
layout_context: context,
|
layout_context: context,
|
||||||
};
|
};
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
|
|
||||||
use app_units::Au;
|
use app_units::Au;
|
||||||
use euclid::default::{Point2D, Rect, Size2D, Vector2D};
|
use euclid::default::{Point2D, Rect, Size2D, Vector2D};
|
||||||
use servo_config::opts;
|
|
||||||
use style::servo::restyle_damage::ServoRestyleDamage;
|
use style::servo::restyle_damage::ServoRestyleDamage;
|
||||||
use webrender_api::units::LayoutPoint;
|
use webrender_api::units::LayoutPoint;
|
||||||
use webrender_api::{ColorF, PropertyBinding, RectangleDisplayItem};
|
use webrender_api::{ColorF, PropertyBinding, RectangleDisplayItem};
|
||||||
|
@ -21,8 +20,8 @@ use crate::fragment::{CoordinateSystem, FragmentBorderBoxIterator};
|
||||||
use crate::generated_content::ResolveGeneratedContent;
|
use crate::generated_content::ResolveGeneratedContent;
|
||||||
use crate::incremental::RelayoutMode;
|
use crate::incremental::RelayoutMode;
|
||||||
use crate::traversal::{
|
use crate::traversal::{
|
||||||
AssignBSizes, AssignISizes, BubbleISizes, BuildDisplayList, InorderFlowTraversal,
|
AssignBSizes, AssignISizes, BuildDisplayList, InorderFlowTraversal, PostorderFlowTraversal,
|
||||||
PostorderFlowTraversal, PreorderFlowTraversal,
|
PreorderFlowTraversal,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn resolve_generated_content(root: &mut dyn Flow, layout_context: &LayoutContext) {
|
pub fn resolve_generated_content(root: &mut dyn Flow, layout_context: &LayoutContext) {
|
||||||
|
@ -58,11 +57,6 @@ pub fn reflow(root: &mut dyn Flow, layout_context: &LayoutContext, relayout_mode
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if opts::get().debug.bubble_inline_sizes_separately {
|
|
||||||
let bubble_inline_sizes = BubbleISizes { layout_context };
|
|
||||||
bubble_inline_sizes.traverse(root);
|
|
||||||
}
|
|
||||||
|
|
||||||
let assign_inline_sizes = AssignISizes { layout_context };
|
let assign_inline_sizes = AssignISizes { layout_context };
|
||||||
let assign_block_sizes = AssignBSizes { layout_context };
|
let assign_block_sizes = AssignBSizes { layout_context };
|
||||||
|
|
||||||
|
|
|
@ -796,9 +796,6 @@ impl LayoutThread {
|
||||||
if self.debug.dump_display_list {
|
if self.debug.dump_display_list {
|
||||||
display_list.print();
|
display_list.print();
|
||||||
}
|
}
|
||||||
if self.debug.dump_display_list_json {
|
|
||||||
println!("{}", serde_json::to_string_pretty(&display_list).unwrap());
|
|
||||||
}
|
|
||||||
|
|
||||||
debug!("Layout done!");
|
debug!("Layout done!");
|
||||||
|
|
||||||
|
|
|
@ -359,13 +359,6 @@ pub(crate) fn parse_command_line_arguments(args: Vec<String>) -> ArgumentParsing
|
||||||
print_debug_options_usage(app_name);
|
print_debug_options_usage(app_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
let tile_size: usize = match opt_match.opt_str("s") {
|
|
||||||
Some(tile_size_str) => tile_size_str
|
|
||||||
.parse()
|
|
||||||
.unwrap_or_else(|err| args_fail(&format!("Error parsing option: -s ({})", err))),
|
|
||||||
None => 512,
|
|
||||||
};
|
|
||||||
|
|
||||||
// If only the flag is present, default to a 5 second period for both profilers
|
// If only the flag is present, default to a 5 second period for both profilers
|
||||||
let time_profiling = if opt_match.opt_present("p") {
|
let time_profiling = if opt_match.opt_present("p") {
|
||||||
match opt_match.opt_str("p") {
|
match opt_match.opt_str("p") {
|
||||||
|
@ -560,7 +553,6 @@ pub(crate) fn parse_command_line_arguments(args: Vec<String>) -> ArgumentParsing
|
||||||
let opts = Opts {
|
let opts = Opts {
|
||||||
debug: debug_options.clone(),
|
debug: debug_options.clone(),
|
||||||
legacy_layout,
|
legacy_layout,
|
||||||
tile_size,
|
|
||||||
time_profiling,
|
time_profiling,
|
||||||
time_profiler_trace_path: opt_match.opt_str("profiler-trace-path"),
|
time_profiler_trace_path: opt_match.opt_str("profiler-trace-path"),
|
||||||
mem_profiler_period,
|
mem_profiler_period,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue