Only make record button solid red (and big clock red) when things are actually being recorded (ie when record is in progress and one or more tracks are armed). As per mantis #2604.
git-svn-id: svn://localhost/ardour2/branches/3.0@5012 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
9e776feac6
commit
e41527d5ba
@ -1957,23 +1957,20 @@ ARDOUR_UI::transport_rec_enable_blink (bool onoff)
|
||||
if (session == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
Session::RecordState const r = session->record_status ();
|
||||
bool const h = session->have_rec_enabled_diskstream ();
|
||||
|
||||
switch (session->record_status()) {
|
||||
case Session::Enabled:
|
||||
if (r == Session::Enabled || (r == Session::Recording && !h)) {
|
||||
if (onoff) {
|
||||
rec_button.set_visual_state (2);
|
||||
} else {
|
||||
rec_button.set_visual_state (0);
|
||||
}
|
||||
break;
|
||||
|
||||
case Session::Recording:
|
||||
} else if (r == Session::Recording && h) {
|
||||
rec_button.set_visual_state (1);
|
||||
break;
|
||||
|
||||
default:
|
||||
} else {
|
||||
rec_button.set_visual_state (0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -3175,13 +3172,13 @@ ARDOUR_UI::record_state_changed ()
|
||||
return;
|
||||
}
|
||||
|
||||
switch (session->record_status()) {
|
||||
case Session::Recording:
|
||||
Session::RecordState const r = session->record_status ();
|
||||
bool const h = session->have_rec_enabled_diskstream ();
|
||||
|
||||
if (r == Session::Recording && h) {
|
||||
big_clock.set_widget_name ("BigClockRecording");
|
||||
break;
|
||||
default:
|
||||
} else {
|
||||
big_clock.set_widget_name ("BigClockNonRecording");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -292,6 +292,7 @@ class Session : public PBD::StatefulDestructible, public boost::noncopyable
|
||||
void add_diskstream (boost::shared_ptr<Diskstream>);
|
||||
boost::shared_ptr<Diskstream> diskstream_by_id (const PBD::ID& id);
|
||||
boost::shared_ptr<Diskstream> diskstream_by_name (string name);
|
||||
bool have_rec_enabled_diskstream () const;
|
||||
|
||||
bool have_captured() const { return _have_captured; }
|
||||
|
||||
@ -1742,6 +1743,9 @@ class Session : public PBD::StatefulDestructible, public boost::noncopyable
|
||||
SessionMetadata * _metadata;
|
||||
|
||||
mutable bool have_looped; ///< Used in ::audible_frame(*)
|
||||
|
||||
void update_have_rec_enabled_diskstream ();
|
||||
gint _have_rec_enabled_diskstream;
|
||||
};
|
||||
|
||||
} // namespace ARDOUR
|
||||
|
@ -140,7 +140,8 @@ Session::Session (AudioEngine &eng,
|
||||
click_data (0),
|
||||
click_emphasis_data (0),
|
||||
main_outs (0),
|
||||
_metadata (new SessionMetadata())
|
||||
_metadata (new SessionMetadata()),
|
||||
_have_rec_enabled_diskstream (false)
|
||||
|
||||
{
|
||||
bool new_session;
|
||||
@ -223,7 +224,8 @@ Session::Session (AudioEngine &eng,
|
||||
click_data (0),
|
||||
click_emphasis_data (0),
|
||||
main_outs (0),
|
||||
_metadata (new SessionMetadata())
|
||||
_metadata (new SessionMetadata()),
|
||||
_have_rec_enabled_diskstream (false)
|
||||
{
|
||||
bool new_session;
|
||||
|
||||
@ -2141,6 +2143,8 @@ Session::add_diskstream (boost::shared_ptr<Diskstream> dstream)
|
||||
/* this will connect to future changes, and check the current length */
|
||||
diskstream_playlist_changed (dstream);
|
||||
|
||||
dstream->RecordEnableChanged.connect (mem_fun (*this, &Session::update_have_rec_enabled_diskstream));
|
||||
|
||||
dstream->prepare ();
|
||||
|
||||
}
|
||||
@ -4325,3 +4329,28 @@ Session::sync_order_keys (const char* base)
|
||||
}
|
||||
|
||||
|
||||
/** @return true if there is at least one record-enabled diskstream, otherwise false */
|
||||
bool
|
||||
Session::have_rec_enabled_diskstream () const
|
||||
{
|
||||
return g_atomic_int_get (&_have_rec_enabled_diskstream) == 1;
|
||||
}
|
||||
|
||||
/** Update the state of our rec-enabled diskstreams flag */
|
||||
void
|
||||
Session::update_have_rec_enabled_diskstream ()
|
||||
{
|
||||
boost::shared_ptr<DiskstreamList> dsl = diskstreams.reader ();
|
||||
DiskstreamList::iterator i = dsl->begin ();
|
||||
while (i != dsl->end () && (*i)->record_enabled () == false) {
|
||||
++i;
|
||||
}
|
||||
|
||||
int const old = g_atomic_int_get (&_have_rec_enabled_diskstream);
|
||||
|
||||
g_atomic_int_set (&_have_rec_enabled_diskstream, i != dsl->end () ? 1 : 0);
|
||||
|
||||
if (g_atomic_int_get (&_have_rec_enabled_diskstream) != old) {
|
||||
RecordStateChanged (); /* EMIT SIGNAL */
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user