diff options
author | Samson <16504129+sagudev@users.noreply.github.com> | 2024-07-17 22:37:52 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-17 20:37:52 +0000 |
commit | 34eed29037ba7c7ab68cd6ddbf27aa0fe81d6a47 (patch) | |
tree | 7084d8874d890943ae35e5721f6db4606b5f2e10 /components/script/dom/gpu.rs | |
parent | 122333554768d69789a08df25c0bcde3ddd1aa4c (diff) | |
download | servo-34eed29037ba7c7ab68cd6ddbf27aa0fe81d6a47.tar.gz servo-34eed29037ba7c7ab68cd6ddbf27aa0fe81d6a47.zip |
Less nesting in webgpu response (#32799)
* Remove Option wrap of WebGPUResponse
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Replace WebGPUResponseResult with WebGPUResponse
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
---------
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
Diffstat (limited to 'components/script/dom/gpu.rs')
-rw-r--r-- | components/script/dom/gpu.rs | 62 |
1 files changed, 27 insertions, 35 deletions
diff --git a/components/script/dom/gpu.rs b/components/script/dom/gpu.rs index 305957fdb50..c485cbdcc7b 100644 --- a/components/script/dom/gpu.rs +++ b/components/script/dom/gpu.rs @@ -10,7 +10,7 @@ use ipc_channel::router::ROUTER; use js::jsapi::Heap; use script_traits::ScriptMsg; use webgpu::wgt::PowerPreference; -use webgpu::{wgc, WebGPUResponse, WebGPUResponseResult}; +use webgpu::{wgc, WebGPUResponse}; use super::bindings::codegen::Bindings::WebGPUBinding::GPUTextureFormat; use crate::dom::bindings::codegen::Bindings::WebGPUBinding::{ @@ -45,7 +45,7 @@ impl GPU { } pub trait AsyncWGPUListener { - fn handle_response(&self, response: Option<WebGPUResponseResult>, promise: &Rc<Promise>); + fn handle_response(&self, response: WebGPUResponse, promise: &Rc<Promise>); } struct WGPUResponse<T: AsyncWGPUListener + DomObject> { @@ -55,7 +55,7 @@ struct WGPUResponse<T: AsyncWGPUListener + DomObject> { impl<T: AsyncWGPUListener + DomObject> WGPUResponse<T> { #[allow(crown::unrooted_must_root)] - fn response(self, response: Option<WebGPUResponseResult>) { + fn response(self, response: WebGPUResponse) { let promise = self.trusted.root(); self.receiver.root().handle_response(response, &promise); } @@ -64,7 +64,7 @@ impl<T: AsyncWGPUListener + DomObject> WGPUResponse<T> { pub fn response_async<T: AsyncWGPUListener + DomObject + 'static>( promise: &Rc<Promise>, receiver: &T, -) -> IpcSender<Option<WebGPUResponseResult>> { +) -> IpcSender<WebGPUResponse> { let (action_sender, action_receiver) = ipc::channel().unwrap(); let task_source = receiver.global().dom_manipulation_task_source(); let canceller = receiver @@ -139,42 +139,34 @@ impl GPUMethods for GPU { } impl AsyncWGPUListener for GPU { - fn handle_response(&self, response: Option<WebGPUResponseResult>, promise: &Rc<Promise>) { + fn handle_response(&self, response: WebGPUResponse, promise: &Rc<Promise>) { match response { - Some(response) => match response { - Ok(WebGPUResponse::RequestAdapter { - adapter_info, - adapter_id, - features, - limits, - channel, - }) => { - let adapter = GPUAdapter::new( - &self.global(), - channel, - DOMString::from(format!( - "{} ({:?})", - adapter_info.name, - adapter_id.0.backend() - )), - Heap::default(), - features, - limits, - adapter_info, - adapter_id, - ); - promise.resolve_native(&adapter); - }, - Err(e) => { - warn!("Could not get GPUAdapter ({:?})", e); - promise.resolve_native(&None::<GPUAdapter>); - }, - Ok(_) => unreachable!("GPU received wrong WebGPUResponse"), + WebGPUResponse::Adapter(Ok(adapter)) => { + let adapter = GPUAdapter::new( + &self.global(), + adapter.channel, + DOMString::from(format!( + "{} ({:?})", + adapter.adapter_info.name, + adapter.adapter_id.0.backend() + )), + Heap::default(), + adapter.features, + adapter.limits, + adapter.adapter_info, + adapter.adapter_id, + ); + promise.resolve_native(&adapter); + }, + WebGPUResponse::Adapter(Err(e)) => { + warn!("Could not get GPUAdapter ({:?})", e); + promise.resolve_native(&None::<GPUAdapter>); }, - None => { + WebGPUResponse::None => { warn!("Couldn't get a response, because WebGPU is disabled"); promise.resolve_native(&None::<GPUAdapter>); }, + _ => unreachable!("GPU received wrong WebGPUResponse"), } } } |