From 6439adffc63682f07056a8fa3ed857ad29dcaa4a Mon Sep 17 00:00:00 2001 From: Albert S Date: Fri, 27 May 2022 09:26:03 +0200 Subject: [PATCH] gui: Begin IPCPreviewWorker --- gui/ipcpreviewworker.cpp | 31 +++++++++++++++++++++++++++++++ gui/ipcpreviewworker.h | 20 ++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 gui/ipcpreviewworker.cpp create mode 100644 gui/ipcpreviewworker.h diff --git a/gui/ipcpreviewworker.cpp b/gui/ipcpreviewworker.cpp new file mode 100644 index 0000000..236111d --- /dev/null +++ b/gui/ipcpreviewworker.cpp @@ -0,0 +1,31 @@ +#include +#include "ipcpreviewworker.h" +#include "previewgeneratormapfunctor.h" +IPCPreviewWorker::IPCPreviewWorker() +{ +} + +void IPCPreviewWorker::start(RenderConfig config, const QVector &targets, QLocalSocket *peer) +{ + connect(&previewWorkerWatcher, &QFutureWatcher::resultReadyAt, this, + [peer, this](int index) + { + QDataStream stream{peer}; + stream << previewWorkerWatcher.resultAt(index); + peer->flush(); + }); + connect(&previewWorkerWatcher, &QFutureWatcher::finished, this, + [peer] + { + /* TODO / + + /*peer->waitForBytesWritten(); + peer->disconnectFromServer(); + peer->deleteLater();*/ + }); + + auto mapFunctor = new PreviewGeneratorMapFunctor(); + mapFunctor->setRenderConfig(config); + + previewWorkerWatcher.setFuture(QtConcurrent::mapped(targets, *mapFunctor)); +} diff --git a/gui/ipcpreviewworker.h b/gui/ipcpreviewworker.h new file mode 100644 index 0000000..f4c8b56 --- /dev/null +++ b/gui/ipcpreviewworker.h @@ -0,0 +1,20 @@ +#ifndef IPCPREVIEWWORKER_H +#define IPCPREVIEWWORKER_H +#include +#include +#include "renderconfig.h" +#include "rendertarget.h" +#include "previewgenerator.h" + +class IPCPreviewWorker : public QObject +{ + Q_OBJECT + private: + QFutureWatcher previewWorkerWatcher; + + public: + IPCPreviewWorker(); + void start(RenderConfig config, const QVector &targets, QLocalSocket *peer); +}; + +#endif // IPCPREVIEWWORKER_H