aboutsummaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorCraig Rodrigues <rodrigc@FreeBSD.org>2005-08-30 18:58:17 +0000
committerCraig Rodrigues <rodrigc@FreeBSD.org>2005-08-30 18:58:17 +0000
commit86330afe351b1e2f438892c8f931bcc21365b849 (patch)
tree7796a5bca15fb24807fcf1b8d8fa3f0b68805a4b /sys/dev
parentf954ec0bcfdb373a4161c1db3aad0c10430a4c8f (diff)
Notes
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/syscons/scmouse.c2
-rw-r--r--sys/dev/syscons/scvesactl.c4
-rw-r--r--sys/dev/syscons/scvidctl.c14
-rw-r--r--sys/dev/syscons/syscons.c4
-rw-r--r--sys/dev/syscons/syscons.h7
5 files changed, 17 insertions, 14 deletions
diff --git a/sys/dev/syscons/scmouse.c b/sys/dev/syscons/scmouse.c
index bec8f74d4ad18..794a4bafabb74 100644
--- a/sys/dev/syscons/scmouse.c
+++ b/sys/dev/syscons/scmouse.c
@@ -126,7 +126,7 @@ sc_mouse_move(scr_stat *scp, int x, int y)
s = spltty();
scp->mouse_xpos = scp->mouse_oldxpos = x;
scp->mouse_ypos = scp->mouse_oldypos = y;
- if (scp->font_size <= 0)
+ if (scp->font_size <= 0 || scp->font_width <= 0)
scp->mouse_pos = scp->mouse_oldpos = 0;
else
scp->mouse_pos = scp->mouse_oldpos =
diff --git a/sys/dev/syscons/scvesactl.c b/sys/dev/syscons/scvesactl.c
index a39bf483d7e07..a556dc01d01a3 100644
--- a/sys/dev/syscons/scvesactl.c
+++ b/sys/dev/syscons/scvesactl.c
@@ -70,7 +70,7 @@ vesa_ioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *
case SW_TEXT_132x60:
if (!(scp->sc->adp->va_flags & V_ADP_MODECHANGE))
return ENODEV;
- return sc_set_text_mode(scp, tp, cmd & 0xff, 0, 0, 0);
+ return sc_set_text_mode(scp, tp, cmd & 0xff, 0, 0, 0, 0);
/* text modes */
case SW_VESA_C80x60:
@@ -81,7 +81,7 @@ vesa_ioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *
if (!(scp->sc->adp->va_flags & V_ADP_MODECHANGE))
return ENODEV;
mode = (cmd & 0xff) + M_VESA_BASE;
- return sc_set_text_mode(scp, tp, mode, 0, 0, 0);
+ return sc_set_text_mode(scp, tp, mode, 0, 0, 0, 0);
/* graphics modes */
case SW_VESA_32K_320: case SW_VESA_64K_320:
diff --git a/sys/dev/syscons/scvidctl.c b/sys/dev/syscons/scvidctl.c
index 785067d4ebd6b..62d46c27530f7 100644
--- a/sys/dev/syscons/scvidctl.c
+++ b/sys/dev/syscons/scvidctl.c
@@ -133,7 +133,7 @@ typedef struct old_video_info {
int
sc_set_text_mode(scr_stat *scp, struct tty *tp, int mode, int xsize, int ysize,
- int fontsize)
+ int fontsize, int fontwidth)
{
video_info_t info;
u_char *font;
@@ -213,6 +213,7 @@ sc_set_text_mode(scr_stat *scp, struct tty *tp, int mode, int xsize, int ysize,
scp->ypixel = scp->ysize*fontsize;
scp->font = font;
scp->font_size = fontsize;
+ scp->font_width = fontwidth;
/* allocate buffers */
sc_alloc_scr_buffer(scp, TRUE, TRUE);
@@ -317,7 +318,7 @@ sc_set_graphics_mode(scr_stat *scp, struct tty *tp, int mode)
int
sc_set_pixel_mode(scr_stat *scp, struct tty *tp, int xsize, int ysize,
- int fontsize)
+ int fontsize, int fontwidth)
{
#ifndef SC_PIXEL_MODE
return ENODEV;
@@ -429,6 +430,7 @@ sc_set_pixel_mode(scr_stat *scp, struct tty *tp, int xsize, int ysize,
scp->yoff = (scp->ypixel/fontsize - ysize)/2;
scp->font = font;
scp->font_size = fontsize;
+ scp->font_width = fontwidth;
/* allocate buffers */
sc_alloc_scr_buffer(scp, TRUE, TRUE);
@@ -554,7 +556,7 @@ sc_vid_ioctl(struct tty *tp, u_long cmd, caddr_t data, int flag, struct thread *
if (info.vi_flags & V_INFO_GRAPHICS)
return sc_set_graphics_mode(scp, tp, *(int *)data);
else
- return sc_set_text_mode(scp, tp, *(int *)data, 0, 0, 0);
+ return sc_set_text_mode(scp, tp, *(int *)data, 0, 0, 0, 0);
#endif /* SC_NO_MODE_CHANGE */
case OLD_CONS_MODEINFO: /* get mode information (old infterface) */
@@ -653,7 +655,7 @@ sc_vid_ioctl(struct tty *tp, u_long cmd, caddr_t data, int flag, struct thread *
#endif
if (!(adp->va_flags & V_ADP_MODECHANGE))
return ENODEV;
- return sc_set_text_mode(scp, tp, cmd & 0xff, 0, 0, 0);
+ return sc_set_text_mode(scp, tp, cmd & 0xff, 0, 0, 0, 0);
/* GRAPHICS MODES */
case SW_BG320: case SW_BG640:
@@ -746,7 +748,7 @@ sc_vid_ioctl(struct tty *tp, u_long cmd, caddr_t data, int flag, struct thread *
return EINVAL;
if (scp->status & GRAPHICS_MODE)
return sc_set_pixel_mode(scp, tp, scp->xsize, scp->ysize,
- scp->font_size);
+ scp->font_size, scp->font_width);
s = spltty();
if ((error = sc_clean_up(scp))) {
splx(s);
@@ -789,7 +791,7 @@ sc_vid_ioctl(struct tty *tp, u_long cmd, caddr_t data, int flag, struct thread *
if (ISUNKNOWNSC(scp) || ISTEXTSC(scp))
return ENODEV;
return sc_set_pixel_mode(scp, tp, ((int *)data)[0], ((int *)data)[1],
- ((int *)data)[2]);
+ ((int *)data)[2], 8);
#endif /* SC_PIXEL_MODE */
case KDGETMODE: /* get current mode of this (virtual) console */
diff --git a/sys/dev/syscons/syscons.c b/sys/dev/syscons/syscons.c
index 8daca00000536..5c8b843c2ac5f 100644
--- a/sys/dev/syscons/syscons.c
+++ b/sys/dev/syscons/syscons.c
@@ -358,7 +358,7 @@ sc_attach_unit(int unit, int flags)
splash_term(sc->adp);
#endif
sc_set_graphics_mode(scp, NULL, M_VESA_800x600);
- sc_set_pixel_mode(scp, NULL, COL, ROW, 16);
+ sc_set_pixel_mode(scp, NULL, COL, ROW, 16, 8);
sc->initial_mode = M_VESA_800x600;
#ifdef DEV_SPLASH
/* put up the splash again! */
@@ -510,7 +510,7 @@ scopen(struct cdev *dev, int flag, int mode, struct thread *td)
if (scp == NULL) {
scp = SC_STAT(dev) = alloc_scp(sc, SC_VTY(dev));
if (ISGRAPHSC(scp))
- sc_set_pixel_mode(scp, NULL, COL, ROW, 16);
+ sc_set_pixel_mode(scp, NULL, COL, ROW, 16, 8);
}
if (!tp->t_winsize.ws_col && !tp->t_winsize.ws_row) {
tp->t_winsize.ws_col = scp->xsize;
diff --git a/sys/dev/syscons/syscons.h b/sys/dev/syscons/syscons.h
index 460d3c5ad7b1f..542f301ecfce1 100644
--- a/sys/dev/syscons/syscons.h
+++ b/sys/dev/syscons/syscons.h
@@ -606,10 +606,11 @@ int sc_mouse_ioctl(struct tty *tp, u_long cmd, caddr_t data,
/* scvidctl.c */
int sc_set_text_mode(scr_stat *scp, struct tty *tp, int mode,
- int xsize, int ysize, int fontsize);
+ int xsize, int ysize, int fontsize,
+ int font_width);
int sc_set_graphics_mode(scr_stat *scp, struct tty *tp, int mode);
-int sc_set_pixel_mode(scr_stat *scp, struct tty *tp,
- int xsize, int ysize, int fontsize);
+int sc_set_pixel_mode(scr_stat *scp, struct tty *tp, int xsize,
+ int ysize, int fontsize, int font_width);
int sc_vid_ioctl(struct tty *tp, u_long cmd, caddr_t data, int flag,
struct thread *td);