Add Signal5.
git-svn-id: svn://localhost/ardour2/branches/3.0@10134 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
1f1abd0646
commit
fa590d385b
@ -323,6 +323,58 @@ private:
|
||||
SignalType _signal;
|
||||
};
|
||||
|
||||
template<typename R, typename A1, typename A2, typename A3, typename A4, typename A5>
|
||||
class Signal5 {
|
||||
public:
|
||||
Signal5 () {}
|
||||
typedef boost::signals2::signal<R(A1,A2,A3,A4,A5)> SignalType;
|
||||
|
||||
void connect_same_thread (ScopedConnectionList& clist,
|
||||
const typename SignalType::slot_function_type& slot) {
|
||||
clist.add_connection (_signal.connect (slot));
|
||||
}
|
||||
|
||||
void connect_same_thread (ScopedConnection& c,
|
||||
const typename SignalType::slot_function_type& slot) {
|
||||
c = _signal.connect (slot);
|
||||
}
|
||||
|
||||
static void compositor (typename boost::function<void(A1,A2,A3,A4,A5)> f, PBD::EventLoop* event_loop,
|
||||
EventLoop::InvalidationRecord* ir,
|
||||
A1 arg1, A2 arg2, A3 arg3, A4 arg4, A5 arg5) {
|
||||
event_loop->call_slot (ir, boost::bind (f, arg1, arg2, arg3, arg4, arg5));
|
||||
}
|
||||
|
||||
void connect (ScopedConnectionList& clist,
|
||||
PBD::EventLoop::InvalidationRecord* ir,
|
||||
const typename SignalType::slot_function_type& slot,
|
||||
PBD::EventLoop* event_loop) {
|
||||
if (ir) {
|
||||
ir->event_loop = event_loop;
|
||||
}
|
||||
clist.add_connection (_signal.connect (boost::bind (&compositor, slot, event_loop, ir, _1, _2, _3, _4, _5)));
|
||||
}
|
||||
|
||||
void connect (ScopedConnection& c,
|
||||
PBD::EventLoop::InvalidationRecord* ir,
|
||||
const typename SignalType::slot_function_type& slot,
|
||||
PBD::EventLoop* event_loop) {
|
||||
if (ir) {
|
||||
ir->event_loop = event_loop;
|
||||
}
|
||||
c = _signal.connect (_signal.connect (boost::bind (&compositor, slot, event_loop, ir, _1, _2, _3, _4, _5)));
|
||||
}
|
||||
|
||||
typename SignalType::result_type operator()(A1 arg1, A2 arg2, A3 arg3, A4 arg4, A5 arg5) {
|
||||
return _signal (arg1, arg2, arg3, arg4, arg5);
|
||||
}
|
||||
|
||||
bool empty() const { return _signal.empty(); }
|
||||
|
||||
private:
|
||||
SignalType _signal;
|
||||
};
|
||||
|
||||
} /* namespace */
|
||||
|
||||
#endif /* __pbd_signals_h__ */
|
||||
|
Loading…
Reference in New Issue
Block a user