- splx(s);
- iteputchar(c, tp->t_dev);
- spltty();
- }
- if (hiwat) {
- tp->t_state |= TS_TIMEOUT;
- timeout(ttrstrt, tp, 1);
+ if (cc > iteburst) {
+ hiwat++;
+ cc = iteburst;
+ }
+ /*
+ * Turn off cursor while we output multiple characters.
+ * Saves a lot of expensive window move operations.
+ */
+ ip = &ite_softc[UNIT(tp->t_dev)];
+ ite_erasecursor(ip, ip->isw);
+ ip->flags &= ~ITE_CURSORON;
+ while (--cc >= 0)
+ iteputchar(getc(&tp->t_outq), tp->t_dev);
+ ip->flags |= ITE_CURSORON;
+ ite_drawcursor(ip, ip->isw);
+ if (hiwat) {
+ tp->t_state |= TS_TIMEOUT;
+ timeout(iterestart, tp, 1);
+ }