aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/syscons
diff options
context:
space:
mode:
authorBruce Evans <bde@FreeBSD.org>2017-04-12 16:21:55 +0000
committerBruce Evans <bde@FreeBSD.org>2017-04-12 16:21:55 +0000
commitaf032a9dec07fdf87616af9bfb7b15be1bdbbea9 (patch)
treea315cf657a1c02470c3df3d2c339d879900060c8 /sys/dev/syscons
parentc577e950d88dc8ba2b57c42c7302dede4417ef91 (diff)
Notes
Diffstat (limited to 'sys/dev/syscons')
-rw-r--r--sys/dev/syscons/scterm-teken.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/sys/dev/syscons/scterm-teken.c b/sys/dev/syscons/scterm-teken.c
index 8da326e4e2cc4..d44dd8983c20d 100644
--- a/sys/dev/syscons/scterm-teken.c
+++ b/sys/dev/syscons/scterm-teken.c
@@ -72,6 +72,8 @@ typedef struct {
static teken_stat reserved_teken_stat;
+static void scteken_sync_internal(scr_stat *, teken_stat *);
+
static sc_term_sw_t sc_term_scteken = {
{ NULL, NULL },
"scteken", /* emulator name */
@@ -116,7 +118,7 @@ static int
scteken_init(scr_stat *scp, void **softc, int code)
{
teken_stat *ts;
- teken_pos_t tp;
+ teken_attr_t ta;
if (*softc == NULL) {
if (reserved_teken_stat.ts_busy)
@@ -131,17 +133,16 @@ scteken_init(scr_stat *scp, void **softc, int code)
ts->ts_busy = 1;
/* FALLTHROUGH */
case SC_TE_WARM_INIT:
+ ta = *teken_get_defattr(&ts->ts_teken);
teken_init(&ts->ts_teken, &scteken_funcs, scp);
+ teken_set_defattr(&ts->ts_teken, &ta);
#ifndef TEKEN_UTF8
teken_set_8bit(&ts->ts_teken);
#endif /* !TEKEN_UTF8 */
#ifdef TEKEN_CONS25
teken_set_cons25(&ts->ts_teken);
#endif /* TEKEN_CONS25 */
-
- tp.tp_row = scp->ysize;
- tp.tp_col = scp->xsize;
- teken_set_winsize(&ts->ts_teken, &tp);
+ scteken_sync_internal(scp, ts);
break;
}
@@ -219,7 +220,7 @@ scteken_clear(scr_stat *scp)
teken_stat *ts = scp->ts;
sc_move_cursor(scp, 0, 0);
- scteken_sync(scp);
+ scteken_sync_internal(scp, ts);
sc_vtb_clear(&scp->vtb, scp->sc->scr_map[0x20],
scteken_te_to_sc_attr(teken_get_curattr(&ts->ts_teken))
<< 8);
@@ -284,9 +285,8 @@ scteken_fkeystr(scr_stat *scp, int c)
}
static void
-scteken_sync(scr_stat *scp)
+scteken_sync_internal(scr_stat *scp, teken_stat *ts)
{
- teken_stat *ts = scp->ts;
teken_pos_t tp;
tp.tp_col = scp->xsize;
@@ -298,6 +298,12 @@ scteken_sync(scr_stat *scp)
}
static void
+scteken_sync(scr_stat *scp)
+{
+ scteken_sync_internal(scp, scp->ts);
+}
+
+static void
scteken_nop(void)
{