| 711 | } |
| 712 | |
| 713 | void BackgroundParser::parseComplete(const ThreadWeaver::JobPointer& job) |
| 714 | { |
| 715 | Q_D(BackgroundParser); |
| 716 | |
| 717 | auto decorator = dynamic_cast<ThreadWeaver::QObjectDecorator*>(job.data()); |
| 718 | Q_ASSERT(decorator); |
| 719 | auto* parseJob = dynamic_cast<ParseJob*>(decorator->job()); |
| 720 | Q_ASSERT(parseJob); |
| 721 | emit parseJobFinished(parseJob); |
| 722 | |
| 723 | { |
| 724 | QMutexLocker lock(&d->m_mutex); |
| 725 | |
| 726 | d->m_parseJobs.remove(parseJob->document()); |
| 727 | |
| 728 | d->m_jobProgress.remove(parseJob); |
| 729 | |
| 730 | ++d->m_doneParseJobs; |
| 731 | updateProgressData(); |
| 732 | } |
| 733 | |
| 734 | //Continue creating more parse-jobs |
| 735 | QMetaObject::invokeMethod(this, "parseDocuments", Qt::QueuedConnection); |
| 736 | } |
| 737 | |
| 738 | void BackgroundParser::disableProcessing() |
| 739 | { |