| 548 | } |
| 549 | |
| 550 | static void check_lost_jobs(color_ostream &out, int ticks) |
| 551 | { |
| 552 | ProtectedJob::cur_tick_idx++; |
| 553 | if (ticks < 0) ticks = 0; |
| 554 | |
| 555 | df::job_list_link *p = world->jobs.list.next; |
| 556 | for (; p; p = p->next) |
| 557 | { |
| 558 | df::job *job = p->item; |
| 559 | |
| 560 | ProtectedJob *pj = get_known(job->id); |
| 561 | if (pj) |
| 562 | { |
| 563 | if (!job->flags.bits.repeat) |
| 564 | forget_job(out, pj); |
| 565 | else |
| 566 | pj->tick_job(job, ticks); |
| 567 | } |
| 568 | else if (job->flags.bits.repeat && isSupportedJob(job)) |
| 569 | { |
| 570 | pj = new ProtectedJob(job); |
| 571 | assert(pj->holder); |
| 572 | known_jobs[pj->id] = pj; |
| 573 | } |
| 574 | } |
| 575 | |
| 576 | for (TKnownJobs::const_iterator it = known_jobs.begin(); it != known_jobs.end(); ++it) |
| 577 | { |
| 578 | if (it->second->tick_idx == ProtectedJob::cur_tick_idx || |
| 579 | !it->second->isLive()) |
| 580 | continue; |
| 581 | |
| 582 | it->second->actual_job = NULL; |
| 583 | pending_recover.push_back(it->second); |
| 584 | } |
| 585 | } |
| 586 | |
| 587 | static void update_job_data(color_ostream &out) |
| 588 | { |
no test coverage detected