aboutsummaryrefslogtreecommitdiff
path: root/src/event_loop.rs
diff options
context:
space:
mode:
authorJoe Wilm <jwilm@users.noreply.github.com>2018-09-17 08:15:20 -0700
committerGitHub <noreply@github.com>2018-09-17 08:15:20 -0700
commitcff58e9d683c44a34f37e628c7faaea4410ada74 (patch)
treee051a942190247faeab42757dd6a5f08db5a7cca /src/event_loop.rs
parent865727c062810e29fa33b5c04bb05510e7da3ddf (diff)
parent054e38e98d8f150b99b50fec9f679c3d23875a0a (diff)
downloadr-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.rs15
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;
}