aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2014-04-14 00:23:28 -0400
committerJesse Luehrs <doy@tozt.net>2014-04-14 00:23:28 -0400
commitf445b28ce574a9529068b096c4be2224198876fb (patch)
treece27924a6e8c3d89960d15ba3f91b3bde37d8ba8
parent1cf11a723c1710470ab4a98ae3abcae1686320dd (diff)
downloadrunes-f445b28ce574a9529068b096c4be2224198876fb.tar.gz
runes-f445b28ce574a9529068b096c4be2224198876fb.zip
support a visual bell
-rw-r--r--display.c5
-rw-r--r--display.h1
-rw-r--r--parser.c3
-rw-r--r--window-xlib.c10
-rw-r--r--window-xlib.h1
5 files changed, 18 insertions, 2 deletions
diff --git a/display.c b/display.c
index f8416cc..0084348 100644
--- a/display.c
+++ b/display.c
@@ -312,6 +312,11 @@ void runes_display_hide_cursor(RunesTerm *t)
t->show_cursor = 0;
}
+void runes_display_visual_bell(RunesTerm *t)
+{
+ runes_window_backend_visual_bell(t);
+}
+
static cairo_scaled_font_t *runes_display_make_font(RunesTerm *t)
{
cairo_font_face_t *font_face;
diff --git a/display.h b/display.h
index 11a26a0..ca117d4 100644
--- a/display.h
+++ b/display.h
@@ -26,5 +26,6 @@ void runes_display_set_bg_color(RunesTerm *t, cairo_pattern_t *color);
void runes_display_reset_bg_color(RunesTerm *t);
void runes_display_show_cursor(RunesTerm *t);
void runes_display_hide_cursor(RunesTerm *t);
+void runes_display_visual_bell(RunesTerm *t);
#endif
diff --git a/parser.c b/parser.c
index d1be71e..7edf6dc 100644
--- a/parser.c
+++ b/parser.c
@@ -2125,8 +2125,7 @@ static void runes_parser_handle_text(RunesTerm *t, char *text, size_t len)
static void runes_parser_handle_bel(RunesTerm *t)
{
- /* XXX */
- UNUSED(t);
+ runes_display_visual_bell(t);
}
static void runes_parser_handle_bs(RunesTerm *t)
diff --git a/window-xlib.c b/window-xlib.c
index 4338065..3f19168 100644
--- a/window-xlib.c
+++ b/window-xlib.c
@@ -197,6 +197,16 @@ void runes_window_backend_set_window_title(
(unsigned char *)name, len);
}
+void runes_window_backend_visual_bell(RunesTerm *t)
+{
+ cairo_pattern_t *white;
+
+ white = cairo_pattern_create_rgb(1.0, 1.0, 1.0);
+ cairo_set_source(t->backend_cr, white);
+ cairo_paint(t->backend_cr);
+ runes_window_backend_flush(t);
+}
+
void runes_window_backend_request_close(RunesTerm *t)
{
XEvent e;
diff --git a/window-xlib.h b/window-xlib.h
index edcd24b..222a68c 100644
--- a/window-xlib.h
+++ b/window-xlib.h
@@ -37,6 +37,7 @@ void runes_window_backend_get_size(RunesTerm *t, int *xpixel, int *ypixel);
void runes_window_backend_set_icon_name(RunesTerm *t, char *name, size_t len);
void runes_window_backend_set_window_title(
RunesTerm *t, char *name, size_t len);
+void runes_window_backend_visual_bell(RunesTerm *t);
void runes_window_backend_request_close(RunesTerm *t);
void runes_window_backend_cleanup(RunesTerm *t);