diff options
author | Taym Haddadi <haddadi.taym@gmail.com> | 2024-01-09 10:12:53 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-09 09:12:53 +0000 |
commit | fddc4a430fca591152c69f0793ab946dcdc81617 (patch) | |
tree | a8af1a28f11d61ccfe31d401a64500fb247cb7f3 /components/script/dom/gpuadapter.rs | |
parent | dd0149d95374593f3c613716284fe584a2324cbb (diff) | |
download | servo-fddc4a430fca591152c69f0793ab946dcdc81617.tar.gz servo-fddc4a430fca591152c69f0793ab946dcdc81617.zip |
Fix failed request for adapter when not available (#31002)
Signed-off-by: Bentaimia Haddadi <haddadi.taym@gmail.com>
Diffstat (limited to 'components/script/dom/gpuadapter.rs')
-rw-r--r-- | components/script/dom/gpuadapter.rs | 50 |
1 files changed, 25 insertions, 25 deletions
diff --git a/components/script/dom/gpuadapter.rs b/components/script/dom/gpuadapter.rs index dd5b31e1be2..03170efb8e2 100644 --- a/components/script/dom/gpuadapter.rs +++ b/components/script/dom/gpuadapter.rs @@ -237,35 +237,35 @@ impl GPUAdapterMethods for GPUAdapter { } impl AsyncWGPUListener for GPUAdapter { - fn handle_response(&self, response: WebGPUResponseResult, promise: &Rc<Promise>) { + fn handle_response(&self, response: Option<WebGPUResponseResult>, promise: &Rc<Promise>) { match response { - Ok(WebGPUResponse::RequestDevice { - device_id, - queue_id, - descriptor, - }) => { - let device = GPUDevice::new( - &self.global(), - self.channel.clone(), - &self, - Heap::default(), - descriptor.features, - descriptor.limits, + Some(response) => match response { + Ok(WebGPUResponse::RequestDevice { device_id, queue_id, - descriptor.label.unwrap_or_default(), - ); - self.global().add_gpu_device(&device); - promise.resolve_native(&device); - }, - Err(e) => { - warn!("Could not get GPUDevice({:?})", e); - promise.reject_error(Error::Operation); - }, - _ => { - warn!("GPUAdapter received wrong WebGPUResponse"); - promise.reject_error(Error::Operation); + descriptor, + }) => { + let device = GPUDevice::new( + &self.global(), + self.channel.clone(), + &self, + Heap::default(), + descriptor.features, + descriptor.limits, + device_id, + queue_id, + descriptor.label.unwrap_or_default(), + ); + self.global().add_gpu_device(&device); + promise.resolve_native(&device); + }, + Err(e) => { + warn!("Could not get GPUDevice({:?})", e); + promise.reject_error(Error::Operation); + }, + Ok(_) => unreachable!("GPUAdapter received wrong WebGPUResponse"), }, + None => unreachable!("Failed to get a response for RequestDevice"), } } } |