aboutsummaryrefslogtreecommitdiff
path: root/src/display.rs
diff options
context:
space:
mode:
authorMark Andrus Roberts <mroberts@twilio.com>2017-02-03 15:34:52 -0800
committerJoe Wilm <joe@jwilm.com>2017-02-07 21:12:56 -0800
commitfbc7b7227171b41d96ca52df52e4cf1833f5fc6f (patch)
tree8f33bd12933b129ec751f5dd643387eae254030f /src/display.rs
parent92e1cec0880313d962d80bf16eca60cebb509eab (diff)
downloadalacritty-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.rs4
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