From d4046ca4e7c930f28995b7f66e6a321c38b94c51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E7=94=B5=E8=8A=BD=E8=A1=A3?= Date: Wed, 13 May 2026 04:14:18 -0400 Subject: [PATCH] Default Servo live rendering to hardware on macOS --- crates/ely_app/src/services/servo_live.rs | 6 ++---- .../src/services/servo_sidecar_command.rs | 16 ++++++++++++++-- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/crates/ely_app/src/services/servo_live.rs b/crates/ely_app/src/services/servo_live.rs index d066977..eaf5c77 100644 --- a/crates/ely_app/src/services/servo_live.rs +++ b/crates/ely_app/src/services/servo_live.rs @@ -7,10 +7,8 @@ use std::{ /// Environment variable that lets the user pick the rendering context /// kind used by the spawned sidecar. Accepted values: `software` -/// and `hardware`. The default stays on the software context because -/// the live sidecar talks to the app over stdio; the hardware path -/// requires a transport that moves the IOSurface mach send right into -/// the receiver process. +/// and `hardware`. macOS defaults to the hardware path and receives +/// IOSurface mach send rights over a side Mach channel. use ely_domain::SitePermissionDecision; use serde::Serialize; use thiserror::Error; diff --git a/crates/ely_app/src/services/servo_sidecar_command.rs b/crates/ely_app/src/services/servo_sidecar_command.rs index 5cf718e..57f04a5 100644 --- a/crates/ely_app/src/services/servo_sidecar_command.rs +++ b/crates/ely_app/src/services/servo_sidecar_command.rs @@ -139,7 +139,11 @@ fn rendering_context_selection(raw: Option<&str>) -> SidecarRenderingContext { } fn default_rendering_context() -> SidecarRenderingContext { - SidecarRenderingContext::Software + if cfg!(target_os = "macos") { + SidecarRenderingContext::Hardware + } else { + SidecarRenderingContext::Software + } } fn workspace_target_sidecar_path(manifest_path: &Path) -> Option { @@ -176,8 +180,16 @@ mod tests { assert_eq!(context.sidecar_features(), SOFTWARE_SIDECAR_FEATURES); } + #[cfg(target_os = "macos")] #[test] - fn defaults_to_software_rendering_context() { + fn defaults_to_hardware_rendering_context_on_macos() { + assert_eq!(rendering_context_selection(None), SidecarRenderingContext::Hardware); + assert_eq!(rendering_context_selection(Some("garbage")), SidecarRenderingContext::Hardware); + } + + #[cfg(not(target_os = "macos"))] + #[test] + fn defaults_to_software_rendering_context_off_macos() { assert_eq!(rendering_context_selection(None), SidecarRenderingContext::Software); assert_eq!(rendering_context_selection(Some("garbage")), SidecarRenderingContext::Software); }