@@ -9,13 +9,13 @@ pub mod ex {
99 use std:: num:: NonZeroU32 ;
1010 use std:: sync:: { mpsc, Arc , Mutex } ;
1111 use winit:: event:: { Event , KeyEvent , WindowEvent } ;
12- use winit:: event_loop:: { ControlFlow , EventLoop } ;
12+ use winit:: event_loop:: { ControlFlow , EventLoop , OwnedDisplayHandle } ;
1313 use winit:: keyboard:: { Key , NamedKey } ;
1414 use winit:: window:: Window ;
1515
1616 use super :: winit_app;
1717
18- type Surface = softbuffer:: Surface < Arc < Window > , Arc < Window > > ;
18+ type Surface = softbuffer:: Surface < OwnedDisplayHandle , Arc < Window > > ;
1919
2020 fn render_thread (
2121 window : Arc < Window > ,
@@ -60,6 +60,8 @@ pub mod ex {
6060 }
6161
6262 pub fn entry ( event_loop : EventLoop < ( ) > ) {
63+ let context = softbuffer:: Context :: new ( event_loop. owned_display_handle ( ) ) . unwrap ( ) ;
64+
6365 let app = winit_app:: WinitAppBuilder :: with_init (
6466 |elwt| {
6567 let attributes = Window :: default_attributes ( ) ;
@@ -68,8 +70,6 @@ pub mod ex {
6870 winit:: platform:: web:: WindowAttributesExtWebSys :: with_append ( attributes, true ) ;
6971 let window = Arc :: new ( elwt. create_window ( attributes) . unwrap ( ) ) ;
7072
71- let context = softbuffer:: Context :: new ( window. clone ( ) ) . unwrap ( ) ;
72-
7373 // Spawn a thread to handle rendering for this specific surface. The channels will
7474 // be closed and the thread will be stopped whenever this surface (the returned
7575 // context below) is dropped, so that it can all be recreated again (on Android)
@@ -82,17 +82,17 @@ pub mod ex {
8282 move || render_thread ( window, do_render, render_done)
8383 } ) ;
8484
85- ( window, context , start_render, finish_render)
85+ ( window, start_render, finish_render)
8686 } ,
87- |_elwt, ( window, context , _start_render, _finish_render) | {
87+ move |_elwt, ( window, _start_render, _finish_render) | {
8888 println ! ( "making surface..." ) ;
8989 Arc :: new ( Mutex :: new (
90- softbuffer:: Surface :: new ( context, window. clone ( ) ) . unwrap ( ) ,
90+ softbuffer:: Surface :: new ( & context, window. clone ( ) ) . unwrap ( ) ,
9191 ) )
9292 } ,
9393 )
9494 . with_event_handler ( |state, surface, event, elwt| {
95- let ( window, _context , start_render, finish_render) = state;
95+ let ( window, start_render, finish_render) = state;
9696 elwt. set_control_flow ( ControlFlow :: Wait ) ;
9797
9898 match event {
0 commit comments