Use XMLNode::get/set_property API in ExportFormatSpecification
[ardour.git] / libs / ardour / session_state.cc
index 0c2fa4207378600340aa68269168f4b253f820fa..e8db05dc6bd149bb371229406d36c415cebdbc6e 100644 (file)
@@ -233,7 +233,7 @@ Session::post_engine_init ()
        msc->set_input_port (boost::dynamic_pointer_cast<MidiPort>(scene_input_port()));
        msc->set_output_port (boost::dynamic_pointer_cast<MidiPort>(scene_output_port()));
 
-       boost::function<framecnt_t(void)> timer_func (boost::bind (&Session::audible_frame, this));
+       boost::function<framecnt_t(void)> timer_func (boost::bind (&Session::audible_frame, this, (bool*)(0)));
        boost::dynamic_pointer_cast<AsyncMIDIPort>(scene_input_port())->set_timer (timer_func);
 
        setup_midi_machine_control ();
@@ -1274,12 +1274,9 @@ Session::state (bool full_state)
                        XMLNode* ca = node->add_child (X_("CompoundAssociations"));
 
                        for (RegionFactory::CompoundAssociations::iterator i = cassocs.begin(); i != cassocs.end(); ++i) {
-                               char buf[64];
                                XMLNode* can = new XMLNode (X_("CompoundAssociation"));
-                               i->first->id().print (buf, sizeof (buf));
-                               can->add_property (X_("copy"), buf);
-                               i->second->id().print (buf, sizeof (buf));
-                               can->add_property (X_("original"), buf);
+                               can->add_property (X_("copy"), i->first->id().to_s());
+                               can->add_property (X_("original"), i->second->id().to_s());
                                ca->add_child_nocopy (*can);
                        }
                }
@@ -3534,19 +3531,18 @@ Session::cleanup_trash_sources (CleanupReport& rep)
 void
 Session::set_dirty ()
 {
-       /* never mark session dirty during loading */
+       /* return early if there's nothing to do */
+       if (dirty ()) {
+               return;
+       }
 
+       /* never mark session dirty during loading */
        if (_state_of_the_state & Loading) {
                return;
        }
 
-       bool was_dirty = dirty();
-
        _state_of_the_state = StateOfTheState (_state_of_the_state | Dirty);
-
-       if (!was_dirty) {
-               DirtyChanged(); /* EMIT SIGNAL */
-       }
+       DirtyChanged(); /* EMIT SIGNAL */
 }
 
 void
@@ -4050,6 +4046,10 @@ Session::config_changed (std::string p, bool ours)
                        _clicking = false;
                }
 
+       } else if (p == "click-record-only") {
+
+                       _click_rec_only = Config->get_click_record_only();
+
        } else if (p == "click-gain") {
 
                if (_click_gain) {