// Call all DOs which are linked to that DOs which have been triggered // These method is typically private and called with in a thread related to a priority // This thread is typically waiting on a synchronization element void run(unsigned inst) { std::function<void()> f; try { #ifdef __linux__ Logger::pLOG->info("DOR-THRD-{} has TID-{}", inst, syscall(SYS_gettid)); #endif while (_run_state) { _tbbExecutionQueue.pop(f); // Pop of concurrent_bounded_queue waits if queue empty f(); } } catch(const tbb::user_abort& abortException) { Logger::pLOG->info("Abort DOR-THRD-{}", inst); _run_state = false; } Logger::pLOG->info("DOR-THRD-{} has stopped", inst); }
virtual bool OnGetData(sf::SoundStream::Chunk& data) override { win32_exception::ensure_handler_installed_for_thread( "sfml-audio-thread"); std::pair<std::shared_ptr<core::read_frame>, std::shared_ptr<audio_buffer_16>> audio_data; input_.pop(audio_data); // Block until available graph_->set_value("tick-time", perf_timer_.elapsed()*format_desc_.fps*0.5); perf_timer_.restart(); container_.push_back(std::move(*audio_data.second)); data.Samples = container_.back().data(); data.NbSamples = container_.back().size(); if (audio_data.first) presentation_age_ = audio_data.first->get_age_millis(); return is_running_; }