@@ -23,8 +23,6 @@ use flutter_plugins::settings::SettingsPlugin;
23
23
use flutter_plugins:: system:: SystemPlugin ;
24
24
use flutter_plugins:: textinput:: TextInputPlugin ;
25
25
use flutter_plugins:: window:: WindowPlugin ;
26
- use glfw:: Context ;
27
- use lazy_static:: lazy_static;
28
26
use log:: { debug, info} ;
29
27
use parking_lot:: Mutex ;
30
28
use std:: collections:: { HashMap , VecDeque } ;
@@ -85,15 +83,6 @@ unsafe impl Send for WindowSafe {}
85
83
86
84
unsafe impl Sync for WindowSafe { }
87
85
88
- // This HashMap is used to look up FlutterEngine using glfw Window
89
- lazy_static ! {
90
- static refENGINES : Mutex <HashMap <WindowSafe , FlutterEngine >> =Mutex :: new( HashMap :: new( ) ) ;
91
- }
92
-
93
- pub fn get_engine ( window : * mut glfw:: ffi:: GLFWwindow ) ->Option < FlutterEngine > {
94
- ENGINES . lock ( ) . get ( & WindowSafe ( window) ) . cloned ( )
95
- }
96
-
97
86
pub ( crate ) type MainTheadFn =Box < dyn FnMut ( & FlutterWindow ) +Send > ;
98
87
pub type WindowEventHandler =dyn FnMut ( & FlutterWindow , glfw:: WindowEvent ) ->bool ;
99
88
pub type PerFrameCallback =dyn FnMut ( & FlutterWindow ) ;
@@ -191,13 +180,6 @@ impl FlutterWindow {
191
180
. build ( )
192
181
. expect ( "Failed to create engine" ) ;
193
182
194
- // register window and engine globally
195
- {
196
- ENGINES
197
- . lock ( )
198
- . insert ( WindowSafe ( window. lock ( ) . window_ptr ( ) ) , engine. clone ( ) ) ;
199
- }
200
-
201
183
// Main thread callbacks
202
184
let ( main_tx, main_rx) = mpsc:: channel ( ) ;
203
185
@@ -319,13 +301,7 @@ impl FlutterWindow {
319
301
window. set_scroll_polling ( true ) ;
320
302
window. set_size_polling ( true ) ;
321
303
window. set_content_scale_polling ( true ) ;
322
-
323
- unsafe {
324
- glfw:: ffi:: glfwSetWindowRefreshCallback (
325
- window. window_ptr ( ) ,
326
- Some ( window_refreshed) ,
327
- ) ;
328
- }
304
+ window. set_refresh_polling ( true ) ;
329
305
}
330
306
331
307
self . with_plugin (
@@ -400,10 +376,6 @@ impl FlutterWindow {
400
376
}
401
377
402
378
pub fn shutdown ( self ) {
403
- ENGINES
404
- . lock ( )
405
- . remove ( & WindowSafe ( self . window . lock ( ) . window_ptr ( ) ) ) ;
406
-
407
379
self . engine . shutdown ( ) ;
408
380
}
409
381
@@ -490,6 +462,30 @@ impl FlutterWindow {
490
462
}
491
463
492
464
match event{
465
+ glfw:: WindowEvent :: Refresh =>{
466
+ let window =self . window . lock ( ) ;
467
+
468
+ // let window_size = window.get_size();
469
+ let framebuffer_size = window. get_framebuffer_size ( ) ;
470
+ let scale = window. get_content_scale ( ) ;
471
+
472
+ // probably dont need this, since after resize a framebuffer size
473
+ // change event is sent and set this regardless
474
+ // self.window_pixels_per_screen_coordinate =
475
+ // f64::from(framebuffer_size.0) / f64::from(window_size.0);
476
+
477
+ log:: debug!(
478
+ "Setting framebuffer size to {:?}, scale to {}" ,
479
+ framebuffer_size,
480
+ scale. 0
481
+ ) ;
482
+
483
+ self . engine . send_window_metrics_event (
484
+ framebuffer_size. 0 as _ ,
485
+ framebuffer_size. 1 as _ ,
486
+ f64:: from ( scale. 0 ) ,
487
+ ) ;
488
+ }
493
489
glfw:: WindowEvent :: CursorEnter ( entered) =>{
494
490
let cursor_pos =self . window . lock ( ) . get_cursor_pos ( ) ;
495
491
self . send_pointer_event (
@@ -782,38 +778,3 @@ impl FlutterWindow {
782
778
}
783
779
}
784
780
}
785
-
786
- extern "C" fn window_refreshed ( window : * mut glfw:: ffi:: GLFWwindow ) {
787
- if let Some ( engine) =get_engine ( window) {
788
- let mut window_size: ( i32 , i32 ) =( 0 , 0 ) ;
789
- let mut framebuffer_size: ( i32 , i32 ) =( 0 , 0 ) ;
790
- let mut scale: ( f32 , f32 ) =( 0.0 , 0.0 ) ;
791
-
792
- unsafe {
793
- glfw:: ffi:: glfwGetWindowSize ( window, & mut window_size. 0 , & mut window_size. 1 ) ;
794
- glfw:: ffi:: glfwGetFramebufferSize (
795
- window,
796
- & mut framebuffer_size. 0 ,
797
- & mut framebuffer_size. 1 ,
798
- ) ;
799
- glfw:: ffi:: glfwGetWindowContentScale ( window, & mut scale. 0 , & mut scale. 1 ) ;
800
- }
801
-
802
- // probably dont need this, since after resize a framebuffer size
803
- // change event is sent and set this regardless
804
- // self.window_pixels_per_screen_coordinate =
805
- // f64::from(framebuffer_size.0) / f64::from(window_size.0);
806
-
807
- log:: debug!(
808
- "Setting framebuffer size to {:?}, scale to {}" ,
809
- framebuffer_size,
810
- scale. 0
811
- ) ;
812
-
813
- engine. send_window_metrics_event (
814
- framebuffer_size. 0 as _ ,
815
- framebuffer_size. 1 as _ ,
816
- f64:: from ( scale. 0 ) ,
817
- ) ;
818
- }
819
- }