@@ -9,13 +9,13 @@ pub mod ex {
9
9
use std:: num:: NonZeroU32 ;
10
10
use std:: sync:: { mpsc, Arc , Mutex } ;
11
11
use winit:: event:: { Event , KeyEvent , WindowEvent } ;
12
- use winit:: event_loop:: { ControlFlow , EventLoop } ;
12
+ use winit:: event_loop:: { ControlFlow , EventLoop , OwnedDisplayHandle } ;
13
13
use winit:: keyboard:: { Key , NamedKey } ;
14
14
use winit:: window:: Window ;
15
15
16
16
use super :: winit_app;
17
17
18
- type Surface = softbuffer:: Surface < Arc < Window > , Arc < Window > > ;
18
+ type Surface = softbuffer:: Surface < OwnedDisplayHandle , Arc < Window > > ;
19
19
20
20
fn render_thread (
21
21
window : Arc < Window > ,
@@ -60,6 +60,8 @@ pub mod ex {
60
60
}
61
61
62
62
pub fn entry ( event_loop : EventLoop < ( ) > ) {
63
+ let context = softbuffer:: Context :: new ( event_loop. owned_display_handle ( ) ) . unwrap ( ) ;
64
+
63
65
let app = winit_app:: WinitAppBuilder :: with_init (
64
66
|elwt| {
65
67
let attributes = Window :: default_attributes ( ) ;
@@ -68,8 +70,6 @@ pub mod ex {
68
70
winit:: platform:: web:: WindowAttributesExtWebSys :: with_append ( attributes, true ) ;
69
71
let window = Arc :: new ( elwt. create_window ( attributes) . unwrap ( ) ) ;
70
72
71
- let context = softbuffer:: Context :: new ( window. clone ( ) ) . unwrap ( ) ;
72
-
73
73
// Spawn a thread to handle rendering for this specific surface. The channels will
74
74
// be closed and the thread will be stopped whenever this surface (the returned
75
75
// context below) is dropped, so that it can all be recreated again (on Android)
@@ -82,17 +82,17 @@ pub mod ex {
82
82
move || render_thread ( window, do_render, render_done)
83
83
} ) ;
84
84
85
- ( window, context , start_render, finish_render)
85
+ ( window, start_render, finish_render)
86
86
} ,
87
- |_elwt, ( window, context , _start_render, _finish_render) | {
87
+ move |_elwt, ( window, _start_render, _finish_render) | {
88
88
println ! ( "making surface..." ) ;
89
89
Arc :: new ( Mutex :: new (
90
- softbuffer:: Surface :: new ( context, window. clone ( ) ) . unwrap ( ) ,
90
+ softbuffer:: Surface :: new ( & context, window. clone ( ) ) . unwrap ( ) ,
91
91
) )
92
92
} ,
93
93
)
94
94
. with_event_handler ( |state, surface, event, elwt| {
95
- let ( window, _context , start_render, finish_render) = state;
95
+ let ( window, start_render, finish_render) = state;
96
96
elwt. set_control_flow ( ControlFlow :: Wait ) ;
97
97
98
98
match event {
0 commit comments