Skip to content

Commit 8a616eb

Browse files
committed
fix: no longer awaiting of wgpu device
1 parent d9023d7 commit 8a616eb

File tree

4 files changed

+13
-34
lines changed

4 files changed

+13
-34
lines changed

Cargo.lock

Lines changed: 4 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ authors = ["the Andromeda team"]
77
edition = "2024"
88
license = "Mozilla Public License 2.0"
99
repository = "https://github.com/tryandromeda/andromeda"
10-
version = "0.1.0-draft34"
10+
version = "0.1.0-draft35"
1111

1212
[workspace.dependencies]
1313
andromeda-core = { path = "core" }

runtime/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ nova_vm.workspace = true
2020
anymap.workspace = true
2121
async-trait.workspace = true
2222
chrono.workspace = true
23+
futures.workspace = true
2324
tokio = { workspace = true, features = [
2425
"net",
2526
"rt-multi-thread",

runtime/src/ext/canvas/mod.rs

Lines changed: 7 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ mod renderer;
88
mod state;
99
use andromeda_core::{Extension, ExtensionOp, HostData, OpsStorage, ResourceTable, Rid};
1010
use std::ops::DerefMut;
11-
use std::sync::{Arc, Mutex};
12-
use std::thread;
1311

1412
use crate::ext::canvas::context2d::{
1513
internal_canvas_begin_path, internal_canvas_bezier_curve_to, internal_canvas_close_path,
@@ -964,50 +962,29 @@ impl CanvasExt {
964962
}
965963
}
966964

967-
async fn create_wgpu_device() -> (wgpu::Device, wgpu::Queue) {
965+
fn create_wgpu_device_sync() -> (wgpu::Device, wgpu::Queue) {
968966
let instance = wgpu::Instance::new(&wgpu::InstanceDescriptor {
969967
backends: wgpu::Backends::all(),
970968
..Default::default()
971969
});
972970

973-
let adapter = instance
974-
.request_adapter(&wgpu::RequestAdapterOptions {
971+
let adapter =
972+
futures::executor::block_on(instance.request_adapter(&wgpu::RequestAdapterOptions {
975973
power_preference: wgpu::PowerPreference::default(),
976974
compatible_surface: None,
977975
force_fallback_adapter: false,
978-
})
979-
.await
976+
}))
980977
.unwrap();
981978

982-
let (device, queue) = adapter
983-
.request_device(&wgpu::DeviceDescriptor {
979+
let (device, queue) =
980+
futures::executor::block_on(adapter.request_device(&wgpu::DeviceDescriptor {
984981
required_features: wgpu::Features::empty(),
985982
required_limits: wgpu::Limits::default(),
986983
label: None,
987984
memory_hints: Default::default(),
988985
trace: wgpu::Trace::default(),
989-
})
990-
.await
986+
}))
991987
.unwrap();
992988

993989
(device, queue)
994990
}
995-
996-
fn create_wgpu_device_sync() -> (wgpu::Device, wgpu::Queue) {
997-
// Use a simple blocking executor - we'll create a simpler version for now
998-
let result = Arc::new(Mutex::new(None));
999-
let result_clone = result.clone();
1000-
1001-
thread::spawn(move || {
1002-
let rt = tokio::runtime::Builder::new_current_thread()
1003-
.enable_all()
1004-
.build()
1005-
.unwrap();
1006-
let device_queue = rt.block_on(create_wgpu_device());
1007-
*result_clone.lock().unwrap() = Some(device_queue);
1008-
})
1009-
.join()
1010-
.unwrap();
1011-
1012-
result.lock().unwrap().take().unwrap()
1013-
}

0 commit comments

Comments
 (0)