@@ -40,7 +40,6 @@ pub struct WinitPlugin;
40
40
impl Plugin for WinitPlugin {
41
41
fn build ( & self , app : & mut App ) {
42
42
app. init_non_send_resource :: < WinitWindows > ( )
43
- . init_resource :: < WinitPersistentState > ( )
44
43
. init_resource :: < WinitConfig > ( )
45
44
. set_runner ( winit_runner)
46
45
. add_system_to_stage ( CoreStage :: PostUpdate , change_window. exclusive_system ( ) ) ;
@@ -265,6 +264,7 @@ pub fn winit_runner_with(mut app: App) {
265
264
let mut create_window_event_reader = ManualEventReader :: < CreateWindow > :: default ( ) ;
266
265
let mut app_exit_event_reader = ManualEventReader :: < AppExit > :: default ( ) ;
267
266
let mut redraw_event_reader = ManualEventReader :: < RequestRedraw > :: default ( ) ;
267
+ let mut winit_state = WinitPersistentState :: default ( ) ;
268
268
app. world
269
269
. insert_non_send_resource ( event_loop. create_proxy ( ) ) ;
270
270
@@ -276,7 +276,6 @@ pub fn winit_runner_with(mut app: App) {
276
276
control_flow : & mut ControlFlow | {
277
277
match event {
278
278
event:: Event :: NewEvents ( start) => {
279
- let winit_state = app. world . resource :: < WinitPersistentState > ( ) ;
280
279
let winit_config = app. world . resource :: < WinitConfig > ( ) ;
281
280
let windows = app. world . resource :: < Windows > ( ) ;
282
281
let focused = windows. iter ( ) . any ( |w| w. is_focused ( ) ) ;
@@ -293,8 +292,7 @@ pub fn winit_runner_with(mut app: App) {
293
292
now. duration_since ( winit_state. last_update ) >= * max_wait
294
293
}
295
294
} ;
296
- let mut winit_state = app. world . resource_mut :: < WinitPersistentState > ( ) ;
297
- // The low_power_event state must be reset at the start of every frame.
295
+ // The low_power_event state and timeout must be reset at the start of every frame.
298
296
winit_state. low_power_event = false ;
299
297
winit_state. timeout_reached = auto_timeout_reached || manual_timeout_reached;
300
298
}
@@ -323,11 +321,7 @@ pub fn winit_runner_with(mut app: App) {
323
321
warn ! ( "Skipped event for unknown Window Id {:?}" , winit_window_id) ;
324
322
return ;
325
323
} ;
326
-
327
- world
328
- . get_resource_mut :: < WinitPersistentState > ( )
329
- . unwrap ( )
330
- . low_power_event = true ;
324
+ winit_state. low_power_event = true ;
331
325
332
326
match event {
333
327
WindowEvent :: Resized ( size) => {
@@ -538,18 +532,17 @@ pub fn winit_runner_with(mut app: App) {
538
532
} ) ;
539
533
}
540
534
event:: Event :: Suspended => {
541
- app . world . resource_mut :: < WinitPersistentState > ( ) . active = false ;
535
+ winit_state . active = false ;
542
536
}
543
537
event:: Event :: Resumed => {
544
- app . world . resource_mut :: < WinitPersistentState > ( ) . active = true ;
538
+ winit_state . active = true ;
545
539
}
546
540
event:: Event :: MainEventsCleared => {
547
541
handle_create_window_events (
548
542
& mut app. world ,
549
543
event_loop,
550
544
& mut create_window_event_reader,
551
545
) ;
552
- let winit_state = app. world . resource :: < WinitPersistentState > ( ) ;
553
546
let winit_config = app. world . resource :: < WinitConfig > ( ) ;
554
547
let update = if winit_state. active {
555
548
let windows = app. world . resource :: < Windows > ( ) ;
@@ -566,7 +559,7 @@ pub fn winit_runner_with(mut app: App) {
566
559
false
567
560
} ;
568
561
if update {
569
- app . world . resource_mut :: < WinitPersistentState > ( ) . last_update = Instant :: now ( ) ;
562
+ winit_state . last_update = Instant :: now ( ) ;
570
563
app. update ( ) ;
571
564
}
572
565
}
@@ -599,9 +592,7 @@ pub fn winit_runner_with(mut app: App) {
599
592
* control_flow = ControlFlow :: Exit ;
600
593
}
601
594
}
602
- app. world
603
- . resource_mut :: < WinitPersistentState > ( )
604
- . redraw_request_sent = redraw;
595
+ winit_state. redraw_request_sent = redraw;
605
596
}
606
597
_ => ( ) ,
607
598
}
0 commit comments