diff --git a/src/slic3r/GUI/Jobs/BoostThreadWorker.cpp b/src/slic3r/GUI/Jobs/BoostThreadWorker.cpp index 57c9a62beb..1c44a71eb7 100644 --- a/src/slic3r/GUI/Jobs/BoostThreadWorker.cpp +++ b/src/slic3r/GUI/Jobs/BoostThreadWorker.cpp @@ -170,7 +170,7 @@ bool BoostThreadWorker::wait_for_idle(unsigned timeout_ms) return !timeout_reached; } -bool BoostThreadWorker::push(std::unique_ptr job) +bool BoostThreadWorker::push(std::shared_ptr job) { if (!job) return false; diff --git a/src/slic3r/GUI/Jobs/BoostThreadWorker.hpp b/src/slic3r/GUI/Jobs/BoostThreadWorker.hpp index b0b97e3894..3887be79c1 100644 --- a/src/slic3r/GUI/Jobs/BoostThreadWorker.hpp +++ b/src/slic3r/GUI/Jobs/BoostThreadWorker.hpp @@ -25,7 +25,7 @@ class BoostThreadWorker : public Worker, private Job::Ctl { struct JobEntry // Goes into worker and also out of worker as a finalize msg { - std::unique_ptr job; + std::shared_ptr job; bool canceled = false; std::exception_ptr eptr = nullptr; }; @@ -110,7 +110,7 @@ public: BoostThreadWorker &operator=(const BoostThreadWorker &) = delete; BoostThreadWorker &operator=(BoostThreadWorker &&) = delete; - bool push(std::unique_ptr job) override; + bool push(std::shared_ptr job) override; bool is_idle() const override { diff --git a/src/slic3r/GUI/Jobs/PlaterWorker.hpp b/src/slic3r/GUI/Jobs/PlaterWorker.hpp index 95a1c449a7..d38a57b6a6 100644 --- a/src/slic3r/GUI/Jobs/PlaterWorker.hpp +++ b/src/slic3r/GUI/Jobs/PlaterWorker.hpp @@ -18,7 +18,7 @@ class PlaterWorker: public Worker { wxWindow *m_plater; class PlaterJob : public Job { - std::unique_ptr m_job; + std::shared_ptr m_job; wxWindow *m_plater; long long m_process_duration; // [ms] @@ -93,7 +93,7 @@ class PlaterWorker: public Worker { } } - PlaterJob(wxWindow *p, std::unique_ptr j) + PlaterJob(wxWindow *p, std::shared_ptr j) : m_job{std::move(j)}, m_plater{p} { // TODO: decide if disabling slice button during UI job is what we @@ -131,9 +131,9 @@ public: } // Always package the job argument into a PlaterJob - bool push(std::unique_ptr job) override + bool push(std::shared_ptr job) override { - return m_w.push(std::make_unique(m_plater, std::move(job))); + return m_w.push(std::make_shared(m_plater, std::move(job))); } bool is_idle() const override { return m_w.is_idle(); } diff --git a/src/slic3r/GUI/Jobs/Worker.hpp b/src/slic3r/GUI/Jobs/Worker.hpp index 0bc7bc0863..3a29d49e8a 100644 --- a/src/slic3r/GUI/Jobs/Worker.hpp +++ b/src/slic3r/GUI/Jobs/Worker.hpp @@ -14,7 +14,7 @@ class Worker { public: // Queue up a new job after the current one. This call does not block. // Returns false if the job gets discarded. - virtual bool push(std::unique_ptr job) = 0; + virtual bool push(std::shared_ptr job) = 0; // Returns true if no job is running, the job queue is empty and no job // message is left to be processed. This means that nothing is left to @@ -73,7 +73,7 @@ bool queue_job(Worker &w, ProcessFn fn, FinishFn finishfn) } }; - auto j = std::make_unique(std::move(fn), std::move(finishfn)); + auto j = std::make_shared(std::move(fn), std::move(finishfn)); return w.push(std::move(j)); } @@ -83,7 +83,7 @@ bool queue_job(Worker &w, ProcessFn fn) return queue_job(w, std::move(fn), [](bool, std::exception_ptr &) {}); } -inline bool queue_job(Worker &w, std::unique_ptr j) +inline bool queue_job(Worker &w, std::shared_ptr j) { return w.push(std::move(j)); }