1+ use raw_window_handle:: { HasDisplayHandle , HasWindowHandle } ;
2+ use softbuffer:: Buffer ;
13use std:: num:: NonZeroU32 ;
24use winit:: event:: { ElementState , Event , KeyEvent , WindowEvent } ;
35use winit:: event_loop:: { ControlFlow , EventLoop } ;
@@ -6,7 +8,9 @@ use winit::keyboard::{Key, NamedKey};
68#[ path = "utils/winit_app.rs" ]
79mod winit_app;
810
9- fn redraw ( buffer : & mut [ u32 ] , width : usize , height : usize , flag : bool ) {
11+ fn redraw ( buffer : & mut Buffer < ' _ , impl HasDisplayHandle , impl HasWindowHandle > , flag : bool ) {
12+ let width = buffer. width ( ) ;
13+ let height = buffer. height ( ) ;
1014 for y in 0 ..height {
1115 for x in 0 ..width {
1216 let value = if flag && x >= 100 && x < width - 100 && y >= 100 && y < height - 100 {
@@ -71,21 +75,10 @@ fn main() {
7175 eprintln ! ( "RedrawRequested fired before Resumed or after Suspended" ) ;
7276 return ;
7377 } ;
74- // Grab the window's client area dimensions, and ensure they're valid
75- let size = window. inner_size ( ) ;
76- if let ( Some ( width) , Some ( height) ) =
77- ( NonZeroU32 :: new ( size. width ) , NonZeroU32 :: new ( size. height ) )
78- {
79- // Draw something in the window
80- let mut buffer = surface. buffer_mut ( ) . unwrap ( ) ;
81- redraw (
82- & mut buffer,
83- width. get ( ) as usize ,
84- height. get ( ) as usize ,
85- * flag,
86- ) ;
87- buffer. present ( ) . unwrap ( ) ;
88- }
78+ // Draw something in the window
79+ let mut buffer = surface. buffer_mut ( ) . unwrap ( ) ;
80+ redraw ( & mut buffer, * flag) ;
81+ buffer. present ( ) . unwrap ( ) ;
8982 }
9083
9184 Event :: WindowEvent {
0 commit comments