add API for controlling and determining active status of a SceneChange

This commit is contained in:
Paul Davis 2014-12-03 09:15:10 -05:00
parent 16a03ef349
commit 12e228bedb
3 changed files with 23 additions and 0 deletions

View file

@ -40,12 +40,17 @@ class SceneChange : public PBD::Stateful
void set_color (uint32_t);
bool color_out_of_bounds() const { return _color == out_of_bound_color; }
static const uint32_t out_of_bound_color;
bool active () const { return _active; }
void set_active (bool);
PBD::Signal0<void> ColorChanged;
PBD::Signal0<void> ActiveChanged;
protected:
/* derived classes are responsible for serializing & deserializing this value */
uint32_t _color;
bool _active;
};

View file

@ -95,6 +95,10 @@ MIDISceneChanger::gather (const Locations::LocationList& locations)
void
MIDISceneChanger::rt_deliver (MidiBuffer& mbuf, framepos_t when, boost::shared_ptr<MIDISceneChange> msc)
{
if (!msc->active()) {
return;
}
uint8_t buf[4];
size_t cnt;
@ -120,6 +124,10 @@ MIDISceneChanger::rt_deliver (MidiBuffer& mbuf, framepos_t when, boost::shared_p
void
MIDISceneChanger::non_rt_deliver (boost::shared_ptr<MIDISceneChange> msc)
{
if (!msc->active()) {
return;
}
uint8_t buf[4];
size_t cnt;
boost::shared_ptr<AsyncMIDIPort> aport = boost::dynamic_pointer_cast<AsyncMIDIPort>(output_port);

View file

@ -41,6 +41,7 @@ SceneChange::factory (const XMLNode& node, int version)
SceneChange::SceneChange ()
: _color (out_of_bound_color)
, _active (true)
{
}
@ -56,3 +57,12 @@ SceneChange::color() const
{
return _color;
}
void
SceneChange::set_active (bool yn)
{
if (_active != yn) {
_active = yn;
ActiveChanged (); /* EMIT SIGNAL */
}
}