Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 15 Jul 1997 07:43:29 -0700 (PDT)
From:      Kazutaka YOKOTA <yokota@FreeBSD.ORG>
To:        cvs-committers@FreeBSD.ORG, cvs-all@FreeBSD.ORG, cvs-sys@FreeBSD.ORG
Subject:   cvs commit: src/sys/i386/isa syscons.c syscons.h
Message-ID:  <199707151443.HAA25349@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
yokota      1997/07/15 07:43:29 PDT

  Modified files:
    sys/i386/isa         syscons.c syscons.h 
  Log:
  Screen saver related fixes.
  
  1. Add new interface, add_scrn_saver()/remove_scrn_saver(), to declare
  loading/unloading of a screen saver.  The screen saver calls these
  functions to notify syscons of loading/unloading events.
  
  It was possible to load multiple savers each of which will try to
  remember the previous saver in a local variable (`old_saver'). The
  scheme breaks easily if the user load two savers and unload them in a
  wrong order; if the first saver is unloaded first, `old_saver' in the
  second saver points to nowhere.
  
  Now only one screen saver is allowed in memory at a time.
  
  Soeren will be looking into this issue again later.  syscons is
  becoming too heavy.  It's time to cut things down, rather than adding
  more...
  
  2. Make scrn_timer() to be the primary caller of the screen saver
  (*current_saver)(). scintr(), scioctl() and ansi_put() update
  `scrn_time_stamp' to indicate that they want to stop the screen saver.
  
  There are three exceptions, however.
  
  One is remove_scrn_saver() which need to stop the current screen saver
  if it is running. To guard against scrn_timer() calling the saver during
  this operation, `current_saver' is set to `none_saver' early.
  
  The others are sccngetc() and sccncheckc(); they will unblank the
  screen too.  When the kernel enters DDB (via the hot key or a
  break point), the screen saver will be stopped by sccngetc().
  However, we have a reentrancy problem here. If the system has been in
  the middle of the screen saver...
  
  (The screen saver reentrancy problem has always been with sccnputc()
  and sccngetc() in the -current source. So, the new code is doing no
  worse, I reckon.)
  
  3. Use `mono_time' rather than `time'.
  
  4. Make set_border() work for EGA and CGA in addition to VGA. Do
  nothing for MDA.
  
  Changes to the LKM screen saver modules will follow shortly.  YOU NEED
  TO RECOMPILE BOTH SCREEN SAVERS AND KERNEL AS OF THESE CHANGES.
  
  Reviewed by: sos and bde
  
  Revision  Changes    Path
  1.225     +94 -36    src/sys/i386/isa/syscons.c
  1.31      +3 -1      src/sys/i386/isa/syscons.h



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199707151443.HAA25349>