Merge pull request #1823 from zed-industries/reduce-cursor-blink-load

Kay Simmons created

Reduce Cursor Blink CPU Load

Change summary

crates/editor/src/blink_manager.rs | 7 ++++---
crates/editor/src/editor.rs        | 4 +++-
2 files changed, 7 insertions(+), 4 deletions(-)

Detailed changes

@@ -30,7 +30,7 @@ impl BlinkManager {
             blink_epoch: 0,
             blinking_paused: false,
             visible: true,
-            enabled: true,
+            enabled: false,
         }
     }
 
@@ -71,6 +71,7 @@ impl BlinkManager {
             if epoch == self.blink_epoch && self.enabled && !self.blinking_paused {
                 self.visible = !self.visible;
                 cx.notify();
+                dbg!(cx.handle());
 
                 let epoch = self.next_blink_epoch();
                 let interval = self.blink_interval;
@@ -96,8 +97,8 @@ impl BlinkManager {
         self.blink_cursors(self.blink_epoch, cx);
     }
 
-    pub fn disable(&mut self, _: &mut ModelContext<Self>) {
-        self.enabled = true;
+    pub fn disable(&mut self, _cx: &mut ModelContext<Self>) {
+        self.enabled = false;
     }
 
     pub fn visible(&self) -> bool {

crates/editor/src/editor.rs 🔗

@@ -6511,8 +6511,10 @@ impl View for Editor {
         if let Some(rename) = self.pending_rename.as_ref() {
             cx.focus(&rename.editor);
         } else {
+            if !self.focused {
+                self.blink_manager.update(cx, BlinkManager::enable);
+            }
             self.focused = true;
-            self.blink_manager.update(cx, BlinkManager::enable);
             self.buffer.update(cx, |buffer, cx| {
                 buffer.finalize_last_transaction(cx);
                 if self.leader_replica_id.is_none() {