chiark / gitweb /
@@@ tty cleanup
[mLib] / ui / ttyprogress.c
index dc023d5b34260c3ad1a41adb4041834e1edaf2dc..768e2768f8afc1070bdba2b0da07d376f5c68217 100644 (file)
@@ -433,8 +433,7 @@ int ttyprogress_update(struct ttyprogress *progress)
   struct ttyprogress_render render;
   struct ttyprogress_item *item;
   struct tty *tty = progress->tty;
-  struct tty_attr save;
-  uint32 modes;
+  struct tty_state save;
   unsigned f = 0;
 #define f_any 1u
 
@@ -442,8 +441,7 @@ int ttyprogress_update(struct ttyprogress *progress)
 
   setup_render_state(progress, &render);
   clear_progress(progress, 0);
-  modes = tty->st.modes; tty_setmodes(tty, TTMF_AUTOM, 0);
-  save = tty->st.attr;
+  save = tty->st;
 
   for (item = progress->items; item; item = item->next) {
     if (f&f_any) tty_move(tty, TTOF_YCUR | TTOF_XHOME, 1, 0);
@@ -452,7 +450,7 @@ int ttyprogress_update(struct ttyprogress *progress)
     item->render(item, &render); progress->last_lines++; f |= f_any;
     if (progress->last_lines > tty->ht) break;
   }
-  tty_setmodes(tty, MASK32, modes); tty_setattr(tty, &save);
+  tty_restore(tty, &save);
   fflush(tty->fpout);
   return (0);