summaryrefslogtreecommitdiff
path: root/Utilities/cmpdcurses/pdcurses/beep.c
blob: 690c794afa30913e3960d0ddc1166b4e8fb80ba6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/* PDCurses */

#include <curspriv.h>

/*man-start**************************************************************

beep
----

### Synopsis

    int beep(void);
    int flash(void);

### Description

   beep() sounds the audible bell on the terminal, if possible; if not,
   it calls flash().

   flash() "flashes" the screen, by inverting the foreground and
   background of every cell, pausing, and then restoring the original
   attributes.

### Return Value

   These functions return ERR if called before initscr(), otherwise OK.

### Portability
                             X/Open  ncurses  NetBSD
    beep                        Y       Y       Y
    flash                       Y       Y       Y

**man-end****************************************************************/

int beep(void)
{
    PDC_LOG(("beep() - called\n"));

    if (!SP)
        return ERR;

    if (SP->audible)
        PDC_beep();
    else
        flash();

    return OK;
}

int flash(void)
{
    int z, y, x;

    PDC_LOG(("flash() - called\n"));

    if (!curscr)
        return ERR;

    /* Reverse each cell; wait; restore the screen */

    for (z = 0; z < 2; z++)
    {
        for (y = 0; y < LINES; y++)
            for (x = 0; x < COLS; x++)
                curscr->_y[y][x] ^= A_REVERSE;

        wrefresh(curscr);

        if (!z)
            napms(50);
    }

    return OK;
}