rec-light patch from jim duchek (thanks!)
[ardour.git] / libs / surfaces / tranzport / tranzport_control_protocol.cc
index ee8fa95bc262d51f904a47d4d62435feb5719ebd..f0936290da170e9f8665bcf63f40654ce77dee02 100644 (file)
@@ -320,7 +320,7 @@ TranzportControlProtocol::show_meter ()
 void
 TranzportControlProtocol::show_transport_time ()
 {
-       jack_nframes_t where = session->transport_frame();
+       nframes_t where = session->transport_frame();
        
        if (where != last_where) {
 
@@ -579,7 +579,7 @@ TranzportControlProtocol::monitor_work ()
        
        if ((err = pthread_setschedparam (pthread_self(), SCHED_FIFO, &rtparam)) != 0) {
                // do we care? not particularly.
-               info << string_compose (_("%1: thread not running with realtime scheduling (%2)"), name(), strerror (errno)) << endmsg;
+               PBD::info << string_compose (_("%1: thread not running with realtime scheduling (%2)"), name(), strerror (errno)) << endmsg;
        } 
 
        pthread_setcancelstate (PTHREAD_CANCEL_ENABLE, 0);
@@ -693,7 +693,7 @@ TranzportControlProtocol::update_state ()
        /* per track */
 
        if (route_table[0]) {
-               AudioTrack* at = dynamic_cast<AudioTrack*> (route_table[0]);
+               boost::shared_ptr<AudioTrack> at = boost::dynamic_pointer_cast<AudioTrack> (route_table[0]);
                if (at && at->record_enabled()) {
                        pending_lights[LightTrackrec] = true;
                } else {
@@ -718,13 +718,13 @@ TranzportControlProtocol::update_state ()
 
        /* global */
 
-       if (session->get_auto_loop()) {
+       if (Config->get_auto_loop()) {
                pending_lights[LightLoop] = true;
        } else {
                pending_lights[LightLoop] = false;
        }
 
-       if (session->get_punch_in() || session->get_punch_out()) {
+       if (Config->get_punch_in() || Config->get_punch_out()) {
                pending_lights[LightPunch] = true;
        } else {
                pending_lights[LightPunch] = false;
@@ -760,6 +760,14 @@ TranzportControlProtocol::update_state ()
                }
        }
 
+       if (pending_lights[LightTrackrec] != lights[LightTrackrec]) {
+               if (pending_lights[LightTrackrec]) {
+                       light_on (LightTrackrec);
+               } else {
+                       light_off (LightTrackrec);
+               }
+       }
+
        if (pending_lights[LightTrackmute] != lights[LightTrackmute]) {
                if (pending_lights[LightTrackmute]) {
                        light_on (LightTrackmute);
@@ -1574,3 +1582,16 @@ TranzportControlProtocol::print (int row, int col, const char *text)
        }
 }      
 
+XMLNode&
+TranzportControlProtocol::get_state () 
+{
+       XMLNode* node = new XMLNode (X_("Protocol"));
+       node->add_property (X_("name"), _name);
+       return *node;
+}
+
+int
+TranzportControlProtocol::set_state (const XMLNode& node)
+{
+       return 0;
+}