fix bypassing plugins with sidechain i/o
[ardour.git] / libs / ardour / audiofilesource.cc
index 45ec162f094ec6fcb8dac21af8497b67d77b7198..bb3c18f810470ed3b33853da73b2dece1d0ba686 100644 (file)
@@ -30,6 +30,7 @@
 #include <fcntl.h>
 #include <errno.h>
 
+#include "pbd/gstdio_compat.h"
 #include "pbd/convert.h"
 #include "pbd/basename.h"
 #include "pbd/file_utils.h"
@@ -42,7 +43,6 @@
 
 #include <sndfile.h>
 
-#include <glib/gstdio.h>
 #include <glibmm/miscutils.h>
 #include <glibmm/fileutils.h>
 #include <glibmm/threads.h>
@@ -68,8 +68,6 @@ using namespace ARDOUR;
 using namespace PBD;
 using namespace Glib;
 
-string AudioFileSource::peak_dir = "";
-
 PBD::Signal0<void> AudioFileSource::HeaderPositionOffsetChanged;
 framecnt_t         AudioFileSource::header_position_offset = 0;
 
@@ -164,9 +162,17 @@ AudioFileSource::init (const string& pathstr, bool must_exist)
 }
 
 string
-AudioFileSource::construct_peak_filepath (const string& audio_path) const
+AudioFileSource::construct_peak_filepath (const string& audio_path, const bool in_session, const bool old_peak_name) const
 {
-       return _session.construct_peak_filepath (audio_path);
+       string base;
+       if (old_peak_name) {
+               base = audio_path.substr (0, audio_path.find_last_of ('.'));
+       } else {
+               base = audio_path;
+       }
+       base += '%';
+       base += (char) ('A' + _channel);
+       return _session.construct_peak_filepath (base, in_session, old_peak_name);
 }
 
 bool
@@ -262,7 +268,7 @@ AudioFileSource::setup_peakfile ()
                return 0;
        }
        if (!(_flags & NoPeakFile)) {
-               return initialize_peakfile (_path);
+               return initialize_peakfile (_path, within_session());
        } else {
                return 0;
        }
@@ -337,4 +343,4 @@ AudioFileSource::get_interleave_buffer (framecnt_t size)
 
        return ssb->buf;
 }
-       
+