}
m_image_replayers.clear();
+ m_image_replayers_stopped = true;
+ if (m_group_replayers_stopped) {
+ std::swap(on_finish, m_on_shut_down);
+ }
}
- if (--m_shutdown_counter == 0 ) {
- std::swap(on_finish, m_on_shut_down);
+ if (on_finish) {
on_finish->complete(r);
}
}
}
m_group_replayers.clear();
+ m_group_replayers_stopped = true;
+ if (m_image_replayers_stopped) {
+ std::swap(on_finish, m_on_shut_down);
+ }
}
- if (--m_shutdown_counter == 0) {
- std::swap(on_finish, m_on_shut_down);
+ if (on_finish) {
on_finish->complete(r);
}
}
Context *m_image_state_check_task = nullptr;
Context *m_group_state_check_task = nullptr;
Context *m_on_shut_down = nullptr;
- std::atomic<int> m_shutdown_counter{2};
+ bool m_image_replayers_stopped = false;
+ bool m_group_replayers_stopped = false;
bool m_manual_stop = false;
bool m_blocklisted = false;