fixes for various bugs including dangling ref to route in session, opening sessions...
[ardour.git] / libs / ardour / audiofilter.cc
index 3e9c36ddd2bf6c95c4aaf544253a71d447d8056f..a7117cf9dc1646ad87f61408dc3f2a35f8d8d7b1 100644 (file)
@@ -27,6 +27,7 @@
 #include <ardour/audioregion.h>
 #include <ardour/audiofilter.h>
 #include <ardour/region_factory.h>
+#include <ardour/source_factory.h>
 
 #include "i18n.h"
 
@@ -49,10 +50,7 @@ AudioFilter::make_new_sources (boost::shared_ptr<AudioRegion> region, SourceList
                }
 
                try {
-                       nsrcs.push_back (new SndFileSource (path, 
-                                                           Config->get_native_file_data_format(),
-                                                           Config->get_native_file_header_format(),
-                                                           session.frame_rate()));
+                       nsrcs.push_back (boost::dynamic_pointer_cast<AudioSource> (SourceFactory::createWritable (session, path, false, session.frame_rate())));
                } 
 
                catch (failed_constructor& err) {
@@ -78,7 +76,7 @@ AudioFilter::finish (boost::shared_ptr<AudioRegion> region, SourceList& nsrcs)
        now = localtime (&xnow);
 
        for (SourceList::iterator si = nsrcs.begin(); si != nsrcs.end(); ++si) {
-               AudioFileSource* afs = dynamic_cast<AudioFileSource*>(*si);
+               boost::shared_ptr<AudioFileSource> afs = boost::dynamic_pointer_cast<AudioFileSource>(*si);
                if (afs) {
                        afs->update_header (region->position(), *now, xnow);
                }