kern/139576: blink screen too noisy
Walter C. Pelissero
walter.pelissero at iesy.net
Tue Oct 13 17:30:02 UTC 2009
>Number: 139576
>Category: kern
>Synopsis: blink screen too noisy
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Tue Oct 13 17:30:00 UTC 2009
>Closed-Date:
>Last-Modified:
>Originator: Walter C. Pelissero
>Release: FreeBSD 7.2-STABLE i386
>Organization:
>Environment:
System: FreeBSD zaphod.home.loc 7.2-STABLE FreeBSD 7.2-STABLE #4: Thu Oct 1 20:13:36 CEST 2009 root at zaphod.home.loc:/usr/home/obj/usr/src/sys/TYAN-TIGER-MP i386
>Description:
Although better than a loud beep, I personally find the visual
bell a bit too much. Especially on large LCD screens, it
feels like having a paparazzi stalking me. I'd be happy with
something less obtrusive like, for instance, the blinking of
the screen border.
Thus I propose the following patch:
Index: sys/dev/syscons/syscons.c
===================================================================
RCS file: /repos/src/sys/dev/syscons/syscons.c,v
retrieving revision 1.453.2.4
diff -u -r1.453.2.4 syscons.c
--- sys/dev/syscons/syscons.c 4 May 2009 21:00:43 -0000 1.453.2.4
+++ sys/dev/syscons/syscons.c 13 Oct 2009 01:47:01 -0000
@@ -3629,10 +3629,22 @@
sc_switch_scr(scp->sc, scp->sc->delayed_next_scr - 1);
}
else {
- (*scp->rndr->draw)(scp, 0, scp->xsize*scp->ysize,
- scp->sc->blink_in_progress & 1);
+ int on = scp->sc->blink_in_progress & 1;
+ vr_draw_t *draw = scp->rndr->draw;
+
+ if (scp->sc->flags & SC_QUIET_BELL) {
+ int i;
+
+ (*draw)(scp, 0, scp->xsize, on);
+ (*draw)(scp, scp->xsize * (scp->ysize - 1), scp->xsize, on);
+ for (i = 1; i < scp->ysize - 1; ++i) {
+ (*draw)(scp, scp->xsize * i, 1, on);
+ (*draw)(scp, scp->xsize * (i + 1) - 1, 1, on);
+ }
+ } else
+ (*draw)(scp, 0, scp->xsize * scp->ysize, on);
scp->sc->blink_in_progress--;
- timeout(blink_screen, scp, hz / 10);
+ timeout(blink_screen, arg, hz / 10);
}
}
Index: sys/sys/consio.h
===================================================================
RCS file: /repos/src/sys/sys/consio.h,v
retrieving revision 1.18
diff -u -r1.18 consio.h
--- sys/sys/consio.h 27 Sep 2006 19:57:01 -0000 1.18
+++ sys/sys/consio.h 13 Oct 2009 01:47:25 -0000
@@ -113,6 +113,7 @@
/* set the bell type to audible or visual */
#define CONS_VISUAL_BELL (1 << 0)
#define CONS_QUIET_BELL (1 << 1)
+#define CONS_BORDER_BELL (CONS_VISUAL_BELL | CONS_QUIET_BELL)
#define CONS_BELLTYPE _IOW('c', 8, int)
/* set the history (scroll back) buffer size (in lines) */
Index: usr.sbin/kbdcontrol/kbdcontrol.1
===================================================================
RCS file: /repos/src/usr.sbin/kbdcontrol/kbdcontrol.1,v
retrieving revision 1.42
diff -u -r1.42 kbdcontrol.1
--- usr.sbin/kbdcontrol/kbdcontrol.1 16 Nov 2006 13:43:05 -0000 1.42
+++ usr.sbin/kbdcontrol/kbdcontrol.1 13 Oct 2009 01:47:54 -0000
@@ -84,9 +84,11 @@
.Cm normal
which sets sound parameters back to normal values,
.Cm off
-which disables the bell entirely, or
+which disables the bell entirely,
.Cm visual
-which sets the bell to visual mode, i.e., flashes the screen instead.
+which sets the bell to visual mode, i.e., flashes the screen instead, or
+.Cm border
+which flashes just the border instead of the whole screen.
If
.Ar belltype
is preceded by the word
Index: usr.sbin/kbdcontrol/kbdcontrol.c
===================================================================
RCS file: /repos/src/usr.sbin/kbdcontrol/kbdcontrol.c,v
retrieving revision 1.51
diff -u -r1.51 kbdcontrol.c
--- usr.sbin/kbdcontrol/kbdcontrol.c 16 Nov 2006 12:27:51 -0000 1.51
+++ usr.sbin/kbdcontrol/kbdcontrol.c 13 Oct 2009 01:47:55 -0000
@@ -912,6 +912,8 @@
}
if (!strcmp(opt, "visual"))
bell |= CONS_VISUAL_BELL;
+ else if (!strcmp(opt, "border"))
+ bell |= CONS_BORDER_BELL;
else if (!strcmp(opt, "normal"))
duration = 5, pitch = 800;
else if (!strcmp(opt, "off"))
>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list