File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -351,6 +351,7 @@ impl ApplicationHandler<UserEvent> for App {
351351 UserEvent :: Quit => {
352352 event_loop. exit ( ) ;
353353 }
354+ UserEvent :: Redraw => { }
354355 }
355356 }
356357}
Original file line number Diff line number Diff line change @@ -82,9 +82,10 @@ fn main() -> ExitCode {
8282 . build ( )
8383 . expect ( "Failed to create event loop" ) ;
8484
85- event_loop. set_control_flow ( ControlFlow :: Poll ) ;
85+ event_loop. set_control_flow ( ControlFlow :: Wait ) ;
8686
8787 let event_loop_proxy = event_loop. create_proxy ( ) ;
88+ shared:: EVENT_LOOP_PROXY . set ( event_loop_proxy. clone ( ) ) . ok ( ) ;
8889
8990 let mut needs_redraw = false ;
9091
Original file line number Diff line number Diff line change @@ -212,6 +212,7 @@ impl Player {
212212 let sender = self . sender . clone ( ) ;
213213 render_context. set_update_callback ( move || {
214214 sender. send ( PlayerEvent :: Update ) . ok ( ) ;
215+ crate :: shared:: wake_event_loop ( ) ;
215216 } ) ;
216217
217218 self . render_context = Some ( render_context) ;
Original file line number Diff line number Diff line change @@ -6,6 +6,19 @@ use std::{
66 sync:: { Mutex , RwLock } ,
77} ;
88
9+ use once_cell:: sync:: OnceCell ;
10+ use winit:: event_loop:: EventLoopProxy ;
11+
12+ use self :: types:: UserEvent ;
13+
14+ pub static EVENT_LOOP_PROXY : OnceCell < EventLoopProxy < UserEvent > > = OnceCell :: new ( ) ;
15+
16+ pub fn wake_event_loop ( ) {
17+ if let Some ( proxy) = EVENT_LOOP_PROXY . get ( ) {
18+ proxy. send_event ( UserEvent :: Redraw ) . ok ( ) ;
19+ }
20+ }
21+
922use glutin:: {
1023 context:: { NotCurrentContext , PossiblyCurrentContext } ,
1124 prelude:: { NotCurrentGlContext , PossiblyCurrentGlContext } ,
Original file line number Diff line number Diff line change @@ -47,4 +47,5 @@ pub enum UserEvent {
4747 Show ,
4848 Hide ,
4949 Quit ,
50+ Redraw ,
5051}
Original file line number Diff line number Diff line change @@ -40,7 +40,7 @@ impl Tray {
4040 let menu = Self :: create_menu ( ) ;
4141 let tray = Self :: create ( menu, config) ;
4242
43- glib:: timeout_add_local ( Duration :: from_millis ( 16 ) , move || {
43+ glib:: timeout_add_local ( Duration :: from_millis ( 100 ) , move || {
4444 tray_receiver. try_iter ( ) . for_each ( |event| match event {
4545 TrayEvent :: Visibility ( state) => {
4646 let menu = Self :: create_menu ( ) ;
Original file line number Diff line number Diff line change @@ -55,6 +55,7 @@ cef_impl!(
5555
5656 if let Some ( sender) = SENDER . get( ) {
5757 sender. send( WebViewEvent :: Paint ) . ok( ) ;
58+ crate :: shared:: wake_event_loop( ) ;
5859 }
5960 } else if let Some ( sender) = SENDER . get( ) {
6061 sender. send( WebViewEvent :: Resized ) . ok( ) ;
You can’t perform that action at this time.
0 commit comments