70 ProcessorConnection(std::shared_ptr<Source> source, std::shared_ptr<Target> target, std::unique_ptr<ExecutionPolicy> execution_policy,
bool mute_until_target_execution_finished =
false)
71 : policy(
std::move(execution_policy))
74 auto handle = guard.handle();
75 if (mute_until_target_execution_finished) {
76 connection = source->signal.connect_extended([
this, handle, target](
const SignalConnection& conn,
const Args&... args) {
77 auto lock = handle.lock();
80 if (isSynchronousExecution) {
81 target->execute(args...);
84 policy->execute([target, skip_until_finished, args...]{
85 target->execute(args...);
92 connection = source->signal.connect([
this, handle, target](
const Args&... args) {
93 auto lock = handle.lock();
95 if (isSynchronousExecution) {
96 target->execute(args...);
99 policy->execute([target, args...]{
100 target->execute(args...);