On Web, use requestAnimationFrame for RedrawRequested
This commit is contained in:
parent
7a58fe58ce
commit
57fad2ce15
7 changed files with 87 additions and 10 deletions
|
|
@ -30,7 +30,6 @@ pub struct Inner {
|
|||
document: Document,
|
||||
canvas: Rc<RefCell<backend::Canvas>>,
|
||||
previous_pointer: RefCell<&'static str>,
|
||||
register_redraw_request: Box<dyn Fn()>,
|
||||
destroy_fn: Option<Box<dyn FnOnce()>>,
|
||||
}
|
||||
|
||||
|
|
@ -40,8 +39,6 @@ impl Window {
|
|||
attr: WindowAttributes,
|
||||
platform_attr: PlatformSpecificWindowBuilderAttributes,
|
||||
) -> Result<Self, RootOE> {
|
||||
let runner = target.runner.clone();
|
||||
|
||||
let id = target.generate_id();
|
||||
|
||||
let prevent_default = platform_attr.prevent_default;
|
||||
|
|
@ -52,8 +49,6 @@ impl Window {
|
|||
backend::Canvas::create(id, window.clone(), document.clone(), &attr, platform_attr)?;
|
||||
let canvas = Rc::new(RefCell::new(canvas));
|
||||
|
||||
let register_redraw_request = Box::new(move || runner.request_redraw(RootWI(id)));
|
||||
|
||||
target.register(&canvas, id, prevent_default);
|
||||
|
||||
let runner = target.runner.clone();
|
||||
|
|
@ -68,7 +63,6 @@ impl Window {
|
|||
document: document.clone(),
|
||||
canvas,
|
||||
previous_pointer: RefCell::new("auto"),
|
||||
register_redraw_request,
|
||||
destroy_fn: Some(destroy_fn),
|
||||
})
|
||||
.unwrap(),
|
||||
|
|
@ -110,8 +104,9 @@ impl Window {
|
|||
}
|
||||
|
||||
pub fn request_redraw(&self) {
|
||||
self.inner
|
||||
.dispatch(|inner| (inner.register_redraw_request)());
|
||||
self.inner.dispatch(move |inner| {
|
||||
inner.canvas.borrow().request_animation_frame();
|
||||
});
|
||||
}
|
||||
|
||||
pub fn pre_present_notify(&self) {}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue