diff options
author | Joe Wilm <jwilm@users.noreply.github.com> | 2018-09-17 08:15:20 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-17 08:15:20 -0700 |
commit | cff58e9d683c44a34f37e628c7faaea4410ada74 (patch) | |
tree | e051a942190247faeab42757dd6a5f08db5a7cca /src/event_loop.rs | |
parent | 865727c062810e29fa33b5c04bb05510e7da3ddf (diff) | |
parent | 054e38e98d8f150b99b50fec9f679c3d23875a0a (diff) | |
download | r-alacritty-cff58e9d683c44a34f37e628c7faaea4410ada74.tar.gz r-alacritty-cff58e9d683c44a34f37e628c7faaea4410ada74.tar.bz2 r-alacritty-cff58e9d683c44a34f37e628c7faaea4410ada74.zip |
Merge pull request #1147 from jwilm/scrollback
Scrollback
Diffstat (limited to 'src/event_loop.rs')
-rw-r--r-- | src/event_loop.rs | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/event_loop.rs b/src/event_loop.rs index 18d48a52..d7d27243 100644 --- a/src/event_loop.rs +++ b/src/event_loop.rs @@ -255,6 +255,9 @@ impl<Io> EventLoop<Io> let mut processed = 0; let mut terminal = None; + // Flag to keep track if wakeup has already been sent + let mut send_wakeup = false; + loop { match self.pty.read(&mut buf[..]) { Ok(0) => break, @@ -272,10 +275,14 @@ impl<Io> EventLoop<Io> // Get reference to terminal. Lock is acquired on initial // iteration and held until there's no bytes left to parse // or we've reached MAX_READ. - if terminal.is_none() { + let terminal = if terminal.is_none() { terminal = Some(self.terminal.lock()); - } - let terminal = terminal.as_mut().unwrap(); + let terminal = terminal.as_mut().unwrap(); + send_wakeup = !terminal.dirty; + terminal + } else { + terminal.as_mut().unwrap() + }; // Run the parser for byte in &buf[..got] { @@ -301,7 +308,7 @@ impl<Io> EventLoop<Io> // Only request a draw if one hasn't already been requested. if let Some(mut terminal) = terminal { - if !terminal.dirty { + if send_wakeup { self.display.notify(); terminal.dirty = true; } |