summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/pc98/pc98/syscons.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/sys/pc98/pc98/syscons.c b/sys/pc98/pc98/syscons.c
index 86ef627869b7..28e8e409fdbd 100644
--- a/sys/pc98/pc98/syscons.c
+++ b/sys/pc98/pc98/syscons.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: syscons.c,v 1.79 1998/02/14 08:39:35 kato Exp $
+ * $Id: syscons.c,v 1.80 1998/03/05 03:31:27 kato Exp $
*/
#include "sc.h"
@@ -186,7 +186,7 @@ static const u_int n_fkey_tab = sizeof(fkey_tab) / sizeof(*fkey_tab);
static int delayed_next_scr = FALSE;
static long scrn_blank_time = 0; /* screen saver timeout value */
int scrn_blanked = 0; /* screen saver active flag */
-static long scrn_time_stamp;
+static struct timeval scrn_time_stamp;
u_char scr_map[256];
u_char scr_rmap[256];
char *video_mode_ptr = NULL;
@@ -1166,7 +1166,7 @@ scioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p)
return EINVAL;
scrn_blank_time = *(int *)data;
if (scrn_blank_time == 0)
- scrn_time_stamp = mono_time.tv_sec;
+ getmicroruntime(&scrn_time_stamp);
return 0;
case CONS_CURSORTYPE: /* set cursor type blink/noblink */
@@ -1534,7 +1534,7 @@ scioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p)
return EINVAL;
}
/* make screensaver happy */
- scrn_time_stamp = mono_time.tv_sec;
+ getmicroruntime(&scrn_time_stamp);
return 0;
}
@@ -2466,6 +2466,7 @@ get_scr_num()
static void
scrn_timer(void *arg)
{
+ struct timeval tv;
scr_stat *scp = cur_console;
int s;
@@ -2507,14 +2508,18 @@ scrn_timer(void *arg)
}
/* should we stop the screen saver? */
+ getmicroruntime(&tv);
if (panicstr)
- scrn_time_stamp = mono_time.tv_sec;
+ scrn_time_stamp = tv;
+ if (tv.tv_sec <= scrn_time_stamp.tv_sec + scrn_blank_time)
+ if (scrn_blanked > 0)
+ stop_scrn_saver(current_saver);
scp = cur_console;
if (scrn_blanked <= 0)
scrn_update(scp, TRUE);
/* should we activate the screen saver? */
if ((scrn_blank_time != 0)
- && (mono_time.tv_sec > scrn_time_stamp + scrn_blank_time))
+ && (tv.tv_sec > scrn_time_stamp.tv_sec + scrn_blank_time))
(*current_saver)(TRUE);
timeout(scrn_timer, NULL, hz / 25);
@@ -2627,7 +2632,7 @@ static void
stop_scrn_saver(void (*saver)(int))
{
(*saver)(FALSE);
- scrn_time_stamp = mono_time.tv_sec;
+ getmicroruntime(&scrn_time_stamp);
mark_all(cur_console);
}
@@ -3670,7 +3675,7 @@ ansi_put(scr_stat *scp, u_char *buf, int len)
/* make screensaver happy */
if (scp == cur_console)
- scrn_time_stamp = mono_time.tv_sec;
+ getmicroruntime(&scrn_time_stamp);
write_in_progress++;
outloop:
@@ -4325,7 +4330,7 @@ next_code:
/* make screensaver happy */
if (!(scancode & 0x80))
- scrn_time_stamp = mono_time.tv_sec;
+ getmicroruntime(&scrn_time_stamp);
if (!(flags & SCGETC_CN)) {
/* do the /dev/random device a favour */