@@ -8,8 +8,6 @@ mod renderer;
8
8
mod state;
9
9
use andromeda_core:: { Extension , ExtensionOp , HostData , OpsStorage , ResourceTable , Rid } ;
10
10
use std:: ops:: DerefMut ;
11
- use std:: sync:: { Arc , Mutex } ;
12
- use std:: thread;
13
11
14
12
use crate :: ext:: canvas:: context2d:: {
15
13
internal_canvas_begin_path, internal_canvas_bezier_curve_to, internal_canvas_close_path,
@@ -964,50 +962,29 @@ impl CanvasExt {
964
962
}
965
963
}
966
964
967
- async fn create_wgpu_device ( ) -> ( wgpu:: Device , wgpu:: Queue ) {
965
+ fn create_wgpu_device_sync ( ) -> ( wgpu:: Device , wgpu:: Queue ) {
968
966
let instance = wgpu:: Instance :: new ( & wgpu:: InstanceDescriptor {
969
967
backends : wgpu:: Backends :: all ( ) ,
970
968
..Default :: default ( )
971
969
} ) ;
972
970
973
- let adapter = instance
974
- . request_adapter ( & wgpu:: RequestAdapterOptions {
971
+ let adapter =
972
+ futures :: executor :: block_on ( instance . request_adapter ( & wgpu:: RequestAdapterOptions {
975
973
power_preference : wgpu:: PowerPreference :: default ( ) ,
976
974
compatible_surface : None ,
977
975
force_fallback_adapter : false ,
978
- } )
979
- . await
976
+ } ) )
980
977
. unwrap ( ) ;
981
978
982
- let ( device, queue) = adapter
983
- . request_device ( & wgpu:: DeviceDescriptor {
979
+ let ( device, queue) =
980
+ futures :: executor :: block_on ( adapter . request_device ( & wgpu:: DeviceDescriptor {
984
981
required_features : wgpu:: Features :: empty ( ) ,
985
982
required_limits : wgpu:: Limits :: default ( ) ,
986
983
label : None ,
987
984
memory_hints : Default :: default ( ) ,
988
985
trace : wgpu:: Trace :: default ( ) ,
989
- } )
990
- . await
986
+ } ) )
991
987
. unwrap ( ) ;
992
988
993
989
( device, queue)
994
990
}
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