Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'helix-event/src/redraw.rs')
-rw-r--r--helix-event/src/redraw.rs62
1 files changed, 0 insertions, 62 deletions
diff --git a/helix-event/src/redraw.rs b/helix-event/src/redraw.rs
deleted file mode 100644
index d1a18899..00000000
--- a/helix-event/src/redraw.rs
+++ /dev/null
@@ -1,62 +0,0 @@
-//! Signals that control when/if the editor redraws
-
-use std::future::Future;
-
-use parking_lot::{RwLock, RwLockReadGuard};
-use tokio::sync::Notify;
-
-use crate::runtime_local;
-
-runtime_local! {
- /// A `Notify` instance that can be used to (asynchronously) request
- /// the editor to render a new frame.
- static REDRAW_NOTIFY: Notify = Notify::const_new();
-
- /// A `RwLock` that prevents the next frame from being
- /// drawn until an exclusive (write) lock can be acquired.
- /// This allows asynchronous tasks to acquire `non-exclusive`
- /// locks (read) to prevent the next frame from being drawn
- /// until a certain computation has finished.
- static RENDER_LOCK: RwLock<()> = RwLock::new(());
-}
-
-pub type RenderLockGuard = RwLockReadGuard<'static, ()>;
-
-/// Requests that the editor is redrawn. The redraws are debounced (currently to
-/// 30FPS) so this can be called many times without causing a ton of frames to
-/// be rendered.
-pub fn request_redraw() {
- REDRAW_NOTIFY.notify_one();
-}
-
-/// Returns a future that will yield once a redraw has been asynchronously
-/// requested using [`request_redraw`].
-pub fn redraw_requested() -> impl Future<Output = ()> {
- REDRAW_NOTIFY.notified()
-}
-
-/// Wait until all locks acquired with [`lock_frame`] have been released.
-/// This function is called before rendering and is intended to allow the frame
-/// to wait for async computations that should be included in the current frame.
-pub fn start_frame() {
- drop(RENDER_LOCK.write());
- // exhaust any leftover redraw notifications
- let notify = REDRAW_NOTIFY.notified();
- tokio::pin!(notify);
- notify.enable();
-}
-
-/// Acquires the render lock which will prevent the next frame from being drawn
-/// until the returned guard is dropped.
-pub fn lock_frame() -> RenderLockGuard {
- RENDER_LOCK.read()
-}
-
-/// A zero sized type that requests a redraw via [request_redraw] when the type [Drop]s.
-pub struct RequestRedrawOnDrop;
-
-impl Drop for RequestRedrawOnDrop {
- fn drop(&mut self) {
- request_redraw();
- }
-}