diff options
author | Ngo Iok Ui (Wu Yu Wei) <yuweiwu@pm.me> | 2025-01-01 17:26:23 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-01-01 08:26:23 +0000 |
commit | d581acab3bd244e233105edde972a0605224358a (patch) | |
tree | 74573f0f2f97f27d42cda65fb22288ae1c5b6a0f /ports/servoshell/egl/ohos/simpleservo.rs | |
parent | 59c7ac680ee7cd4eba2c9adb119dbcaf69f029cd (diff) | |
download | servo-d581acab3bd244e233105edde972a0605224358a.tar.gz servo-d581acab3bd244e233105edde972a0605224358a.zip |
chore: remove `WindowMethods::rendering_context` (#34780)
* Create Servo without initial webview ID
Signed-off-by: Wu Yuwei <yuweiwu@pm.me>
* Add rendering context in App struct
Signed-off-by: Wu Yuwei <yuweiwu@pm.me>
* Make webview manager optional
Signed-off-by: Wu Yuwei <yuweiwu@pm.me>
* Move window creation to init
Signed-off-by: Wu Yuwei <yuweiwu@pm.me>
* Create window from external rendering context
Signed-off-by: Wu Yuwei <yuweiwu@pm.me>
* Resize surface in compositor
Signed-off-by: Wu Yuwei <yuweiwu@pm.me>
* Obey clippy
Signed-off-by: Wu Yuwei <yuweiwu@pm.me>
* Update Android and OHOS
Signed-off-by: Wu Yuwei <yuweiwu@pm.me>
* Add missing arguent on OHOS
Signed-off-by: Wu Yuwei <yuweiwu@pm.me>
* Show webview after focused on Android and OH
Signed-off-by: Wu Yuwei <yuweiwu@pm.me>
* Remove rendering_context in ServoWindowCallbacks
Signed-off-by: Wu Yuwei <yuweiwu@pm.me>
* Create surface before swapchain in headless mode
Signed-off-by: Wu Yuwei <yuweiwu@pm.me>
---------
Signed-off-by: Wu Yuwei <yuweiwu@pm.me>
Diffstat (limited to 'ports/servoshell/egl/ohos/simpleservo.rs')
-rw-r--r-- | ports/servoshell/egl/ohos/simpleservo.rs | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/ports/servoshell/egl/ohos/simpleservo.rs b/ports/servoshell/egl/ohos/simpleservo.rs index 97e0e02f072..8aff4d41a26 100644 --- a/ports/servoshell/egl/ohos/simpleservo.rs +++ b/ports/servoshell/egl/ohos/simpleservo.rs @@ -9,6 +9,7 @@ use std::rc::Rc; use log::{debug, error, info}; use ohos_sys::xcomponent::{OH_NativeXComponent, OH_NativeXComponent_GetXComponentSize}; +use servo::base::id::WebViewId; use servo::compositing::windowing::EmbedderEvent; use servo::compositing::CompositeTarget; use servo::embedder_traits::resources; @@ -118,8 +119,14 @@ pub fn init( let surface_type = SurfaceType::Widget { native_widget }; info!("Creating rendering context"); - let rendering_context = RenderingContext::create(&connection, &adapter, surface_type) + let rendering_context = RenderingContext::create(&connection, &adapter, None) .or(Err("Failed to create surface manager"))?; + let surface = rendering_context + .create_surface(surface_type) + .or(Err("Failed to create surface"))?; + rendering_context + .bind_surface(surface) + .or(Err("Failed to bind surface"))?; info!("before ServoWindowCallbacks..."); @@ -127,7 +134,6 @@ pub fn init( callbacks, RefCell::new(Coordinates::new(0, 0, width, height, width, height)), options.display_density as f32, - rendering_context.clone(), )); let embedder_callbacks = Box::new(ServoEmbedderCallbacks::new( @@ -137,6 +143,7 @@ pub fn init( )); let servo = Servo::new( + rendering_context.clone(), embedder_callbacks, window_callbacks.clone(), // User agent: Mozilla/5.0 (<Phone|PC|Tablet>; HarmonyOS 5.0) bla bla @@ -146,7 +153,7 @@ pub fn init( let mut servo_glue = ServoGlue::new( rendering_context, - servo.servo, + servo, window_callbacks, Some(options.resource_dir), ); @@ -156,7 +163,7 @@ pub fn init( .ok() .unwrap_or_else(|| ServoUrl::parse("about:blank").expect("Infallible")); - let _ = servo_glue.process_event(EmbedderEvent::NewWebView(initial_url, servo.browser_id)); + let _ = servo_glue.process_event(EmbedderEvent::NewWebView(initial_url, WebViewId::new())); Ok(servo_glue) } |