aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/gpuadapter.rs
diff options
context:
space:
mode:
authorTaym Haddadi <haddadi.taym@gmail.com>2024-01-09 10:12:53 +0100
committerGitHub <noreply@github.com>2024-01-09 09:12:53 +0000
commitfddc4a430fca591152c69f0793ab946dcdc81617 (patch)
treea8af1a28f11d61ccfe31d401a64500fb247cb7f3 /components/script/dom/gpuadapter.rs
parentdd0149d95374593f3c613716284fe584a2324cbb (diff)
downloadservo-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.rs50
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"),
}
}
}