@@ -8,8 +8,6 @@ mod renderer;
88mod state;
99use andromeda_core:: { Extension , ExtensionOp , HostData , OpsStorage , ResourceTable , Rid } ;
1010use std:: ops:: DerefMut ;
11- use std:: sync:: { Arc , Mutex } ;
12- use std:: thread;
1311
1412use 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