diff options
author | Mark Andrus Roberts <mroberts@twilio.com> | 2017-02-03 15:34:52 -0800 |
---|---|---|
committer | Joe Wilm <joe@jwilm.com> | 2017-02-07 21:12:56 -0800 |
commit | fbc7b7227171b41d96ca52df52e4cf1833f5fc6f (patch) | |
tree | 8f33bd12933b129ec751f5dd643387eae254030f /src/display.rs | |
parent | 92e1cec0880313d962d80bf16eca60cebb509eab (diff) | |
download | alacritty-fbc7b7227171b41d96ca52df52e4cf1833f5fc6f.tar.gz alacritty-fbc7b7227171b41d96ca52df52e4cf1833f5fc6f.zip |
Add visual bell support
This commit adds support for a visual bell. Although the Handler in src/ansi.rs
warns "Hopefully this is never implemented", I wanted to give it a try. A new
config option is added, `visual_bell`, which sets the `duration` and `animation`
function of the visual bell. The default `duration` is 150 ms, and the default
`animation` is `EaseOutExpo`. To disable the visual bell, set its duration to 0.
The visual bell is modeled by VisualBell in src/term/mod.rs. It has a method to
ring the bell, `ring`, and another method, `intensity`. Both return the
"intensity" of the bell, which ramps down from 1.0 to 0.0 at a rate set by
`duration` and `animation`.
Whether or not the Processor waits for events is now configurable in order to
allow for smooth drawing of the visual bell.
Diffstat (limited to 'src/display.rs')
-rw-r--r-- | src/display.rs | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/display.rs b/src/display.rs index 0b242b33..9bfe7339 100644 --- a/src/display.rs +++ b/src/display.rs @@ -272,7 +272,7 @@ impl Display { /// This call may block if vsync is enabled pub fn draw(&mut self, mut terminal: MutexGuard<Term>, config: &Config, selection: &Selection) { // Clear dirty flag - terminal.dirty = false; + terminal.dirty = !terminal.visual_bell.completed(); if let Some(title) = terminal.get_next_title() { self.window.set_title(&title); @@ -291,6 +291,8 @@ impl Display { // mutable borrow let size_info = *terminal.size_info(); self.renderer.with_api(config, &size_info, |mut api| { + api.set_visual_bell(terminal.visual_bell.intensity() as f32); + api.clear(); // Draw the grid |