| 213 | } |
| 214 | |
| 215 | void Headless::progressTimeout() |
| 216 | { |
| 217 | QString status; |
| 218 | uint64_t prog, end, seed; |
| 219 | qreal min, avg, max; |
| 220 | sthread.getProgress(&status, &prog, &end, &seed, &min, &avg, &max); |
| 221 | |
| 222 | if (progressfp) |
| 223 | { |
| 224 | long pos = ftell(progressfp); |
| 225 | fprintf(progressfp, "#Progress: %20" PRId64 "\n", seed); |
| 226 | fseek(progressfp, pos, SEEK_SET); |
| 227 | } |
| 228 | |
| 229 | short width = get_term_width(); |
| 230 | if (width <= 24) |
| 231 | return; |
| 232 | |
| 233 | qreal perc = (qreal) prog / end; |
| 234 | |
| 235 | int cols = floor(perc * (width - 4) + 1e-6); |
| 236 | qint64 sec = elapsed.elapsed() / 1000; |
| 237 | |
| 238 | QStringList l; |
| 239 | l += QString(" Found matching seeds:%1 ").arg(results.size(), width-23); |
| 240 | l += QString(" Scheduled seed:%1 ").arg((int64_t)seed, width-17); |
| 241 | l += QString(" Progress:%1 ").arg(QString("%1 / %2 : %3%").arg(prog).arg(end).arg(100*perc, 5, 'f', 2), width-11); |
| 242 | l += QString(" [%1%2] ").arg("", cols, '#').arg("", width-cols-4, '-'); |
| 243 | l += QString(" %1").arg(status, 1-width); |
| 244 | l += QString::asprintf(" %d:%02d:%02d", (int)(sec / 3600), (int)(sec / 60) % 60, (int)(sec % 60)); |
| 245 | l += ""; |
| 246 | |
| 247 | qOut() << "\e[999D\e[" << l.size() << "A"; |
| 248 | for (QString& s : l) |
| 249 | { |
| 250 | s.truncate(width); |
| 251 | qOut() << s << "\n"; |
| 252 | } |
| 253 | qOut().flush(); |
| 254 | } |
| 255 | |
| 256 |
nothing calls this directly
no test coverage detected