Make the screen savers runtime switchable. Everybody wants a
different default saver, and the size increase in the kernel is minimal ( < 2.5K ).
This commit is contained in:
parent
0a1592b27a
commit
52fda4247e
@ -14,7 +14,7 @@
|
||||
* DK9210 Aalborg SO Phone: +45 9814 8076
|
||||
*
|
||||
* from:@(#)console.h 1.1 940105
|
||||
* $Id: console.h,v 1.5 1993/10/28 06:11:38 rgrimes Exp $
|
||||
* $Id: console.h,v 1.6 1994/02/01 06:18:43 nate Exp $
|
||||
*/
|
||||
|
||||
#ifndef _CONSOLE_H_
|
||||
@ -47,6 +47,8 @@
|
||||
#define PIO_KEYMAP _IOW('k', 7, keymap_t)
|
||||
|
||||
#define CONS_BLANKTIME _IOW('c', 4, long)
|
||||
#define CONS_SSAVER _IOW('c', 5, ssaver_t)
|
||||
#define CONS_GSAVER _IOWR('c', 6, ssaver_t)
|
||||
#define PIO_FONT8x8 _IOW('c', 64, fnt8_t)
|
||||
#define GIO_FONT8x8 _IOR('c', 65, fnt8_t)
|
||||
#define PIO_FONT8x14 _IOW('c', 66, fnt14_t)
|
||||
@ -161,6 +163,14 @@ struct vid_info {
|
||||
u_char mk_keylock;
|
||||
};
|
||||
|
||||
#define MAXSSAVER 16
|
||||
|
||||
struct ssaver {
|
||||
char name[MAXSSAVER];
|
||||
int num;
|
||||
long time;
|
||||
};
|
||||
|
||||
typedef struct keymap keymap_t;
|
||||
typedef struct fkeytab fkeytab_t;
|
||||
typedef struct fkeyarg fkeyarg_t;
|
||||
@ -170,6 +180,7 @@ typedef struct {char scrmap[256];} scrmap_t;
|
||||
typedef struct {char fnt8x8[8*256];} fnt8_t;
|
||||
typedef struct {char fnt8x14[14*256];} fnt14_t;
|
||||
typedef struct {char fnt8x16[16*256];} fnt16_t;
|
||||
typedef struct ssaver ssaver_t;
|
||||
|
||||
/* defines for "special" keys (spcl bit set in keymap) */
|
||||
#define NOP 0x00 /* nothing (dead key) */
|
||||
|
@ -35,14 +35,10 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* from:@(#)syscons.c 1.3 940129
|
||||
* $Id: syscons.c,v 1.32 1994/02/01 19:04:18 nate Exp $
|
||||
* $Id: syscons.c,v 1.33 1994/02/02 23:10:55 ache Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
#if !defined(FADE_SAVER) && !defined(BLANK_SAVER) && !defined(STAR_SAVER) && !defined(SNAKE_SAVER)
|
||||
#define BLANK_SAVER
|
||||
#endif
|
||||
|
||||
#if !defined(__FreeBSD__)
|
||||
#define FAT_CURSOR
|
||||
#endif
|
||||
@ -187,6 +183,7 @@ static int delayed_next_scr;
|
||||
static char saved_console = -1; /* saved console number */
|
||||
static long scrn_blank_time = 0; /* screen saver timout value */
|
||||
static int scrn_blanked = 0; /* screen saver active flag */
|
||||
static int scrn_saver = 0; /* screen saver routine */
|
||||
static long scrn_time_stamp;
|
||||
static u_char scr_map[256];
|
||||
extern int hz;
|
||||
@ -214,7 +211,6 @@ int getchar(void);
|
||||
static void scinit(void);
|
||||
static void scput(u_char c);
|
||||
static u_int scgetc(int noblock);
|
||||
static void scrn_saver(int test);
|
||||
static struct tty *get_tty_ptr(dev_t dev);
|
||||
static scr_stat *get_scr_stat(dev_t dev);
|
||||
static int get_scr_num();
|
||||
@ -243,6 +239,27 @@ static void load_palette(void);
|
||||
static void change_winsize(struct tty *tp, int x, int y);
|
||||
|
||||
|
||||
/* available screen savers */
|
||||
|
||||
static void none_saver(int test);
|
||||
static void blank_saver(int test);
|
||||
static void fade_saver(int test);
|
||||
static void star_saver(int test);
|
||||
static void snake_saver(int test);
|
||||
|
||||
static const struct {
|
||||
char *name;
|
||||
void (*routine)();
|
||||
} screen_savers[] = {
|
||||
{ "none", none_saver }, /* 0 */
|
||||
{ "blank", blank_saver }, /* 1 */
|
||||
{ "fade", fade_saver }, /* 2 */
|
||||
{ "star", star_saver }, /* 3 */
|
||||
{ "snake", snake_saver }, /* 4 */
|
||||
};
|
||||
#define SCRN_SAVER(arg) (*screen_savers[scrn_saver].routine)(arg)
|
||||
#define NUM_SCRN_SAVERS (sizeof(screen_savers) / sizeof(screen_savers[0]))
|
||||
|
||||
/* OS specific stuff */
|
||||
|
||||
#if defined(NetBSD)
|
||||
@ -495,7 +512,7 @@ void scintr(int unit)
|
||||
/* make screensaver happy */
|
||||
scrn_time_stamp = time.tv_sec;
|
||||
if (scrn_blanked)
|
||||
scrn_saver(0);
|
||||
SCRN_SAVER(0);
|
||||
|
||||
c = scgetc(1);
|
||||
|
||||
@ -559,7 +576,27 @@ int pcioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p)
|
||||
case CONS_BLANKTIME: /* set screen saver timeout (0 = no saver) */
|
||||
scrn_blank_time = *(int*)data;
|
||||
return 0;
|
||||
|
||||
case CONS_SSAVER: /* set screen saver */
|
||||
{
|
||||
register ssaver_t *sav = (ssaver_t *)data;
|
||||
if (sav->num < 0 || sav->num >= NUM_SCRN_SAVERS)
|
||||
return EIO;
|
||||
SCRN_SAVER(0);
|
||||
scrn_saver = sav->num;
|
||||
scrn_blank_time = sav->time;
|
||||
return 0;
|
||||
}
|
||||
case CONS_GSAVER: /* get screen saver info */
|
||||
{
|
||||
register ssaver_t *sav = (ssaver_t *)data;
|
||||
if (sav->num < 0)
|
||||
sav->num = scrn_saver;
|
||||
else if (sav->num >= NUM_SCRN_SAVERS)
|
||||
return EIO;
|
||||
sav->time = scrn_blank_time;
|
||||
strcpy(sav->name, screen_savers[sav->num].name);
|
||||
return 0;
|
||||
}
|
||||
case CONS_80x25TEXT: /* set 80x25 text mode */
|
||||
if (!crtc_vga)
|
||||
return ENXIO;
|
||||
@ -1102,8 +1139,11 @@ int pccngetc(dev_t dev)
|
||||
return(c);
|
||||
}
|
||||
|
||||
#if defined(FADE_SAVER)
|
||||
static void scrn_saver(int test)
|
||||
static void none_saver(int test)
|
||||
{
|
||||
}
|
||||
|
||||
static void fade_saver(int test)
|
||||
{
|
||||
static int count = 0;
|
||||
int i;
|
||||
@ -1132,9 +1172,9 @@ static void scrn_saver(int test)
|
||||
load_palette();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(BLANK_SAVER)
|
||||
static void blank_saver(int test)
|
||||
{
|
||||
u_char val;
|
||||
if (test) {
|
||||
scrn_blanked = 1;
|
||||
@ -1146,18 +1186,15 @@ static void scrn_saver(int test)
|
||||
outb(TSIDX, 0x01); val = inb(TSREG);
|
||||
outb(TSIDX, 0x01); outb(TSREG, val & 0xDF);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined(STAR_SAVER) || defined(SNAKE_SAVER)
|
||||
static u_long rand_next = 1;
|
||||
|
||||
static int rand()
|
||||
{
|
||||
return ((rand_next = rand_next * 1103515245 + 12345) & 0x7FFFFFFF);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(STAR_SAVER)
|
||||
/*
|
||||
* Alternate saver that got its inspiration from a well known utility
|
||||
* package for an unfamous OS.
|
||||
@ -1165,7 +1202,7 @@ static int rand()
|
||||
|
||||
#define NUM_STARS 50
|
||||
|
||||
static void scrn_saver(int test)
|
||||
static void star_saver(int test)
|
||||
{
|
||||
scr_stat *scp = cur_console;
|
||||
int cell, i;
|
||||
@ -1211,14 +1248,9 @@ static void scrn_saver(int test)
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(SNAKE_SAVER)
|
||||
/*
|
||||
* alternative screen saver for cards that do not like blanking
|
||||
*/
|
||||
|
||||
static void scrn_saver(int test)
|
||||
static void snake_saver(int test)
|
||||
{
|
||||
const char saves[] = {"FreeBSD"};
|
||||
static u_char *savs[sizeof(saves)-1];
|
||||
@ -1276,7 +1308,6 @@ static void scrn_saver(int test)
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static void cursor_shape(int start, int end)
|
||||
{
|
||||
@ -1305,7 +1336,7 @@ static void cursor_pos(int force)
|
||||
if (cur_console->status & UNKNOWN_MODE)
|
||||
return;
|
||||
if (scrn_blank_time && (time.tv_sec > scrn_time_stamp+scrn_blank_time))
|
||||
scrn_saver(1);
|
||||
SCRN_SAVER(1);
|
||||
pos = cur_console->crtat - cur_console->crt_base;
|
||||
if (force || (!scrn_blanked && pos != cur_cursor_pos)) {
|
||||
cur_cursor_pos = pos;
|
||||
@ -1860,7 +1891,7 @@ static void ansi_put(scr_stat *scp, u_char c)
|
||||
if (scp == cur_console) {
|
||||
scrn_time_stamp = time.tv_sec;
|
||||
if (scrn_blanked)
|
||||
scrn_saver(0);
|
||||
SCRN_SAVER(0);
|
||||
}
|
||||
in_putc++;
|
||||
if (scp->term.esc)
|
||||
|
@ -14,7 +14,7 @@
|
||||
* DK9210 Aalborg SO Phone: +45 9814 8076
|
||||
*
|
||||
* from:@(#)console.h 1.1 940105
|
||||
* $Id: console.h,v 1.5 1993/10/28 06:11:38 rgrimes Exp $
|
||||
* $Id: console.h,v 1.6 1994/02/01 06:18:43 nate Exp $
|
||||
*/
|
||||
|
||||
#ifndef _CONSOLE_H_
|
||||
@ -47,6 +47,8 @@
|
||||
#define PIO_KEYMAP _IOW('k', 7, keymap_t)
|
||||
|
||||
#define CONS_BLANKTIME _IOW('c', 4, long)
|
||||
#define CONS_SSAVER _IOW('c', 5, ssaver_t)
|
||||
#define CONS_GSAVER _IOWR('c', 6, ssaver_t)
|
||||
#define PIO_FONT8x8 _IOW('c', 64, fnt8_t)
|
||||
#define GIO_FONT8x8 _IOR('c', 65, fnt8_t)
|
||||
#define PIO_FONT8x14 _IOW('c', 66, fnt14_t)
|
||||
@ -161,6 +163,14 @@ struct vid_info {
|
||||
u_char mk_keylock;
|
||||
};
|
||||
|
||||
#define MAXSSAVER 16
|
||||
|
||||
struct ssaver {
|
||||
char name[MAXSSAVER];
|
||||
int num;
|
||||
long time;
|
||||
};
|
||||
|
||||
typedef struct keymap keymap_t;
|
||||
typedef struct fkeytab fkeytab_t;
|
||||
typedef struct fkeyarg fkeyarg_t;
|
||||
@ -170,6 +180,7 @@ typedef struct {char scrmap[256];} scrmap_t;
|
||||
typedef struct {char fnt8x8[8*256];} fnt8_t;
|
||||
typedef struct {char fnt8x14[14*256];} fnt14_t;
|
||||
typedef struct {char fnt8x16[16*256];} fnt16_t;
|
||||
typedef struct ssaver ssaver_t;
|
||||
|
||||
/* defines for "special" keys (spcl bit set in keymap) */
|
||||
#define NOP 0x00 /* nothing (dead key) */
|
||||
|
@ -35,14 +35,10 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* from:@(#)syscons.c 1.3 940129
|
||||
* $Id: syscons.c,v 1.32 1994/02/01 19:04:18 nate Exp $
|
||||
* $Id: syscons.c,v 1.33 1994/02/02 23:10:55 ache Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
#if !defined(FADE_SAVER) && !defined(BLANK_SAVER) && !defined(STAR_SAVER) && !defined(SNAKE_SAVER)
|
||||
#define BLANK_SAVER
|
||||
#endif
|
||||
|
||||
#if !defined(__FreeBSD__)
|
||||
#define FAT_CURSOR
|
||||
#endif
|
||||
@ -187,6 +183,7 @@ static int delayed_next_scr;
|
||||
static char saved_console = -1; /* saved console number */
|
||||
static long scrn_blank_time = 0; /* screen saver timout value */
|
||||
static int scrn_blanked = 0; /* screen saver active flag */
|
||||
static int scrn_saver = 0; /* screen saver routine */
|
||||
static long scrn_time_stamp;
|
||||
static u_char scr_map[256];
|
||||
extern int hz;
|
||||
@ -214,7 +211,6 @@ int getchar(void);
|
||||
static void scinit(void);
|
||||
static void scput(u_char c);
|
||||
static u_int scgetc(int noblock);
|
||||
static void scrn_saver(int test);
|
||||
static struct tty *get_tty_ptr(dev_t dev);
|
||||
static scr_stat *get_scr_stat(dev_t dev);
|
||||
static int get_scr_num();
|
||||
@ -243,6 +239,27 @@ static void load_palette(void);
|
||||
static void change_winsize(struct tty *tp, int x, int y);
|
||||
|
||||
|
||||
/* available screen savers */
|
||||
|
||||
static void none_saver(int test);
|
||||
static void blank_saver(int test);
|
||||
static void fade_saver(int test);
|
||||
static void star_saver(int test);
|
||||
static void snake_saver(int test);
|
||||
|
||||
static const struct {
|
||||
char *name;
|
||||
void (*routine)();
|
||||
} screen_savers[] = {
|
||||
{ "none", none_saver }, /* 0 */
|
||||
{ "blank", blank_saver }, /* 1 */
|
||||
{ "fade", fade_saver }, /* 2 */
|
||||
{ "star", star_saver }, /* 3 */
|
||||
{ "snake", snake_saver }, /* 4 */
|
||||
};
|
||||
#define SCRN_SAVER(arg) (*screen_savers[scrn_saver].routine)(arg)
|
||||
#define NUM_SCRN_SAVERS (sizeof(screen_savers) / sizeof(screen_savers[0]))
|
||||
|
||||
/* OS specific stuff */
|
||||
|
||||
#if defined(NetBSD)
|
||||
@ -495,7 +512,7 @@ void scintr(int unit)
|
||||
/* make screensaver happy */
|
||||
scrn_time_stamp = time.tv_sec;
|
||||
if (scrn_blanked)
|
||||
scrn_saver(0);
|
||||
SCRN_SAVER(0);
|
||||
|
||||
c = scgetc(1);
|
||||
|
||||
@ -559,7 +576,27 @@ int pcioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p)
|
||||
case CONS_BLANKTIME: /* set screen saver timeout (0 = no saver) */
|
||||
scrn_blank_time = *(int*)data;
|
||||
return 0;
|
||||
|
||||
case CONS_SSAVER: /* set screen saver */
|
||||
{
|
||||
register ssaver_t *sav = (ssaver_t *)data;
|
||||
if (sav->num < 0 || sav->num >= NUM_SCRN_SAVERS)
|
||||
return EIO;
|
||||
SCRN_SAVER(0);
|
||||
scrn_saver = sav->num;
|
||||
scrn_blank_time = sav->time;
|
||||
return 0;
|
||||
}
|
||||
case CONS_GSAVER: /* get screen saver info */
|
||||
{
|
||||
register ssaver_t *sav = (ssaver_t *)data;
|
||||
if (sav->num < 0)
|
||||
sav->num = scrn_saver;
|
||||
else if (sav->num >= NUM_SCRN_SAVERS)
|
||||
return EIO;
|
||||
sav->time = scrn_blank_time;
|
||||
strcpy(sav->name, screen_savers[sav->num].name);
|
||||
return 0;
|
||||
}
|
||||
case CONS_80x25TEXT: /* set 80x25 text mode */
|
||||
if (!crtc_vga)
|
||||
return ENXIO;
|
||||
@ -1102,8 +1139,11 @@ int pccngetc(dev_t dev)
|
||||
return(c);
|
||||
}
|
||||
|
||||
#if defined(FADE_SAVER)
|
||||
static void scrn_saver(int test)
|
||||
static void none_saver(int test)
|
||||
{
|
||||
}
|
||||
|
||||
static void fade_saver(int test)
|
||||
{
|
||||
static int count = 0;
|
||||
int i;
|
||||
@ -1132,9 +1172,9 @@ static void scrn_saver(int test)
|
||||
load_palette();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(BLANK_SAVER)
|
||||
static void blank_saver(int test)
|
||||
{
|
||||
u_char val;
|
||||
if (test) {
|
||||
scrn_blanked = 1;
|
||||
@ -1146,18 +1186,15 @@ static void scrn_saver(int test)
|
||||
outb(TSIDX, 0x01); val = inb(TSREG);
|
||||
outb(TSIDX, 0x01); outb(TSREG, val & 0xDF);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined(STAR_SAVER) || defined(SNAKE_SAVER)
|
||||
static u_long rand_next = 1;
|
||||
|
||||
static int rand()
|
||||
{
|
||||
return ((rand_next = rand_next * 1103515245 + 12345) & 0x7FFFFFFF);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(STAR_SAVER)
|
||||
/*
|
||||
* Alternate saver that got its inspiration from a well known utility
|
||||
* package for an unfamous OS.
|
||||
@ -1165,7 +1202,7 @@ static int rand()
|
||||
|
||||
#define NUM_STARS 50
|
||||
|
||||
static void scrn_saver(int test)
|
||||
static void star_saver(int test)
|
||||
{
|
||||
scr_stat *scp = cur_console;
|
||||
int cell, i;
|
||||
@ -1211,14 +1248,9 @@ static void scrn_saver(int test)
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(SNAKE_SAVER)
|
||||
/*
|
||||
* alternative screen saver for cards that do not like blanking
|
||||
*/
|
||||
|
||||
static void scrn_saver(int test)
|
||||
static void snake_saver(int test)
|
||||
{
|
||||
const char saves[] = {"FreeBSD"};
|
||||
static u_char *savs[sizeof(saves)-1];
|
||||
@ -1276,7 +1308,6 @@ static void scrn_saver(int test)
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static void cursor_shape(int start, int end)
|
||||
{
|
||||
@ -1305,7 +1336,7 @@ static void cursor_pos(int force)
|
||||
if (cur_console->status & UNKNOWN_MODE)
|
||||
return;
|
||||
if (scrn_blank_time && (time.tv_sec > scrn_time_stamp+scrn_blank_time))
|
||||
scrn_saver(1);
|
||||
SCRN_SAVER(1);
|
||||
pos = cur_console->crtat - cur_console->crt_base;
|
||||
if (force || (!scrn_blanked && pos != cur_cursor_pos)) {
|
||||
cur_cursor_pos = pos;
|
||||
@ -1860,7 +1891,7 @@ static void ansi_put(scr_stat *scp, u_char c)
|
||||
if (scp == cur_console) {
|
||||
scrn_time_stamp = time.tv_sec;
|
||||
if (scrn_blanked)
|
||||
scrn_saver(0);
|
||||
SCRN_SAVER(0);
|
||||
}
|
||||
in_putc++;
|
||||
if (scp->term.esc)
|
||||
|
@ -35,14 +35,10 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* from:@(#)syscons.c 1.3 940129
|
||||
* $Id: syscons.c,v 1.32 1994/02/01 19:04:18 nate Exp $
|
||||
* $Id: syscons.c,v 1.33 1994/02/02 23:10:55 ache Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
#if !defined(FADE_SAVER) && !defined(BLANK_SAVER) && !defined(STAR_SAVER) && !defined(SNAKE_SAVER)
|
||||
#define BLANK_SAVER
|
||||
#endif
|
||||
|
||||
#if !defined(__FreeBSD__)
|
||||
#define FAT_CURSOR
|
||||
#endif
|
||||
@ -187,6 +183,7 @@ static int delayed_next_scr;
|
||||
static char saved_console = -1; /* saved console number */
|
||||
static long scrn_blank_time = 0; /* screen saver timout value */
|
||||
static int scrn_blanked = 0; /* screen saver active flag */
|
||||
static int scrn_saver = 0; /* screen saver routine */
|
||||
static long scrn_time_stamp;
|
||||
static u_char scr_map[256];
|
||||
extern int hz;
|
||||
@ -214,7 +211,6 @@ int getchar(void);
|
||||
static void scinit(void);
|
||||
static void scput(u_char c);
|
||||
static u_int scgetc(int noblock);
|
||||
static void scrn_saver(int test);
|
||||
static struct tty *get_tty_ptr(dev_t dev);
|
||||
static scr_stat *get_scr_stat(dev_t dev);
|
||||
static int get_scr_num();
|
||||
@ -243,6 +239,27 @@ static void load_palette(void);
|
||||
static void change_winsize(struct tty *tp, int x, int y);
|
||||
|
||||
|
||||
/* available screen savers */
|
||||
|
||||
static void none_saver(int test);
|
||||
static void blank_saver(int test);
|
||||
static void fade_saver(int test);
|
||||
static void star_saver(int test);
|
||||
static void snake_saver(int test);
|
||||
|
||||
static const struct {
|
||||
char *name;
|
||||
void (*routine)();
|
||||
} screen_savers[] = {
|
||||
{ "none", none_saver }, /* 0 */
|
||||
{ "blank", blank_saver }, /* 1 */
|
||||
{ "fade", fade_saver }, /* 2 */
|
||||
{ "star", star_saver }, /* 3 */
|
||||
{ "snake", snake_saver }, /* 4 */
|
||||
};
|
||||
#define SCRN_SAVER(arg) (*screen_savers[scrn_saver].routine)(arg)
|
||||
#define NUM_SCRN_SAVERS (sizeof(screen_savers) / sizeof(screen_savers[0]))
|
||||
|
||||
/* OS specific stuff */
|
||||
|
||||
#if defined(NetBSD)
|
||||
@ -495,7 +512,7 @@ void scintr(int unit)
|
||||
/* make screensaver happy */
|
||||
scrn_time_stamp = time.tv_sec;
|
||||
if (scrn_blanked)
|
||||
scrn_saver(0);
|
||||
SCRN_SAVER(0);
|
||||
|
||||
c = scgetc(1);
|
||||
|
||||
@ -559,7 +576,27 @@ int pcioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p)
|
||||
case CONS_BLANKTIME: /* set screen saver timeout (0 = no saver) */
|
||||
scrn_blank_time = *(int*)data;
|
||||
return 0;
|
||||
|
||||
case CONS_SSAVER: /* set screen saver */
|
||||
{
|
||||
register ssaver_t *sav = (ssaver_t *)data;
|
||||
if (sav->num < 0 || sav->num >= NUM_SCRN_SAVERS)
|
||||
return EIO;
|
||||
SCRN_SAVER(0);
|
||||
scrn_saver = sav->num;
|
||||
scrn_blank_time = sav->time;
|
||||
return 0;
|
||||
}
|
||||
case CONS_GSAVER: /* get screen saver info */
|
||||
{
|
||||
register ssaver_t *sav = (ssaver_t *)data;
|
||||
if (sav->num < 0)
|
||||
sav->num = scrn_saver;
|
||||
else if (sav->num >= NUM_SCRN_SAVERS)
|
||||
return EIO;
|
||||
sav->time = scrn_blank_time;
|
||||
strcpy(sav->name, screen_savers[sav->num].name);
|
||||
return 0;
|
||||
}
|
||||
case CONS_80x25TEXT: /* set 80x25 text mode */
|
||||
if (!crtc_vga)
|
||||
return ENXIO;
|
||||
@ -1102,8 +1139,11 @@ int pccngetc(dev_t dev)
|
||||
return(c);
|
||||
}
|
||||
|
||||
#if defined(FADE_SAVER)
|
||||
static void scrn_saver(int test)
|
||||
static void none_saver(int test)
|
||||
{
|
||||
}
|
||||
|
||||
static void fade_saver(int test)
|
||||
{
|
||||
static int count = 0;
|
||||
int i;
|
||||
@ -1132,9 +1172,9 @@ static void scrn_saver(int test)
|
||||
load_palette();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(BLANK_SAVER)
|
||||
static void blank_saver(int test)
|
||||
{
|
||||
u_char val;
|
||||
if (test) {
|
||||
scrn_blanked = 1;
|
||||
@ -1146,18 +1186,15 @@ static void scrn_saver(int test)
|
||||
outb(TSIDX, 0x01); val = inb(TSREG);
|
||||
outb(TSIDX, 0x01); outb(TSREG, val & 0xDF);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined(STAR_SAVER) || defined(SNAKE_SAVER)
|
||||
static u_long rand_next = 1;
|
||||
|
||||
static int rand()
|
||||
{
|
||||
return ((rand_next = rand_next * 1103515245 + 12345) & 0x7FFFFFFF);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(STAR_SAVER)
|
||||
/*
|
||||
* Alternate saver that got its inspiration from a well known utility
|
||||
* package for an unfamous OS.
|
||||
@ -1165,7 +1202,7 @@ static int rand()
|
||||
|
||||
#define NUM_STARS 50
|
||||
|
||||
static void scrn_saver(int test)
|
||||
static void star_saver(int test)
|
||||
{
|
||||
scr_stat *scp = cur_console;
|
||||
int cell, i;
|
||||
@ -1211,14 +1248,9 @@ static void scrn_saver(int test)
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(SNAKE_SAVER)
|
||||
/*
|
||||
* alternative screen saver for cards that do not like blanking
|
||||
*/
|
||||
|
||||
static void scrn_saver(int test)
|
||||
static void snake_saver(int test)
|
||||
{
|
||||
const char saves[] = {"FreeBSD"};
|
||||
static u_char *savs[sizeof(saves)-1];
|
||||
@ -1276,7 +1308,6 @@ static void scrn_saver(int test)
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static void cursor_shape(int start, int end)
|
||||
{
|
||||
@ -1305,7 +1336,7 @@ static void cursor_pos(int force)
|
||||
if (cur_console->status & UNKNOWN_MODE)
|
||||
return;
|
||||
if (scrn_blank_time && (time.tv_sec > scrn_time_stamp+scrn_blank_time))
|
||||
scrn_saver(1);
|
||||
SCRN_SAVER(1);
|
||||
pos = cur_console->crtat - cur_console->crt_base;
|
||||
if (force || (!scrn_blanked && pos != cur_cursor_pos)) {
|
||||
cur_cursor_pos = pos;
|
||||
@ -1860,7 +1891,7 @@ static void ansi_put(scr_stat *scp, u_char c)
|
||||
if (scp == cur_console) {
|
||||
scrn_time_stamp = time.tv_sec;
|
||||
if (scrn_blanked)
|
||||
scrn_saver(0);
|
||||
SCRN_SAVER(0);
|
||||
}
|
||||
in_putc++;
|
||||
if (scp->term.esc)
|
||||
|
Loading…
x
Reference in New Issue
Block a user