initial macos porting work
This commit is contained in:
@@ -1309,7 +1309,9 @@ fn spawn_window_worker(
|
||||
"worker observed resized frame"
|
||||
);
|
||||
state_ref.pending_viewport = Some(current_viewport);
|
||||
state_ref.pending_viewport_since.get_or_insert_with(Instant::now);
|
||||
state_ref
|
||||
.pending_viewport_since
|
||||
.get_or_insert_with(Instant::now);
|
||||
// Emit configure BEFORE touching the GPU so the app
|
||||
// thread starts layout immediately in parallel.
|
||||
// The actual swapchain recreation is deferred to just
|
||||
@@ -1354,7 +1356,9 @@ fn spawn_window_worker(
|
||||
"scene size does not match current viewport; holding last buffer"
|
||||
);
|
||||
state_ref.pending_viewport = Some(current_viewport);
|
||||
state_ref.pending_viewport_since.get_or_insert_with(Instant::now);
|
||||
state_ref
|
||||
.pending_viewport_since
|
||||
.get_or_insert_with(Instant::now);
|
||||
state_ref.window.request_redraw();
|
||||
} else if !state_ref.window.presentation_ready() {
|
||||
// Correct scene is ready but the compositor
|
||||
@@ -1365,7 +1369,9 @@ fn spawn_window_worker(
|
||||
// before rendering. Deferring from frame.resized means
|
||||
// rapid configures pay one recreation instead of one
|
||||
// per event.
|
||||
if let Some((w, h)) = state_ref.pending_swapchain_size.take() {
|
||||
if let Some((w, h)) =
|
||||
state_ref.pending_swapchain_size.take()
|
||||
{
|
||||
let t_resize = std::time::Instant::now();
|
||||
state_ref.renderer.resize(w, h);
|
||||
let resize_gpu_us = t_resize.elapsed().as_micros();
|
||||
@@ -1382,7 +1388,8 @@ fn spawn_window_worker(
|
||||
let t_render = std::time::Instant::now();
|
||||
match state_ref.renderer.render(scene) {
|
||||
Ok(()) => {
|
||||
let render_gpu_us = t_render.elapsed().as_micros();
|
||||
let render_gpu_us =
|
||||
t_render.elapsed().as_micros();
|
||||
debug!(
|
||||
target: "ruin_ui_platform_wayland::perf",
|
||||
window_id = state_ref.window_id.raw(),
|
||||
@@ -1464,10 +1471,10 @@ fn spawn_window_worker(
|
||||
{
|
||||
let delay =
|
||||
repeat.next_at.saturating_duration_since(Instant::now());
|
||||
state_ref.keyboard_repeat_timer = Some(set_timeout(
|
||||
delay,
|
||||
move || write_wakeup(pipe_write_fd),
|
||||
));
|
||||
state_ref.keyboard_repeat_timer =
|
||||
Some(set_timeout(delay, move || {
|
||||
write_wakeup(pipe_write_fd)
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user