#include #include "ipcpreviewworker.h" #include "previewgeneratormapfunctor.h" IPCPreviewWorker::IPCPreviewWorker() { this->connect(&previewWorkerWatcher, &QFutureWatcher::resultReadyAt, this, [this](int index) { emit previewGenerated(previewWorkerWatcher.resultAt(index)); }); connect(&previewWorkerWatcher, &QFutureWatcher::finished, this, [this] { emit finished(); }); } void IPCPreviewWorker::start(RenderConfig config, const QVector &targets, QLocalSocket *peer) { stop(); auto mapFunctor = PreviewGeneratorMapFunctor(); mapFunctor.setRenderConfig(config); previewWorkerWatcher.setFuture(QtConcurrent::mapped(targets, mapFunctor)); } void IPCPreviewWorker::stop() { previewWorkerWatcher.cancel(); previewWorkerWatcher.waitForFinished(); }