Update processor
This commit is contained in:
parent
b97baae06d
commit
81be95db12
|
@ -59,11 +59,10 @@ void Processor::SetProcessCallback(ProcessCallback callback) {
|
|||
callback_ = std::move(callback);
|
||||
}
|
||||
|
||||
void Processor::Activate() {
|
||||
void Processor::Activate(bool tree) {
|
||||
if (activated_)
|
||||
return;
|
||||
activated_ = true;
|
||||
{
|
||||
if (tree) {
|
||||
// Activate all parents
|
||||
Processor *parent = parent_;
|
||||
while (parent != nullptr) {
|
||||
|
@ -71,13 +70,20 @@ void Processor::Activate() {
|
|||
parent = parent->parent_;
|
||||
}
|
||||
}
|
||||
activated_ = true;
|
||||
thread_ = std::thread(&Processor::Run, this);
|
||||
// thread_.detach();
|
||||
}
|
||||
|
||||
void Processor::Deactivate() {
|
||||
void Processor::Deactivate(bool tree) {
|
||||
if (!activated_)
|
||||
return;
|
||||
if (tree) {
|
||||
// Deactivate all childs
|
||||
iterate_processors(GetChilds(), [](std::shared_ptr<Processor> proc) {
|
||||
proc->Deactivate();
|
||||
});
|
||||
}
|
||||
activated_ = false;
|
||||
{
|
||||
std::lock_guard<std::mutex> lk(mtx_input_ready_);
|
||||
|
|
|
@ -39,8 +39,8 @@ class Processor /*: public std::enable_shared_from_this<Processor>*/ {
|
|||
void SetPostProcessCallback(PostProcessCallback callback);
|
||||
void SetProcessCallback(ProcessCallback callback);
|
||||
|
||||
void Activate();
|
||||
void Deactivate();
|
||||
void Activate(bool tree = false);
|
||||
void Deactivate(bool tree = false);
|
||||
bool IsActivated();
|
||||
|
||||
bool IsIdle();
|
||||
|
@ -93,6 +93,15 @@ class Processor /*: public std::enable_shared_from_this<Processor>*/ {
|
|||
std::thread thread_;
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
void iterate_processors(
|
||||
const T &processors, std::function<void(std::shared_ptr<Processor>)> fn) {
|
||||
for (auto &&proc : processors) {
|
||||
fn(proc);
|
||||
iterate_processors(proc->GetChilds(), fn);
|
||||
}
|
||||
}
|
||||
|
||||
MYNTEYE_END_NAMESPACE
|
||||
|
||||
#endif // MYNTEYE_PROCESSOR_H_ NOLINT
|
||||
|
|
Loading…
Reference in New Issue
Block a user