Summary: | [syscons] [patch] blink screen too noisy | ||
---|---|---|---|
Product: | Base System | Reporter: | Walter C. Pelissero <walter.pelissero> |
Component: | kern | Assignee: | freebsd-bugs (Nobody) <bugs> |
Status: | Open --- | ||
Severity: | Affects Only Me | Keywords: | patch |
Priority: | Normal | ||
Version: | 7.2-STABLE | ||
Hardware: | Any | ||
OS: | Any |
Description
Walter C. Pelissero
2009-10-13 18:30:00 UTC
Responsible Changed From-To: freebsd-bugs->miwi grab. State Changed From-To: open->feedback Howdy, Thanks for the propose patch it looks good so far. But I don't understand why you change the timeout() call. Maybe you could shot explain? thx I've been reconsidering the modification, and I believe the border blinking can be improved: Index: syscons.c =================================================================== RCS file: /repos/src/sys/dev/syscons/syscons.c,v retrieving revision 1.453.2.4 diff -c -r1.453.2.4 syscons.c *** syscons.c 4 May 2009 21:00:43 -0000 1.453.2.4 --- syscons.c 15 Oct 2009 14:00:32 -0000 *************** *** 3629,3636 **** 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); scp->sc->blink_in_progress--; timeout(blink_screen, scp, hz / 10); } --- 3629,3649 ---- sc_switch_scr(scp->sc, scp->sc->delayed_next_scr - 1); } else { ! int on = scp->sc->blink_in_progress & 1; ! vr_draw_t *draw = scp->rndr->draw; ! ! if (scp->sc->flags & SC_QUIET_BELL) { ! /* blink the screen border only */ ! int i; ! ! (*draw)(scp, 0, scp->xsize + 1, on); ! (*draw)(scp, scp->xsize * (scp->ysize - 1) - 1, ! scp->xsize + 1, on); ! for (i = 2; i < scp->ysize - 1; ++i) ! (*draw)(scp, scp->xsize * i - 1, 2, on); ! } else ! /* blink the entire screen */ ! (*draw)(scp, 0, scp->xsize * scp->ysize, on); scp->sc->blink_in_progress--; timeout(blink_screen, scp, hz / 10); } This version is neater (conforms to FreeBSD indentation standards) and more efficient (it saves some calls to draw()). Thus the proposed patch becomes the following: 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 15 Oct 2009 13:57:05 -0000 @@ -3629,8 +3629,21 @@ 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) { + /* blink the screen border only */ + int i; + + (*draw)(scp, 0, scp->xsize + 1, on); + (*draw)(scp, scp->xsize * (scp->ysize - 1) - 1, + scp->xsize + 1, on); + for (i = 2; i < scp->ysize - 1; ++i) + (*draw)(scp, scp->xsize * i - 1, 2, on); + } else + /* blink the entire screen */ + (*draw)(scp, 0, scp->xsize * scp->ysize, on); scp->sc->blink_in_progress--; timeout(blink_screen, scp, 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 15 Oct 2009 13:57:33 -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 15 Oct 2009 13:58:00 -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 15 Oct 2009 13:58:00 -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")) -- walter pelissero http://www.pelissero.de Responsible Changed From-To: miwi->ed over to ed. For bugs matching the following criteria: Status: In Progress Changed: (is less than) 2014-06-01 Reset to default assignee and clear in-progress tags. Mail being skipped Keyword: patch or patch-ready – in lieu of summary line prefix: [patch] * bulk change for the keyword * summary lines may be edited manually (not in bulk). Keyword descriptions and search interface: <https://bugs.freebsd.org/bugzilla/describekeywords.cgi> |