fix crash when copy'ing latent plugins
[ardour.git] / libs / ardour / element_importer.cc
index 0312f0ef15dc5478743921c762bbd9a0848f9499..7bd7d0104f70b9e6bb208e44c54a9c9676261220 100644 (file)
 
 */
 
-#include <ardour/element_importer.h>
+#include "ardour/element_importer.h"
 
 #include <sstream>
 #include <iomanip>
 
-#include <pbd/convert.h>
-#include <ardour/session.h>
+#include "pbd/convert.h"
+#include "ardour/session.h"
 
-#include "i18n.h"
+#include "pbd/i18n.h"
 
+using namespace std;
 using namespace PBD;
 using namespace ARDOUR;
 
-sigc::signal <std::pair<bool, string>, string, string> ElementImporter::Rename;
-sigc::signal <bool, string> ElementImporter::Prompt;
+Signal2<std::pair<bool, string>,string, string> ElementImporter::Rename;
+Signal1 <bool,string> ElementImporter::Prompt;
 
-ElementImporter::ElementImporter (XMLTree const & source, ARDOUR::Session & session) : 
+ElementImporter::ElementImporter (XMLTree const & source, ARDOUR::Session & session) :
   source (source),
   session(session),
-  queued (false),
+  _queued (false),
   _broken (false)
 {
        // Get samplerate
-       XMLProperty *prop;
+       XMLProperty const * prop;
        prop = source.root()->property ("sample-rate");
        if (prop) {
                std::istringstream iss (prop->value());
@@ -49,8 +50,36 @@ ElementImporter::ElementImporter (XMLTree const & source, ARDOUR::Session & sess
        }
 }
 
+ElementImporter::~ElementImporter ()
+{
+}
+
+void
+ElementImporter::move ()
+{
+       if (!_queued) { return; }
+       _move ();
+}
+
+bool
+ElementImporter::prepare_move ()
+{
+       if (_queued) {
+               return true;
+       }
+       _queued = _prepare_move ();
+       return _queued;
+}
+
+void
+ElementImporter::cancel_move ()
+{
+       if (!_queued) { return; }
+       _cancel_move ();
+}
+
 string
-ElementImporter::smpte_to_string(SMPTE::Time & time) const
+ElementImporter::timecode_to_string(Timecode::Time & time) const
 {
        std::ostringstream oss;
        oss << std::setfill('0') << std::right <<
@@ -62,19 +91,19 @@ ElementImporter::smpte_to_string(SMPTE::Time & time) const
          time.seconds << ":" <<
          std::setw(2) <<
          time.frames;
-       
+
        return oss.str();
 }
 
-nframes_t
-ElementImporter::rate_convert_samples (nframes_t samples) const
+framecnt_t
+ElementImporter::rate_convert_samples (framecnt_t samples) const
 {
        if (sample_rate == session.frame_rate()) {
                return samples;
        }
-       
+
        // +0.5 for proper rounding
-       return static_cast<nframes_t> (samples * (static_cast<double> (session.nominal_frame_rate()) / sample_rate) + 0.5);
+       return static_cast<framecnt_t> (samples * (static_cast<double> (session.nominal_frame_rate()) / sample_rate) + 0.5);
 }
 
 string