From 69104507c399805b322c70795fec2c41c5adad63 Mon Sep 17 00:00:00 2001 From: webbeef Date: Fri, 6 Feb 2026 11:18:52 -0800 Subject: [PATCH] chore: update Servo to 8d54bf0a4b81daa798833c967797ccf9756b6a64 --- Cargo.lock | 74 ++++++++++++++----- Cargo.toml | 16 +++- forkme.lock | 2 +- htmlshell/Cargo.toml | 2 +- .../components/layout/layout_impl.rs.patch | 2 +- patches/components/script/dom/window.rs.patch | 16 ++-- patches/components/servo/servo.rs.patch | 2 +- 7 files changed, 82 insertions(+), 32 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d87c865..7682c51 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3407,6 +3407,56 @@ dependencies = [ "system-deps 7.0.7", ] +[[package]] +name = "gstreamer-gl-wayland" +version = "0.24.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e7c882c6de202d985302f531ee7f907e1f1a89b11caa1ba8a153764dc6c650c" +dependencies = [ + "glib 0.21.5", + "gstreamer", + "gstreamer-gl", + "gstreamer-gl-wayland-sys", + "libc", +] + +[[package]] +name = "gstreamer-gl-wayland-sys" +version = "0.24.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be8dffafb60f97705cb2395139df2002fa2730fa75d4efa04ed1ece1a014d464" +dependencies = [ + "glib-sys 0.21.5", + "gstreamer-gl-sys", + "libc", + "system-deps 7.0.7", +] + +[[package]] +name = "gstreamer-gl-x11" +version = "0.24.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a5cbe1aaf44cf6af4beef95390f3be8fdf919059a26991c922dcb0200c21535" +dependencies = [ + "glib 0.21.5", + "gstreamer", + "gstreamer-gl", + "gstreamer-gl-x11-sys", + "libc", +] + +[[package]] +name = "gstreamer-gl-x11-sys" +version = "0.24.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be689b7d327607d11336964e4dc0f5da658b3a4d0373f0e267995edbe0e0454c" +dependencies = [ + "glib-sys 0.21.5", + "gstreamer-gl-sys", + "libc", + "system-deps 7.0.7", +] + [[package]] name = "gstreamer-play" version = "0.24.4" @@ -4704,9 +4754,9 @@ checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" [[package]] name = "jiff" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e67e8da4c49d6d9909fe03361f9b620f58898859f5c7aded68351e85e71ecf50" +checksum = "d89a5b5e10d5a9ad6e5d1f4bd58225f655d6fe9767575a5e8ac5a6fe64e04495" dependencies = [ "jiff-static", "log", @@ -4717,9 +4767,9 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0c84ee7f197eca9a86c6fd6cb771e55eb991632f15f2bc3ca6ec838929e6e78" +checksum = "ff7a39c8862fc1369215ccf0a8f12dd4598c7f6484704359f0351bd617034dbf" dependencies = [ "proc-macro2", "quote", @@ -8143,7 +8193,6 @@ dependencies = [ [[package]] name = "servo-media" version = "0.1.0" -source = "git+https://github.com/servo/media?rev=f384dbc4ff8b5c6f8db2c763306cbe2281d66391#f384dbc4ff8b5c6f8db2c763306cbe2281d66391" dependencies = [ "once_cell", "servo-media-audio", @@ -8155,8 +8204,7 @@ dependencies = [ [[package]] name = "servo-media-audio" -version = "0.2.0" -source = "git+https://github.com/servo/media?rev=f384dbc4ff8b5c6f8db2c763306cbe2281d66391#f384dbc4ff8b5c6f8db2c763306cbe2281d66391" +version = "0.1.0" dependencies = [ "byte-slice-cast", "euclid", @@ -8177,7 +8225,6 @@ dependencies = [ [[package]] name = "servo-media-derive" version = "0.1.0" -source = "git+https://github.com/servo/media?rev=f384dbc4ff8b5c6f8db2c763306cbe2281d66391#f384dbc4ff8b5c6f8db2c763306cbe2281d66391" dependencies = [ "proc-macro2", "quote", @@ -8187,7 +8234,6 @@ dependencies = [ [[package]] name = "servo-media-dummy" version = "0.1.0" -source = "git+https://github.com/servo/media?rev=f384dbc4ff8b5c6f8db2c763306cbe2281d66391#f384dbc4ff8b5c6f8db2c763306cbe2281d66391" dependencies = [ "ipc-channel", "servo-media", @@ -8201,7 +8247,6 @@ dependencies = [ [[package]] name = "servo-media-gstreamer" version = "0.1.0" -source = "git+https://github.com/servo/media?rev=f384dbc4ff8b5c6f8db2c763306cbe2281d66391#f384dbc4ff8b5c6f8db2c763306cbe2281d66391" dependencies = [ "byte-slice-cast", "glib 0.21.5", @@ -8234,7 +8279,6 @@ dependencies = [ [[package]] name = "servo-media-gstreamer-render" version = "0.1.0" -source = "git+https://github.com/servo/media?rev=f384dbc4ff8b5c6f8db2c763306cbe2281d66391#f384dbc4ff8b5c6f8db2c763306cbe2281d66391" dependencies = [ "gstreamer", "gstreamer-video", @@ -8244,7 +8288,6 @@ dependencies = [ [[package]] name = "servo-media-gstreamer-render-android" version = "0.1.0" -source = "git+https://github.com/servo/media?rev=f384dbc4ff8b5c6f8db2c763306cbe2281d66391#f384dbc4ff8b5c6f8db2c763306cbe2281d66391" dependencies = [ "glib 0.21.5", "gstreamer", @@ -8258,12 +8301,13 @@ dependencies = [ [[package]] name = "servo-media-gstreamer-render-unix" version = "0.1.0" -source = "git+https://github.com/servo/media?rev=f384dbc4ff8b5c6f8db2c763306cbe2281d66391#f384dbc4ff8b5c6f8db2c763306cbe2281d66391" dependencies = [ "glib 0.21.5", "gstreamer", "gstreamer-gl", "gstreamer-gl-egl", + "gstreamer-gl-wayland", + "gstreamer-gl-x11", "gstreamer-video", "servo-media-gstreamer-render", "servo-media-player", @@ -8272,7 +8316,6 @@ dependencies = [ [[package]] name = "servo-media-player" version = "0.1.0" -source = "git+https://github.com/servo/media?rev=f384dbc4ff8b5c6f8db2c763306cbe2281d66391#f384dbc4ff8b5c6f8db2c763306cbe2281d66391" dependencies = [ "ipc-channel", "serde", @@ -8284,7 +8327,6 @@ dependencies = [ [[package]] name = "servo-media-streams" version = "0.1.0" -source = "git+https://github.com/servo/media?rev=f384dbc4ff8b5c6f8db2c763306cbe2281d66391#f384dbc4ff8b5c6f8db2c763306cbe2281d66391" dependencies = [ "uuid", ] @@ -8292,12 +8334,10 @@ dependencies = [ [[package]] name = "servo-media-traits" version = "0.1.0" -source = "git+https://github.com/servo/media?rev=f384dbc4ff8b5c6f8db2c763306cbe2281d66391#f384dbc4ff8b5c6f8db2c763306cbe2281d66391" [[package]] name = "servo-media-webrtc" version = "0.1.0" -source = "git+https://github.com/servo/media?rev=f384dbc4ff8b5c6f8db2c763306cbe2281d66391#f384dbc4ff8b5c6f8db2c763306cbe2281d66391" dependencies = [ "log", "servo-media-streams", diff --git a/Cargo.toml b/Cargo.toml index e38a6e5..3eef32e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -70,13 +70,23 @@ flate2 = "1.1" fonts_traits = { path = "source/components/shared/fonts" } freetype-sys = "0.20" gleam = "0.15" +glib = "0.21" +glib-sys = "0.21" glow = "0.16.0" gstreamer = { version = "0.24", features = ["v1_18"] } +gstreamer-app = "0.24" +gstreamer-audio = "0.24" gstreamer-base = "0.24" gstreamer-gl = "0.24" +gstreamer-gl-egl = "0.24" gstreamer-gl-sys = "0.24" +gstreamer-gl-wayland = "0.24" +gstreamer-gl-x11 = "0.24" +gstreamer-play = "0.24" +gstreamer-sdp = "0.24" gstreamer-sys = "0.24" gstreamer-video = "0.24" +gstreamer-webrtc = { version = "0.24", features = ["v1_18"] } harfbuzz-sys = "0.6.1" headers = "0.4" hitrace = "0.1.6" @@ -158,9 +168,9 @@ serde = "1.0.228" serde_bytes = "0.11" serde_core = "1.0.226" serde_json = "1.0" -servo-media = { git = "https://github.com/servo/media", rev = "f384dbc4ff8b5c6f8db2c763306cbe2281d66391" } -servo-media-dummy = { git = "https://github.com/servo/media", rev = "f384dbc4ff8b5c6f8db2c763306cbe2281d66391" } -servo-media-gstreamer = { git = "https://github.com/servo/media", rev = "f384dbc4ff8b5c6f8db2c763306cbe2281d66391" } +servo-media = { path = "source/components/media/servo-media" } +servo-media-dummy = { path = "source/components/media/backends/dummy" } +servo-media-gstreamer = { path = "source/components/media/backends/gstreamer" } servo-tracing = { path = "source/components/servo_tracing" } servo_arc = { git = "https://github.com/servo/stylo", rev = "3b46f3ef27eb14ca276b4bf3ff041a6c43d93827" } sha1 = "0.10" diff --git a/forkme.lock b/forkme.lock index e53487e..30ff490 100644 --- a/forkme.lock +++ b/forkme.lock @@ -1 +1 @@ -be6a2f99a1e80060228f41280fd7d2178983e7ed +8d54bf0a4b81daa798833c967797ccf9756b6a64 diff --git a/htmlshell/Cargo.toml b/htmlshell/Cargo.toml index 2e0799b..3491326 100644 --- a/htmlshell/Cargo.toml +++ b/htmlshell/Cargo.toml @@ -6,7 +6,7 @@ rust-version.workspace = true edition.workspace = true [features] -default = ["libservo/clipboard", "js_jit", "max_log_level", "webgpu"] +default = ["libservo/clipboard", "js_jit", "max_log_level", "media-gstreamer", "native-bluetooth", "webgpu"] gamepad = ["libservo/gamepad"] global-hotkeys = ["dep:global-hotkey"] crown = ["libservo/crown"] diff --git a/patches/components/layout/layout_impl.rs.patch b/patches/components/layout/layout_impl.rs.patch index 4876cb2..1889e6d 100644 --- a/patches/components/layout/layout_impl.rs.patch +++ b/patches/components/layout/layout_impl.rs.patch @@ -41,7 +41,7 @@ device.set_viewport_size(viewport_details.size); device.set_device_pixel_ratio(device_pixel_ratio); self.device_has_changed = true; -@@ -770,6 +787,7 @@ +@@ -766,6 +783,7 @@ previously_highlighted_dom_node: Cell::new(None), lcp_candidate_collector: Default::default(), user_stylesheets: config.user_stylesheets, diff --git a/patches/components/script/dom/window.rs.patch b/patches/components/script/dom/window.rs.patch index cdb70d3..a63b7c7 100644 --- a/patches/components/script/dom/window.rs.patch +++ b/patches/components/script/dom/window.rs.patch @@ -9,7 +9,7 @@ }; use euclid::default::Rect as UntypedRect; use euclid::{Point2D, Rect, Scale, Size2D, Vector2D}; -@@ -1133,12 +1133,22 @@ +@@ -1139,12 +1139,22 @@ let (sender, receiver) = ProfiledGenericChannel::channel(self.global().time_profiler_chan().clone()).unwrap(); @@ -33,7 +33,7 @@ receiver.recv().unwrap_or_else(|_| { // If the receiver is closed, we assume the dialog was cancelled. debug!("Alert dialog was cancelled or failed to show."); -@@ -1166,13 +1176,22 @@ +@@ -1172,13 +1182,22 @@ // the user to respond with a positive or negative response. let (sender, receiver) = ProfiledGenericChannel::channel(self.global().time_profiler_chan().clone()).unwrap(); @@ -57,7 +57,7 @@ // Step 5: Let userPromptHandler be WebDriver BiDi user prompt opened with this, // "confirm", and message. // -@@ -1217,6 +1236,7 @@ +@@ -1223,6 +1242,7 @@ // defaulted to the value given by default. let (sender, receiver) = ProfiledGenericChannel::channel(self.global().time_profiler_chan().clone()).unwrap(); @@ -65,7 +65,7 @@ let dialog = SimpleDialogRequest::Prompt { id: self.Document().embedder_controls().next_control_id(), message: message.to_string(), -@@ -1223,8 +1243,16 @@ +@@ -1229,8 +1249,16 @@ default: default.to_string(), response_sender: sender, }; @@ -83,7 +83,7 @@ // Step 6: Let userPromptHandler be WebDriver BiDi user prompt opened with this, // "prompt", and message. // TODO: Add support for WebDriver BiDi. -@@ -3049,9 +3077,33 @@ +@@ -3053,9 +3081,33 @@ &self, input_event: &ConstellationInputEvent, ) -> Option { @@ -120,7 +120,7 @@ } #[expect(unsafe_code)] -@@ -3070,8 +3122,25 @@ +@@ -3074,8 +3126,25 @@ // SAFETY: This is safe because `Window::query_elements_from_point` has ensured that // layout has run and any OpaqueNodes that no longer refer to real nodes are gone. let address = UntrustedNodeAddress(result.node.0 as *const c_void); @@ -147,7 +147,7 @@ cursor: result.cursor, point_in_node: result.point_in_target, point_in_frame, -@@ -3753,6 +3822,8 @@ +@@ -3755,6 +3824,8 @@ player_context: WindowGLContext, #[cfg(feature = "webgpu")] gpu_id_hub: Arc, inherited_secure_context: Option, @@ -156,7 +156,7 @@ theme: Theme, weak_script_thread: Weak, ) -> DomRoot { -@@ -3779,6 +3850,8 @@ +@@ -3781,6 +3852,8 @@ gpu_id_hub, inherited_secure_context, unminify_js, diff --git a/patches/components/servo/servo.rs.patch b/patches/components/servo/servo.rs.patch index 0af3ad8..2ba1c68 100644 --- a/patches/components/servo/servo.rs.patch +++ b/patches/components/servo/servo.rs.patch @@ -133,7 +133,7 @@ } } } -@@ -932,6 +1002,14 @@ +@@ -928,6 +998,14 @@ self.0.site_data_manager.borrow() } -- 2.51.2