more vst parameter related stuff
[ardour.git] / libs / ardour / source_factory.cc
index 5ff2a6f4e4363cfa6ff0ccbd2a31d46c865143be..da5980599d989f3530224de70d47b10ba4e967ef 100644 (file)
 #include "ardour/source_factory.h"
 #include "ardour/sndfilesource.h"
 #include "ardour/silentfilesource.h"
-#include "ardour/rc_configuration.h"
 #include "ardour/smf_source.h"
 #include "ardour/session.h"
 
 #ifdef  HAVE_COREAUDIO
-#define USE_COREAUDIO_FOR_FILES
-#endif
-
-#ifdef USE_COREAUDIO_FOR_FILES
 #include "ardour/coreaudiosource.h"
 #endif
 
@@ -55,8 +50,8 @@ using namespace std;
 using namespace PBD;
 
 PBD::Signal1<void,boost::shared_ptr<Source> > SourceFactory::SourceCreated;
-Glib::Cond* SourceFactory::PeaksToBuild;
-Glib::StaticMutex SourceFactory::peak_building_lock = GLIBMM_STATIC_MUTEX_INIT;
+Glib::Threads::Cond SourceFactory::PeaksToBuild;
+Glib::Threads::Mutex SourceFactory::peak_building_lock;
 std::list<boost::weak_ptr<AudioSource> > SourceFactory::files_with_peaks;
 
 static void
@@ -70,7 +65,7 @@ peak_thread_work ()
 
          wait:
                if (SourceFactory::files_with_peaks.empty()) {
-                       SourceFactory::PeaksToBuild->wait (SourceFactory::peak_building_lock);
+                       SourceFactory::PeaksToBuild.wait (SourceFactory::peak_building_lock);
                }
 
                if (SourceFactory::files_with_peaks.empty()) {
@@ -92,10 +87,8 @@ peak_thread_work ()
 void
 SourceFactory::init ()
 {
-       PeaksToBuild = new Glib::Cond();
-
        for (int n = 0; n < 2; ++n) {
-               Glib::Thread::create (sigc::ptr_fun (::peak_thread_work), false);
+               Glib::Threads::Thread::create (sigc::ptr_fun (::peak_thread_work));
        }
 }
 
@@ -108,9 +101,9 @@ SourceFactory::setup_peakfile (boost::shared_ptr<Source> s, bool async)
 
                if (async) {
 
-                       Glib::Mutex::Lock lm (peak_building_lock);
+                       Glib::Threads::Mutex::Lock lm (peak_building_lock);
                        files_with_peaks.push_back (boost::weak_ptr<AudioSource> (as));
-                       PeaksToBuild->broadcast ();
+                       PeaksToBuild.broadcast ();
 
                } else {
 
@@ -155,19 +148,20 @@ SourceFactory::create (Session& s, const XMLNode& node, bool defer_peaks)
 
                        try {
                                boost::shared_ptr<AudioPlaylistSource> ap (new AudioPlaylistSource (s, node));
-
+                               
                                if (setup_peakfile (ap, true)) {
                                        return boost::shared_ptr<Source>();
                                }
 
                                ap->check_for_analysis_data_on_disk ();
+
                                SourceCreated (ap);
                                return ap;
 
                        } catch (failed_constructor&) {
                                /* oh well, so much for that then ... */
                        }
-                       
+
                } else {
 
 
@@ -186,21 +180,21 @@ SourceFactory::create (Session& s, const XMLNode& node, bool defer_peaks)
                        }
 
                        catch (failed_constructor& err) {
-                               
-#ifdef USE_COREAUDIO_FOR_FILES
-                               
+
+#ifdef HAVE_COREAUDIO
+
                                /* this is allowed to throw */
-                               
+
                                Source *src = new CoreAudioSource (s, node);
 #ifdef BOOST_SP_ENABLE_DEBUG_HOOKS
                                // boost_debug_shared_ptr_mark_interesting (src, "Source");
 #endif
                                boost::shared_ptr<Source> ret (src);
-                               
+
                                if (setup_peakfile (ret, defer_peaks)) {
                                        return boost::shared_ptr<Source>();
                                }
-                               
+
                                ret->check_for_analysis_data_on_disk ();
                                SourceCreated (ret);
                                return ret;
@@ -238,7 +232,7 @@ SourceFactory::createReadable (DataType type, Session& s, const string& path,
                                // boost_debug_shared_ptr_mark_interesting (src, "Source");
 #endif
                                boost::shared_ptr<Source> ret (src);
-                               
+
                                if (setup_peakfile (ret, defer_peaks)) {
                                        return boost::shared_ptr<Source>();
                                }
@@ -251,7 +245,7 @@ SourceFactory::createReadable (DataType type, Session& s, const string& path,
                        }
 
                        catch (failed_constructor& err) {
-#ifdef USE_COREAUDIO_FOR_FILES
+#ifdef HAVE_COREAUDIO
 
                                Source* src = new CoreAudioSource (s, path, chn, flags);
 #ifdef BOOST_SP_ENABLE_DEBUG_HOOKS
@@ -277,7 +271,7 @@ SourceFactory::createReadable (DataType type, Session& s, const string& path,
                }
 
        } else if (type == DataType::MIDI) {
-               
+
                SMFSource* src = new SMFSource (s, path, SMFSource::Flag(0));
                src->load_model (true, true);
 #ifdef BOOST_SP_ENABLE_DEBUG_HOOKS
@@ -330,7 +324,7 @@ SourceFactory::createWritable (DataType type, Session& s, const std::string& pat
                 // XXX writable flags should belong to MidiSource too
                boost::shared_ptr<SMFSource> src (new SMFSource (s, path, SndFileSource::default_writable_flags));
                assert (src->writable ());
-               
+
                src->load_model (true, true);
 #ifdef BOOST_SP_ENABLE_DEBUG_HOOKS
                // boost_debug_shared_ptr_mark_interesting (src, "Source");
@@ -349,28 +343,28 @@ SourceFactory::createWritable (DataType type, Session& s, const std::string& pat
 }
 
 boost::shared_ptr<Source>
-SourceFactory::createFromPlaylist (DataType type, Session& s, boost::shared_ptr<Playlist> p, const ID& orig, const std::string& name,
+SourceFactory::createFromPlaylist (DataType type, Session& s, boost::shared_ptr<Playlist> p, const PBD::ID& orig, const std::string& name,
                                   uint32_t chn, frameoffset_t start, framecnt_t len, bool copy, bool defer_peaks)
 {
        if (type == DataType::AUDIO) {
                try {
 
                        boost::shared_ptr<AudioPlaylist> ap = boost::dynamic_pointer_cast<AudioPlaylist>(p);
-                       
+
                        if (ap) {
-                               
+
                                if (copy) {
                                        ap.reset (new AudioPlaylist (ap, start, len, name, true));
                                        start = 0;
                                }
-                               
+
                                Source* src = new AudioPlaylistSource (s, orig, name, ap, chn, start, len, Source::Flag (0));
                                boost::shared_ptr<Source> ret (src);
-                               
+
                                if (setup_peakfile (ret, defer_peaks)) {
                                        return boost::shared_ptr<Source>();
                                }
-                               
+
                                ret->check_for_analysis_data_on_disk ();
                                SourceCreated (ret);
                                return ret;
@@ -382,21 +376,21 @@ SourceFactory::createFromPlaylist (DataType type, Session& s, boost::shared_ptr<
                }
 
        } else if (type == DataType::MIDI) {
-               
+
                try {
 
                        boost::shared_ptr<MidiPlaylist> ap = boost::dynamic_pointer_cast<MidiPlaylist>(p);
-                       
+
                        if (ap) {
-                               
+
                                if (copy) {
                                        ap.reset (new MidiPlaylist (ap, start, len, name, true));
                                        start = 0;
                                }
-                               
+
                                Source* src = new MidiPlaylistSource (s, orig, name, ap, chn, start, len, Source::Flag (0));
                                boost::shared_ptr<Source> ret (src);
-                               
+
                                SourceCreated (ret);
                                return ret;
                        }