void FilterWorker::run() { // Launch the thread to apply the effect in background base::thread thread(&FilterWorker::thread_proxy, this); // Open the alert window in foreground (this is modal, locks the main thread) m_alertWindow->openWindowInForeground(); // Stop the monitoring timer. m_timer.stop(); { scoped_lock lock(m_mutex); if (m_done && m_filterMgr->isTransaction()) m_filterMgr->commitTransaction(); else m_cancelled = true; } // Wait the `effect_bg' thread thread.join(); if (!m_error.empty()) { Console console; console.printf("A problem has occurred.\n\nDetails:\n%s", m_error.c_str()); } else if (m_cancelled && !m_filterMgr->isTransaction()) { StatusBar::instance() ->showTip(2500, "No unlocked layers to apply filter"); } }
void FilterWorker::run() { // Launch the thread to apply the effect in background base::thread thread(&FilterWorker::thread_proxy, this); // Open the alert window in foreground (this is modal, locks the main thread) m_alertWindow->openWindowInForeground(); // Stop the monitoring timer. m_timer.stop(); { scoped_lock lock(m_mutex); if (!m_done) m_cancelled = true; } // Wait the `effect_bg' thread thread.join(); if (!m_error.empty()) { Console console; console.printf("A problem has occurred.\n\nDetails:\n%s", m_error.c_str()); } }