X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fsource_factory.cc;h=8be55a8986559064890584d3b7412f451b2af920;hb=96b4a85fed3a7d6aafa2957d7fa359c5dfd08cc0;hp=834014bd1f9874d712b3f57fa9a17d4072393d56;hpb=cf52d6e4b40111eb04b244ec054055a4ec15dbe0;p=ardour.git diff --git a/libs/ardour/source_factory.cc b/libs/ardour/source_factory.cc index 834014bd1f..8be55a8986 100644 --- a/libs/ardour/source_factory.cc +++ b/libs/ardour/source_factory.cc @@ -134,7 +134,7 @@ SourceFactory::setup_peakfile (boost::shared_ptr s, bool async) } boost::shared_ptr -SourceFactory::createSilent (Session& s, const XMLNode& node, framecnt_t nframes, float sr) +SourceFactory::createSilent (Session& s, const XMLNode& node, samplecnt_t nframes, float sr) { Source* src = new SilentFileSource (s, node, nframes, sr); #ifdef BOOST_SP_ENABLE_DEBUG_HOOKS @@ -220,15 +220,18 @@ SourceFactory::create (Session& s, const XMLNode& node, bool defer_peaks) } } } else if (type == DataType::MIDI) { - boost::shared_ptr src (new SMFSource (s, node)); - Source::Lock lock(src->mutex()); - src->load_model (lock, true); + try { + boost::shared_ptr src (new SMFSource (s, node)); + Source::Lock lock(src->mutex()); + src->load_model (lock, true); #ifdef BOOST_SP_ENABLE_DEBUG_HOOKS - // boost_debug_shared_ptr_mark_interesting (src, "Source"); + // boost_debug_shared_ptr_mark_interesting (src, "Source"); #endif - src->check_for_analysis_data_on_disk (); - SourceCreated (src); - return src; + src->check_for_analysis_data_on_disk (); + SourceCreated (src); + return src; + } catch (...) { + } } return boost::shared_ptr(); @@ -289,18 +292,21 @@ SourceFactory::createExternal (DataType type, Session& s, const string& path, } else if (type == DataType::MIDI) { - boost::shared_ptr src (new SMFSource (s, path)); - Source::Lock lock(src->mutex()); - src->load_model (lock, true); + try { + boost::shared_ptr src (new SMFSource (s, path)); + Source::Lock lock(src->mutex()); + src->load_model (lock, true); #ifdef BOOST_SP_ENABLE_DEBUG_HOOKS - // boost_debug_shared_ptr_mark_interesting (src, "Source"); + // boost_debug_shared_ptr_mark_interesting (src, "Source"); #endif - if (announce) { - SourceCreated (src); - } + if (announce) { + SourceCreated (src); + } - return src; + return src; + } catch (...) { + } } @@ -309,7 +315,7 @@ SourceFactory::createExternal (DataType type, Session& s, const string& path, boost::shared_ptr SourceFactory::createWritable (DataType type, Session& s, const std::string& path, - bool destructive, framecnt_t rate, bool announce, bool defer_peaks) + bool destructive, samplecnt_t rate, bool announce, bool defer_peaks) { /* this might throw failed_constructor(), which is OK */ @@ -339,22 +345,27 @@ SourceFactory::createWritable (DataType type, Session& s, const std::string& pat } else if (type == DataType::MIDI) { // XXX writable flags should belong to MidiSource too - boost::shared_ptr src (new SMFSource (s, path, SndFileSource::default_writable_flags)); - assert (src->writable ()); + try { + boost::shared_ptr src (new SMFSource (s, path, SndFileSource::default_writable_flags)); + + assert (src->writable ()); - Source::Lock lock(src->mutex()); - src->load_model (lock, true); + Source::Lock lock(src->mutex()); + src->load_model (lock, true); #ifdef BOOST_SP_ENABLE_DEBUG_HOOKS - // boost_debug_shared_ptr_mark_interesting (src, "Source"); + // boost_debug_shared_ptr_mark_interesting (src, "Source"); #endif - // no analysis data - this is a new file + // no analysis data - this is a new file - if (announce) { - SourceCreated (src); - } - return src; + if (announce) { + SourceCreated (src); + } + + return src; + } catch (...) { + } } return boost::shared_ptr (); @@ -395,7 +406,7 @@ SourceFactory::createForRecovery (DataType type, Session& s, const std::string& boost::shared_ptr SourceFactory::createFromPlaylist (DataType type, Session& s, boost::shared_ptr p, const PBD::ID& orig, const std::string& name, - uint32_t chn, frameoffset_t start, framecnt_t len, bool copy, bool defer_peaks) + uint32_t chn, sampleoffset_t start, samplecnt_t len, bool copy, bool defer_peaks) { if (type == DataType::AUDIO) { try { @@ -455,4 +466,3 @@ SourceFactory::createFromPlaylist (DataType type, Session& s, boost::shared_ptr< return boost::shared_ptr(); } -