예제 #1
0
  void PeriodicTask::stop()
  {
    asyncStop();

    if (os::gettid() == _p->_tid)
      return;

    boost::mutex::scoped_lock l(_p->_mutex);
    while (_p->_state == TaskState::Stopping)
      _p->_cond.wait(l);
  }
예제 #2
0
  void PeriodicTask::stop()
  {
    asyncStop();
    if (os::gettid() == _p->_tid)
      return;
    try
    {
      _p->_task.wait();
    }
    catch (...) {}

    // So here state can be stopping (callback was aborted) or stopped
    // We set to stopped either way to be ready for restart.
    if (!_p->_state.setIfEquals(Task_Stopping , Task_Stopped) &&
        !_p->_state.setIfEquals(Task_Stopped, Task_Stopped))
      qiLogError() << "PeriodicTask inconsistency, expected Stopped, got " << *_p->_state;
  }
예제 #3
0
void MainDialog::onStop()
{
    QTimer::singleShot(0, this, SLOT(asyncStop()));
}