mirror of
https://github.com/rust-windowing/winit.git
synced 2026-06-28 07:33:14 -04:00
On Web, use requestAnimationFrame for RedrawRequested
This commit is contained in:
committed by
Kirill Chibisov
parent
7a58fe58ce
commit
57fad2ce15
@@ -19,6 +19,7 @@ use crate::platform_impl::{OsError, PlatformSpecificWindowBuilderAttributes};
|
||||
use crate::window::{WindowAttributes, WindowId as RootWindowId};
|
||||
|
||||
use super::super::WindowId;
|
||||
use super::animation_frame::AnimationFrameHandler;
|
||||
use super::event_handle::EventListenerHandle;
|
||||
use super::intersection_handle::IntersectionObserverHandle;
|
||||
use super::media_query_handle::MediaQueryListHandle;
|
||||
@@ -42,6 +43,7 @@ pub struct Canvas {
|
||||
pointer_handler: PointerHandler,
|
||||
on_resize_scale: Option<ResizeScaleHandle>,
|
||||
on_intersect: Option<IntersectionObserverHandle>,
|
||||
animation_frame_handler: AnimationFrameHandler,
|
||||
}
|
||||
|
||||
pub struct Common {
|
||||
@@ -98,7 +100,7 @@ impl Canvas {
|
||||
.expect("Invalid pseudo-element");
|
||||
|
||||
let common = Common {
|
||||
window,
|
||||
window: window.clone(),
|
||||
document,
|
||||
raw: canvas,
|
||||
style,
|
||||
@@ -151,6 +153,7 @@ impl Canvas {
|
||||
pointer_handler: PointerHandler::new(),
|
||||
on_resize_scale: None,
|
||||
on_intersect: None,
|
||||
animation_frame_handler: AnimationFrameHandler::new(window),
|
||||
})
|
||||
}
|
||||
|
||||
@@ -441,6 +444,13 @@ impl Canvas {
|
||||
self.on_intersect = Some(IntersectionObserverHandle::new(self.raw(), handler));
|
||||
}
|
||||
|
||||
pub(crate) fn on_animation_frame<F>(&mut self, f: F)
|
||||
where
|
||||
F: 'static + FnMut(),
|
||||
{
|
||||
self.animation_frame_handler.on_animation_frame(f)
|
||||
}
|
||||
|
||||
pub fn request_fullscreen(&self) {
|
||||
self.common.request_fullscreen()
|
||||
}
|
||||
@@ -449,6 +459,10 @@ impl Canvas {
|
||||
self.common.is_fullscreen()
|
||||
}
|
||||
|
||||
pub fn request_animation_frame(&self) {
|
||||
self.animation_frame_handler.request();
|
||||
}
|
||||
|
||||
pub(crate) fn handle_scale_change<T: 'static>(
|
||||
&self,
|
||||
runner: &super::super::event_loop::runner::Shared<T>,
|
||||
|
||||
Reference in New Issue
Block a user