DummyBackend: fix midi event mux+sorting
[ardour.git] / libs / ardour / audiosource.cc
index 93a1c6ceb563582bdcaf39e1046f645d250efeb4..c08cea962b284d2d0265326015a8f6d36834afd2 100644 (file)
 
 */
 
-#include <sys/stat.h>
+#ifdef COMPILER_MSVC
+#include <sys/utime.h>
+#else
 #include <unistd.h>
+#include <utime.h>
+#endif
+#include <sys/stat.h>
 #include <fcntl.h>
 #include <float.h>
-#include <utime.h>
 #include <cerrno>
 #include <ctime>
 #include <cmath>
@@ -180,7 +184,7 @@ AudioSource::peaks_ready (boost::function<void()> doThisWhenReady, ScopedConnect
 void
 AudioSource::touch_peakfile ()
 {
-       struct stat statbuf;
+       GStatBuf statbuf;
 
        if (g_stat (peakpath.c_str(), &statbuf) != 0 || statbuf.st_size == 0) {
                return;
@@ -189,7 +193,7 @@ AudioSource::touch_peakfile ()
        struct utimbuf tbuf;
 
        tbuf.actime = statbuf.st_atime;
-       tbuf.modtime = time ((time_t) 0);
+       tbuf.modtime = time ((time_t*) 0);
 
        g_utime (peakpath.c_str(), &tbuf);
 }
@@ -202,7 +206,7 @@ AudioSource::rename_peakfile (string newpath)
        string oldpath = peakpath;
 
        if (Glib::file_test (oldpath, Glib::FILE_TEST_EXISTS)) {
-               if (rename (oldpath.c_str(), newpath.c_str()) != 0) {
+               if (g_rename (oldpath.c_str(), newpath.c_str()) != 0) {
                        error << string_compose (_("cannot rename peakfile for %1 from %2 to %3 (%4)"), _name, oldpath, newpath, strerror (errno)) << endmsg;
                        return -1;
                }
@@ -216,7 +220,7 @@ AudioSource::rename_peakfile (string newpath)
 int
 AudioSource::initialize_peakfile (string audio_path)
 {
-       struct stat statbuf;
+       GStatBuf statbuf;
 
        peakpath = peak_path (audio_path);
 
@@ -228,7 +232,7 @@ AudioSource::initialize_peakfile (string audio_path)
                peakpath = find_broken_peakfile (peakpath, audio_path);
        }
 
-       if (stat (peakpath.c_str(), &statbuf)) {
+       if (g_stat (peakpath.c_str(), &statbuf)) {
                if (errno != ENOENT) {
                        /* it exists in the peaks dir, but there is some kind of error */
 
@@ -299,7 +303,7 @@ framecnt_t
 AudioSource::write (Sample *dst, framecnt_t cnt)
 {
        Glib::Threads::Mutex::Lock lm (_lock);
-       /* any write makes the fill not removable */
+       /* any write makes the file not removable */
        _flags = Flag (_flags & ~Removable);
        return write_unlocked (dst, cnt);
 }
@@ -339,7 +343,7 @@ AudioSource::read_peaks_with_fpp (PeakData *peaks, framecnt_t npeaks, framepos_t
        /* fix for near-end-of-file conditions */
 
        if (cnt > _length - start) {
-               // cerr << "too close to end @ " << _length << " given " << start << " + " << cnt << endl;
+               // cerr << "too close to end @ " << _length << " given " << start << " + " << cnt << " (" << _length - start << ")" << endl;
                cnt = _length - start;
                framecnt_t old = npeaks;
                npeaks = min ((framecnt_t) floor (cnt / samples_per_visual_peak), npeaks);
@@ -505,6 +509,7 @@ AudioSource::read_peaks_with_fpp (PeakData *peaks, framecnt_t npeaks, framepos_t
                }
 
                if (zero_fill) {
+                       cerr << "Zero fill end of peaks (@ " << npeaks << " with " << zero_fill << endl;
                        memset (&peaks[npeaks], 0, sizeof (PeakData) * zero_fill);
                }
 
@@ -653,7 +658,7 @@ AudioSource::build_peaks_from_scratch ()
   out:
        if (ret) {
                DEBUG_TRACE (DEBUG::Peaks, string_compose("Could not write peak data, attempting to remove peakfile %1\n", peakpath));
-               unlink (peakpath.c_str());
+               ::g_unlink (peakpath.c_str());
        }
 
        return ret;