mirror of
https://github.com/zed-industries/zed.git
synced 2025-01-12 13:24:19 +00:00
Finished long-lock style rendering. Need to dynamically adjust the notification rate to handle high throughput scenarios
This commit is contained in:
parent
9dfdaae94d
commit
153305f5e4
1 changed files with 6 additions and 5 deletions
|
@ -345,11 +345,14 @@ impl TerminalBuilder {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TODO: Adaptive framerate mechanism for high throughput times?
|
||||||
|
//Probably nescessary...
|
||||||
|
|
||||||
pub fn subscribe(mut self, cx: &mut ModelContext<Terminal>) -> Terminal {
|
pub fn subscribe(mut self, cx: &mut ModelContext<Terminal>) -> Terminal {
|
||||||
cx.spawn_weak(|this, mut cx| async move {
|
cx.spawn_weak(|this, mut cx| async move {
|
||||||
'outer: loop {
|
'outer: loop {
|
||||||
//TODO: Pending GPUI updates, sync this to some higher, smarter system.
|
//TODO: Pending GPUI updates, sync this to some higher, smarter system.
|
||||||
let delay = cx.background().timer(Duration::from_secs_f32(1.0 / 60.));
|
let delay = cx.background().timer(Duration::from_secs_f32(1.0 / 30.));
|
||||||
|
|
||||||
let mut events = vec![];
|
let mut events = vec![];
|
||||||
|
|
||||||
|
@ -365,8 +368,9 @@ impl TerminalBuilder {
|
||||||
}
|
}
|
||||||
match this.upgrade(&cx) {
|
match this.upgrade(&cx) {
|
||||||
Some(this) => {
|
Some(this) => {
|
||||||
this.update(&mut cx, |this, _cx| {
|
this.update(&mut cx, |this, cx| {
|
||||||
this.push_events(events);
|
this.push_events(events);
|
||||||
|
cx.notify();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
None => break 'outer,
|
None => break 'outer,
|
||||||
|
@ -402,7 +406,6 @@ impl Terminal {
|
||||||
term: &mut Term<ZedListener>,
|
term: &mut Term<ZedListener>,
|
||||||
cx: &mut ModelContext<Self>,
|
cx: &mut ModelContext<Self>,
|
||||||
) {
|
) {
|
||||||
dbg!(event);
|
|
||||||
// TODO: Handle is_self_focused in subscription on terminal view
|
// TODO: Handle is_self_focused in subscription on terminal view
|
||||||
match event {
|
match event {
|
||||||
InternalEvent::TermEvent(term_event) => match term_event {
|
InternalEvent::TermEvent(term_event) => match term_event {
|
||||||
|
@ -463,7 +466,6 @@ impl Terminal {
|
||||||
term.clear_screen(ClearMode::Saved);
|
term.clear_screen(ClearMode::Saved);
|
||||||
}
|
}
|
||||||
InternalEvent::Keystroke(keystroke) => {
|
InternalEvent::Keystroke(keystroke) => {
|
||||||
println!("Trying keystroke: {}", keystroke);
|
|
||||||
let esc = to_esc_str(keystroke, term.mode());
|
let esc = to_esc_str(keystroke, term.mode());
|
||||||
if let Some(esc) = esc {
|
if let Some(esc) = esc {
|
||||||
self.notify_pty(esc);
|
self.notify_pty(esc);
|
||||||
|
@ -537,7 +539,6 @@ impl Terminal {
|
||||||
where
|
where
|
||||||
F: FnOnce(RenderableContent, char) -> T,
|
F: FnOnce(RenderableContent, char) -> T,
|
||||||
{
|
{
|
||||||
println!("RENDER LOCK!");
|
|
||||||
let m = self.term.clone(); //Arc clone
|
let m = self.term.clone(); //Arc clone
|
||||||
let mut term = m.lock();
|
let mut term = m.lock();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue