Add Window::on_present_notify to ack about drawing

That's a way to communicate to winit that you'll present to the window.
While it's a no-op for now, it'll be used to throttle drawing.
This commit is contained in:
Kirill Chibisov 2023-06-22 08:08:53 +04:00
parent 189a0080a6
commit 38f28d5836
12 changed files with 71 additions and 6 deletions

View file

@ -555,12 +555,7 @@ impl Window {
}
}
pub fn request_user_attention(&self, request_type: Option<UserAttentionType>) {
match self {
#[cfg(x11_platform)]
Window::X(ref w) => w.request_user_attention(request_type),
#[cfg(wayland_platform)]
Window::Wayland(ref w) => w.request_user_attention(request_type),
}
x11_or_wayland!(match self; Window(w) => w.request_user_attention(request_type))
}
#[inline]
@ -568,6 +563,11 @@ impl Window {
x11_or_wayland!(match self; Window(w) => w.request_redraw())
}
#[inline]
pub fn pre_present_notify(&self) {
x11_or_wayland!(match self; Window(w) => w.pre_present_notify())
}
#[inline]
pub fn current_monitor(&self) -> Option<MonitorHandle> {
match self {

View file

@ -293,6 +293,11 @@ impl Window {
self.event_loop_awakener.ping();
}
#[inline]
pub fn pre_present_notify(&self) {
// TODO
}
#[inline]
pub fn outer_size(&self) -> PhysicalSize<u32> {
let window_state = self.window_state.lock().unwrap();

View file

@ -1731,6 +1731,11 @@ impl UnownedWindow {
.unwrap();
}
#[inline]
pub fn pre_present_notify(&self) {
// TODO timer
}
#[inline]
pub fn raw_window_handle(&self) -> RawWindowHandle {
let mut window_handle = XlibWindowHandle::empty();