multiprogress.[ch]: Save and restore `PC' in the render state.
[dvdrip] / multiprogress.c
index 3d4ba8c..4254e13 100644 (file)
@@ -116,7 +116,7 @@ int progress_init(struct progress_state *progress)
 
   if (tgetflag("ut") > 0) tty->cap.f |= TCF_BCE;
 
-  t = tgetstr("pc", &capcur); PC = t ? *t : 0;
+  t = tgetstr("pc", &capcur); tty->cap.pc = t ? *t : 0;
 
   SETDIM(defwd, "COLUMNS", tgetnum("co"), 80);
   SETDIM(defht, "LINES", tgetnum("li"), 25);
@@ -257,6 +257,7 @@ static int setup_render_state(struct progress_state *progress,
 #ifdef USE_TERMCAP
   render->old_bc = BC; BC = 0;
   render->old_up = UP; UP = 0;
+  render->old_pc = PC; PC = tty->cap.pc;
 #endif
 
   if (!ioctl(fileno(tty->fp), TIOCGWINSZ, &wsz))
@@ -277,6 +278,7 @@ static void free_render_state(struct progress_render_state *render)
 #ifdef USE_TERMCAP
   UP = render->old_up;
   BC = render->old_bc;
+  PC = render->old_pc;
 #endif
 }