Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite8a671c

Browse files
committed
Cleanup glfw refresh callback
1 parent95a6d59 commite8a671c

File tree

3 files changed

+26
-69
lines changed

3 files changed

+26
-69
lines changed

‎Cargo.lock

Lines changed: 0 additions & 2 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎flutter-glfw/Cargo.toml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,10 @@ repository = "https://github.com/flutter-rs/flutter-rs"
99
license ="MIT"
1010

1111
[dependencies]
12-
copypasta ="0.6.2"
1312
flutter-engine-sys = {path ="../flutter-engine-sys" }
1413
flutter-engine = {path ="../flutter-engine" }
1514
flutter-plugins = {path ="../flutter-plugins" }
1615
locale_config ="0.3.0"
1716
log ="0.4.8"
1817
parking_lot ="0.10.0"
19-
glfw ="0.37.0"
20-
lazy_static ="1.4.0"
18+
glfw ="0.37.0"

‎flutter-glfw/src/window.rs

Lines changed: 25 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@ use flutter_plugins::settings::SettingsPlugin;
2323
use flutter_plugins::system::SystemPlugin;
2424
use flutter_plugins::textinput::TextInputPlugin;
2525
use flutter_plugins::window::WindowPlugin;
26-
use glfw::Context;
27-
use lazy_static::lazy_static;
2826
use log::{debug, info};
2927
use parking_lot::Mutex;
3028
use std::collections::{HashMap,VecDeque};
@@ -85,15 +83,6 @@ unsafe impl Send for WindowSafe {}
8583

8684
unsafeimplSyncforWindowSafe{}
8785

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-
pubfnget_engine(window:*mut glfw::ffi::GLFWwindow) ->Option<FlutterEngine>{
94-
ENGINES.lock().get(&WindowSafe(window)).cloned()
95-
}
96-
9786
pub(crate)typeMainTheadFn =Box<dynFnMut(&FlutterWindow) +Send>;
9887
pubtypeWindowEventHandler =dynFnMut(&FlutterWindow, glfw::WindowEvent) ->bool;
9988
pubtypePerFrameCallback =dynFnMut(&FlutterWindow);
@@ -191,13 +180,6 @@ impl FlutterWindow {
191180
.build()
192181
.expect("Failed to create engine");
193182

194-
// register window and engine globally
195-
{
196-
ENGINES
197-
.lock()
198-
.insert(WindowSafe(window.lock().window_ptr()), engine.clone());
199-
}
200-
201183
// Main thread callbacks
202184
let(main_tx, main_rx) = mpsc::channel();
203185

@@ -319,13 +301,7 @@ impl FlutterWindow {
319301
window.set_scroll_polling(true);
320302
window.set_size_polling(true);
321303
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);
329305
}
330306

331307
self.with_plugin(
@@ -400,10 +376,6 @@ impl FlutterWindow {
400376
}
401377

402378
pubfnshutdown(self){
403-
ENGINES
404-
.lock()
405-
.remove(&WindowSafe(self.window.lock().window_ptr()));
406-
407379
self.engine.shutdown();
408380
}
409381

@@ -490,6 +462,30 @@ impl FlutterWindow {
490462
}
491463

492464
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.0as_,
485+
framebuffer_size.1as_,
486+
f64::from(scale.0),
487+
);
488+
}
493489
glfw::WindowEvent::CursorEnter(entered) =>{
494490
let cursor_pos =self.window.lock().get_cursor_pos();
495491
self.send_pointer_event(
@@ -782,38 +778,3 @@ impl FlutterWindow {
782778
}
783779
}
784780
}
785-
786-
extern"C"fnwindow_refreshed(window:*mut glfw::ffi::GLFWwindow){
787-
ifletSome(engine) =get_engine(window){
788-
letmut window_size:(i32,i32) =(0,0);
789-
letmut framebuffer_size:(i32,i32) =(0,0);
790-
letmut 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.0as_,
815-
framebuffer_size.1as_,
816-
f64::from(scale.0),
817-
);
818-
}
819-
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp