From 097df1869d654b1214b925fe991aa09d2ef5b3cd Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Thu, 21 Jun 2018 15:41:40 +0200 Subject: Added task manager and worker thread for ice40 --- gui/ice40/worker.h | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 gui/ice40/worker.h (limited to 'gui/ice40/worker.h') diff --git a/gui/ice40/worker.h b/gui/ice40/worker.h new file mode 100644 index 00000000..5dc25d89 --- /dev/null +++ b/gui/ice40/worker.h @@ -0,0 +1,37 @@ +#ifndef WORKER_H +#define WORKER_H + +#include "nextpnr.h" +#include + +// FIXME +USING_NEXTPNR_NAMESPACE + +class Worker : public QObject +{ + Q_OBJECT +public: + Worker(Context *ctx); +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(); +public Q_SLOTS: + void info(const std::string &text); +Q_SIGNALS: + void parsejson(const std::string &); + void log(const std::string &text); +}; + +#endif // WORKER_H -- cgit v1.2.3 From 54549d36e911aac8d0b0a2eea6074654c06c9717 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Thu, 21 Jun 2018 17:44:18 +0200 Subject: log_error now trows exception, main is covering catch --- gui/ice40/worker.h | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'gui/ice40/worker.h') diff --git a/gui/ice40/worker.h b/gui/ice40/worker.h index 5dc25d89..12d740dd 100644 --- a/gui/ice40/worker.h +++ b/gui/ice40/worker.h @@ -1,8 +1,8 @@ #ifndef WORKER_H #define WORKER_H -#include "nextpnr.h" #include +#include "nextpnr.h" // FIXME USING_NEXTPNR_NAMESPACE @@ -10,13 +10,14 @@ USING_NEXTPNR_NAMESPACE class Worker : public QObject { Q_OBJECT -public: + public: Worker(Context *ctx); -public Q_SLOTS: + public Q_SLOTS: void parsejson(const std::string &filename); -Q_SIGNALS: + Q_SIGNALS: void log(const std::string &text); -private: + + private: Context *ctx; }; @@ -24,12 +25,13 @@ class TaskManager : public QObject { Q_OBJECT QThread workerThread; -public: + + public: TaskManager(Context *ctx); ~TaskManager(); -public Q_SLOTS: + public Q_SLOTS: void info(const std::string &text); -Q_SIGNALS: + Q_SIGNALS: void parsejson(const std::string &); void log(const std::string &text); }; -- cgit v1.2.3 From 3cd12e3671e5ee108f039cb4350bf885164a8cf5 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Fri, 22 Jun 2018 12:11:22 +0200 Subject: Add ability to terminate running tasks --- gui/ice40/worker.h | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'gui/ice40/worker.h') diff --git a/gui/ice40/worker.h b/gui/ice40/worker.h index 12d740dd..a2d220bd 100644 --- a/gui/ice40/worker.h +++ b/gui/ice40/worker.h @@ -1,17 +1,20 @@ #ifndef WORKER_H #define WORKER_H +#include #include #include "nextpnr.h" // FIXME USING_NEXTPNR_NAMESPACE +class TaskManager; + class Worker : public QObject { Q_OBJECT public: - Worker(Context *ctx); + Worker(Context *ctx, TaskManager *parent); public Q_SLOTS: void parsejson(const std::string &filename); Q_SIGNALS: @@ -29,11 +32,19 @@ class TaskManager : public QObject public: TaskManager(Context *ctx); ~TaskManager(); + bool shouldTerminate(); + void clearTerminate(); public Q_SLOTS: void info(const std::string &text); + void terminate_thread(); Q_SIGNALS: + void terminate(); void parsejson(const std::string &); void log(const std::string &text); + + private: + QMutex mutex; + bool toTerminate; }; #endif // WORKER_H -- cgit v1.2.3 From 11d99853ab4514b1f6b87c5beb87c91f50e702a6 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Fri, 22 Jun 2018 12:49:20 +0200 Subject: more task control --- gui/ice40/worker.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'gui/ice40/worker.h') diff --git a/gui/ice40/worker.h b/gui/ice40/worker.h index a2d220bd..49d1df4d 100644 --- a/gui/ice40/worker.h +++ b/gui/ice40/worker.h @@ -34,9 +34,12 @@ class TaskManager : public QObject ~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 &); @@ -45,6 +48,7 @@ class TaskManager : public QObject private: QMutex mutex; bool toTerminate; + bool toPause; }; #endif // WORKER_H -- cgit v1.2.3 From 7f368282700172925428e45f23b8b61e0bf39f94 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Fri, 22 Jun 2018 13:10:27 +0200 Subject: fixed namespace for gui section --- gui/ice40/worker.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'gui/ice40/worker.h') diff --git a/gui/ice40/worker.h b/gui/ice40/worker.h index 49d1df4d..181fafa3 100644 --- a/gui/ice40/worker.h +++ b/gui/ice40/worker.h @@ -5,8 +5,7 @@ #include #include "nextpnr.h" -// FIXME -USING_NEXTPNR_NAMESPACE +NEXTPNR_NAMESPACE_BEGIN class TaskManager; @@ -51,4 +50,6 @@ class TaskManager : public QObject bool toPause; }; +NEXTPNR_NAMESPACE_END + #endif // WORKER_H -- cgit v1.2.3