From e034af7050349c983062326d9766e766665b2b1a Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Sat, 23 Dec 2023 22:35:07 +0800 Subject: [PATCH] Trigger task progress update on paint event as well (#3237) --- src/slic3r/GUI/Jobs/PlaterWorker.hpp | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/src/slic3r/GUI/Jobs/PlaterWorker.hpp b/src/slic3r/GUI/Jobs/PlaterWorker.hpp index 1a38736d99..7f155bd69c 100644 --- a/src/slic3r/GUI/Jobs/PlaterWorker.hpp +++ b/src/slic3r/GUI/Jobs/PlaterWorker.hpp @@ -118,26 +118,20 @@ class PlaterWorker: public Worker { } }; - void on_idle(wxIdleEvent &evt) - { - process_events(); - evt.Skip(); - } + EventGuard on_idle_evt; + EventGuard on_paint_evt; public: template PlaterWorker(wxWindow *plater, WorkerArgs &&...args) - : m_w{std::forward(args)...}, m_plater{plater} - { + : m_w{std::forward(args)...} + , m_plater{plater} // Ensure that messages from the worker thread to the UI thread are // processed continuously. - plater->Bind(wxEVT_IDLE, &PlaterWorker::on_idle, this); - } - - ~PlaterWorker() + , on_idle_evt(plater, wxEVT_IDLE, [this](wxIdleEvent&) { process_events(); }) + , on_paint_evt(plater, wxEVT_PAINT, [this](wxPaintEvent&) { process_events(); }) { - m_plater->Unbind(wxEVT_IDLE, &PlaterWorker::on_idle, this); } // Always package the job argument into a PlaterJob