diff options
Diffstat (limited to 'gui/ice40/worker.h')
-rw-r--r-- | gui/ice40/worker.h | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/gui/ice40/worker.h b/gui/ice40/worker.h new file mode 100644 index 00000000..181fafa3 --- /dev/null +++ b/gui/ice40/worker.h @@ -0,0 +1,55 @@ +#ifndef WORKER_H +#define WORKER_H + +#include <QMutex> +#include <QThread> +#include "nextpnr.h" + +NEXTPNR_NAMESPACE_BEGIN + +class TaskManager; + +class Worker : public QObject +{ + Q_OBJECT + public: + Worker(Context *ctx, TaskManager *parent); + public Q_SLOTS: + void parsejson(const std::string &filename); + Q_SIGNALS: + void log(const std::string &text); + + private: + Context *ctx; +}; + +class TaskManager : public QObject +{ + Q_OBJECT + QThread workerThread; + + public: + TaskManager(Context *ctx); + ~TaskManager(); + bool shouldTerminate(); + void clearTerminate(); + bool isPaused(); + public Q_SLOTS: + void info(const std::string &text); + void terminate_thread(); + void pause_thread(); + void continue_thread(); + Q_SIGNALS: + void terminate(); + void parsejson(const std::string &); + void log(const std::string &text); + + private: + QMutex mutex; + bool toTerminate; + bool toPause; +}; + +NEXTPNR_NAMESPACE_END + +#endif // WORKER_H |