diff options
| author | Bruce Evans <bde@FreeBSD.org> | 2017-04-12 16:21:55 +0000 |
|---|---|---|
| committer | Bruce Evans <bde@FreeBSD.org> | 2017-04-12 16:21:55 +0000 |
| commit | af032a9dec07fdf87616af9bfb7b15be1bdbbea9 (patch) | |
| tree | a315cf657a1c02470c3df3d2c339d879900060c8 /sys/dev/syscons | |
| parent | c577e950d88dc8ba2b57c42c7302dede4417ef91 (diff) | |
Notes
Diffstat (limited to 'sys/dev/syscons')
| -rw-r--r-- | sys/dev/syscons/scterm-teken.c | 22 |
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) { |
