, _modifier_state (0)
, _ipmidi_base (MIDI::IPMIDIPort::lowest_ipmidi_port_default)
, needs_ipmidi_restart (false)
+ , _metering_active (true)
{
DEBUG_TRACE (DEBUG::MackieControl, "MackieControlProtocol::MackieControlProtocol\n");
MackieControlProtocol::~MackieControlProtocol()
{
DEBUG_TRACE (DEBUG::MackieControl, "MackieControlProtocol::~MackieControlProtocol\n");
-
+
drop_connections ();
tear_down_gui ();
{
boost::shared_ptr<Surface> surface = surfaces.front();
- if (!surface->type() == mcu) {
+ if (surface->type() != mcu) {
return;
}
return retval;
}
-
-/////////////////////////////////////////////////
-// handlers for Route signals
-// TODO should these be part of RouteSignal?
-// They started off as signal/slot handlers for signals
-// from Route, but they're also used in polling for automation
-/////////////////////////////////////////////////
-
-// TODO handle plugin automation polling
string
MackieControlProtocol::format_bbt_timecode (framepos_t now_frame)
{
os << setw(3) << setfill('0') << bbt_time.bars;
os << setw(2) << setfill('0') << bbt_time.beats;
- os << setw(2) << setfill('0') << bbt_time.ticks / 1000;
+ os << ' ';
+ os << setw(1) << setfill('0') << bbt_time.ticks / 1000;
os << setw(3) << setfill('0') << bbt_time.ticks % 1000;
return os.str();
// digits: 888/88/88/888
// Timecode mode: Hours/Minutes/Seconds/Frames
ostringstream os;
- os << setw(3) << setfill('0') << timecode.hours;
+ os << ' ';
+ os << setw(2) << setfill('0') << timecode.hours;
os << setw(2) << setfill('0') << timecode.minutes;
os << setw(2) << setfill('0') << timecode.seconds;
- os << setw(3) << setfill('0') << timecode.frames;
+ os << ' ';
+ os << setw(2) << setfill('0') << timecode.frames;
return os.str();
}
boost::shared_ptr<Surface> surface = surfaces.front();
- if (surface->type() != mcu || !_device_info.has_timecode_display()) {
+ if (surface->type() != mcu || !_device_info.has_timecode_display() || !surface->active ()) {
return;
}
update_global_button (Button::Rewind, session->transport_speed() < 0.0);
update_global_button (Button::Ffwd, session->transport_speed() > 1.0);
+ notify_metering_state_changed ();
+
_transport_previously_rolling = session->transport_rolling();
}
+void
+MackieControlProtocol::notify_metering_state_changed()
+{
+ for (Surfaces::iterator s = surfaces.begin(); s != surfaces.end(); ++s) {
+ (*s)->notify_metering_state_changed ();
+ }
+}
+
void
MackieControlProtocol::notify_record_state_changed ()
{