From ecf42b97df85df25b1b825f37adfeb00f658f6ee Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Thu, 7 Mar 2024 23:25:24 +0100 Subject: Fix `block_on` in `iced_wgpu` hanging Wasm builds --- wgpu/src/window/compositor.rs | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) (limited to 'wgpu/src') diff --git a/wgpu/src/window/compositor.rs b/wgpu/src/window/compositor.rs index 0a5d2c8f..328ad781 100644 --- a/wgpu/src/window/compositor.rs +++ b/wgpu/src/window/compositor.rs @@ -6,6 +6,8 @@ use crate::graphics::compositor; use crate::graphics::{Error, Viewport}; use crate::{Backend, Primitive, Renderer, Settings}; +use std::future::Future; + /// A window graphics backend for iced powered by `wgpu`. #[allow(missing_debug_implementations)] pub struct Compositor { @@ -158,17 +160,13 @@ impl Compositor { /// Creates a [`Compositor`] and its [`Backend`] for the given [`Settings`] and /// window. -pub fn new( +pub async fn new( settings: Settings, compatible_window: W, ) -> Result { - let compositor = futures::executor::block_on(Compositor::request( - settings, - Some(compatible_window), - )) - .ok_or(Error::GraphicsAdapterNotFound)?; - - Ok(compositor) + Compositor::request(settings, Some(compatible_window)) + .await + .ok_or(Error::GraphicsAdapterNotFound) } /// Presents the given primitives with the given [`Compositor`] and [`Backend`]. @@ -234,7 +232,7 @@ impl graphics::Compositor for Compositor { fn new( settings: Self::Settings, compatible_window: W, - ) -> Result { + ) -> impl Future> { new(settings, compatible_window) } -- cgit