mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
script: Get the screen metrics from the WebViewDelegate
instead of via the compositor (#38020)
Similar to #37960, previously, `AvailHeight`, `AvailWidth`, `Height`, `Width` ask compositor for screen metrics. This PR moves the request to embedder. This simplifies code, and reduces workload of compositor, which is busier most of time. Testing: No behaviour change. Updated some tests. `Width/Height` matches other browsers. --------- Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
This commit is contained in:
parent
d0a93a8b02
commit
d38ffb82b2
11 changed files with 79 additions and 102 deletions
|
@ -912,26 +912,6 @@ impl IOCompositor {
|
|||
.collect();
|
||||
let _ = result_sender.send((font_keys, font_instance_keys));
|
||||
},
|
||||
CompositorMsg::GetScreenSize(webview_id, response_sender) => {
|
||||
let screen_size = self
|
||||
.webview_renderers
|
||||
.get(webview_id)
|
||||
.map(WebViewRenderer::screen_size)
|
||||
.unwrap_or_default();
|
||||
if let Err(error) = response_sender.send(screen_size) {
|
||||
warn!("Sending response to get screen size failed ({error:?}).");
|
||||
}
|
||||
},
|
||||
CompositorMsg::GetAvailableScreenSize(webview_id, response_sender) => {
|
||||
let available_screen_size = self
|
||||
.webview_renderers
|
||||
.get(webview_id)
|
||||
.map(WebViewRenderer::available_screen_size)
|
||||
.unwrap_or_default();
|
||||
if let Err(error) = response_sender.send(available_screen_size) {
|
||||
warn!("Sending response to get screen size failed ({error:?}).");
|
||||
}
|
||||
},
|
||||
CompositorMsg::Viewport(webview_id, viewport_description) => {
|
||||
if let Some(webview) = self.webview_renderers.get_mut(webview_id) {
|
||||
webview.set_viewport_description(viewport_description);
|
||||
|
@ -981,16 +961,6 @@ impl IOCompositor {
|
|||
.collect();
|
||||
let _ = result_sender.send((font_keys, font_instance_keys));
|
||||
},
|
||||
CompositorMsg::GetScreenSize(_, response_sender) => {
|
||||
if let Err(error) = response_sender.send(Default::default()) {
|
||||
warn!("Sending response to get client window failed ({error:?}).");
|
||||
}
|
||||
},
|
||||
CompositorMsg::GetAvailableScreenSize(_, response_sender) => {
|
||||
if let Err(error) = response_sender.send(Default::default()) {
|
||||
warn!("Sending response to get client window failed ({error:?}).");
|
||||
}
|
||||
},
|
||||
CompositorMsg::NewWebRenderFrameReady(..) => {
|
||||
// Subtract from the number of pending frames, but do not do any compositing.
|
||||
self.pending_frames -= 1;
|
||||
|
|
|
@ -51,8 +51,6 @@ mod from_constellation {
|
|||
Self::AddSystemFont(..) => target!("AddSystemFont"),
|
||||
Self::AddFontInstance(..) => target!("AddFontInstance"),
|
||||
Self::RemoveFonts(..) => target!("RemoveFonts"),
|
||||
Self::GetScreenSize(..) => target!("GetScreenSize"),
|
||||
Self::GetAvailableScreenSize(..) => target!("GetAvailableScreenSize"),
|
||||
Self::CollectMemoryReport(..) => target!("CollectMemoryReport"),
|
||||
Self::Viewport(..) => target!("Viewport"),
|
||||
Self::GenerateImageKeysForPipeline(..) => target!("GenerateImageKeysForPipeline"),
|
||||
|
|
|
@ -19,7 +19,7 @@ use embedder_traits::{
|
|||
MouseButtonEvent, MouseMoveEvent, ScrollEvent as EmbedderScrollEvent, ShutdownState,
|
||||
TouchEvent, TouchEventResult, TouchEventType, TouchId, ViewportDetails,
|
||||
};
|
||||
use euclid::{Point2D, Scale, Size2D, Vector2D};
|
||||
use euclid::{Point2D, Scale, Vector2D};
|
||||
use fnv::FnvHashSet;
|
||||
use log::{debug, warn};
|
||||
use servo_geometry::DeviceIndependentPixel;
|
||||
|
@ -1039,16 +1039,6 @@ impl WebViewRenderer {
|
|||
old_rect != self.rect
|
||||
}
|
||||
|
||||
pub(crate) fn screen_size(&self) -> Size2D<i32, DeviceIndependentPixel> {
|
||||
let screen_geometry = self.webview.screen_geometry().unwrap_or_default();
|
||||
(screen_geometry.size.to_f32() / self.hidpi_scale_factor).to_i32()
|
||||
}
|
||||
|
||||
pub(crate) fn available_screen_size(&self) -> Size2D<i32, DeviceIndependentPixel> {
|
||||
let screen_geometry = self.webview.screen_geometry().unwrap_or_default();
|
||||
(screen_geometry.available_size.to_f32() / self.hidpi_scale_factor).to_i32()
|
||||
}
|
||||
|
||||
pub fn set_viewport_description(&mut self, viewport_description: ViewportDescription) {
|
||||
self.pending_scroll_zoom_events
|
||||
.push(ScrollZoomEvent::ViewportZoom(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue