The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/syscons/star/star_saver.c

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * SPDX-License-Identifier: BSD-3-Clause
    3  *
    4  * Copyright (c) 1995-1998 Søren Schmidt
    5  * All rights reserved.
    6  *
    7  * Redistribution and use in source and binary forms, with or without
    8  * modification, are permitted provided that the following conditions
    9  * are met:
   10  * 1. Redistributions of source code must retain the above copyright
   11  *    notice, this list of conditions and the following disclaimer,
   12  *    without modification, immediately at the beginning of the file.
   13  * 2. Redistributions in binary form must reproduce the above copyright
   14  *    notice, this list of conditions and the following disclaimer in the
   15  *    documentation and/or other materials provided with the distribution.
   16  * 3. The name of the author may not be used to endorse or promote products
   17  *    derived from this software without specific prior written permission.
   18  *
   19  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
   20  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   21  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   22  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
   23  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
   24  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   25  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   26  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   28  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   29  *
   30  * $FreeBSD$
   31  */
   32 
   33 #include <sys/param.h>
   34 #include <sys/systm.h>
   35 #include <sys/kernel.h>
   36 #include <sys/module.h>
   37 #include <sys/consio.h>
   38 #include <sys/fbio.h>
   39 
   40 #include <machine/pc/display.h>
   41 
   42 #include <dev/fb/fbreg.h>
   43 #include <dev/fb/splashreg.h>
   44 #include <dev/syscons/syscons.h>
   45 
   46 #define NUM_STARS       50
   47 
   48 static int blanked;
   49 
   50 /*
   51  * Alternate saver that got its inspiration from a well known utility
   52  * package for an inferior^H^H^H^H^H^Hfamous OS.
   53  */
   54 static int
   55 star_saver(video_adapter_t *adp, int blank)
   56 {
   57         sc_softc_t      *sc;
   58         scr_stat        *scp;
   59         int             cell, i;
   60         static u_char   pattern[] = {"...........++++***   "};
   61         static char     color16[] = {FG_DARKGREY, FG_LIGHTGREY,
   62                                      FG_WHITE, FG_LIGHTCYAN};
   63         static u_short  stars[NUM_STARS][2];
   64 
   65         sc = sc_find_softc(adp, NULL);
   66         if (sc == NULL)
   67                 return EAGAIN;
   68         scp = sc->cur_scp;
   69 
   70         if (blank) {
   71                 if (adp->va_info.vi_flags & V_INFO_GRAPHICS)
   72                         return EAGAIN;
   73                 if (!blanked) {
   74                         /* clear the screen and set the border color */
   75                         sc_vtb_clear(&scp->scr, sc->scr_map[0x20],
   76                                      (FG_LIGHTGREY | BG_BLACK) << 8);
   77                         vidd_set_hw_cursor(adp, -1, -1);
   78                         sc_set_border(scp, 0);
   79                         blanked = TRUE;
   80                         for(i=0; i<NUM_STARS; i++) {
   81                                 stars[i][0] =
   82                                         random() % (scp->xsize*scp->ysize);
   83                                 stars[i][1] = 0;
   84                         }
   85                 }
   86                 cell = random() % NUM_STARS;
   87                 sc_vtb_putc(&scp->scr, stars[cell][0], 
   88                             sc->scr_map[pattern[stars[cell][1]]],
   89                             color16[random()%sizeof(color16)] << 8);
   90                 if ((stars[cell][1]+=(random()%4)) >= sizeof(pattern)-1) {
   91                         stars[cell][0] = random() % (scp->xsize*scp->ysize);
   92                         stars[cell][1] = 0;
   93                 }
   94         } else
   95                 blanked = FALSE;
   96 
   97         return 0;
   98 }
   99 
  100 static int
  101 star_init(video_adapter_t *adp)
  102 {
  103         blanked = FALSE;
  104         return 0;
  105 }
  106 
  107 static int
  108 star_term(video_adapter_t *adp)
  109 {
  110         return 0;
  111 }
  112 
  113 static scrn_saver_t star_module = {
  114         "star_saver", star_init, star_term, star_saver, NULL,
  115 };
  116 
  117 SAVER_MODULE(star_saver, star_module);

Cache object: 5dac3d5263084bd59331301670147e07


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.