summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhaslersn <sebastian.hasler@gmx.net>2020-06-07 17:22:59 +0200
committerAdam Szmigin <smidge@xsco.net>2020-10-25 22:18:02 +0000
commit03ef26faf63cf4072017317696e161f62dd4eeeb (patch)
treebc1e77f58585bd3d13ed48750af37462c3aff23b
parent03aa22a1b62d39ea945ece037f317837afecc5ba (diff)
Fix a bug where "Beat data grid has unsorted indices"
(cherry picked from commit 3864e1ec0cb61b81b20ebe4f41939b41ddbe8598)
-rw-r--r--src/library/export/engineprimeexportjob.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/library/export/engineprimeexportjob.cpp b/src/library/export/engineprimeexportjob.cpp
index d7dbd329f0..f6a69766e9 100644
--- a/src/library/export/engineprimeexportjob.cpp
+++ b/src/library/export/engineprimeexportjob.cpp
@@ -175,11 +175,16 @@ void exportMetadata(djinterop::database& db,
// correctly assign an index for the last beat.
double lastBeatPlayPos = beats->findPrevBeat(sampleCount * 2);
int numBeats = beats->numBeatsInRange(firstBarAlignedBeatPlayPos, lastBeatPlayPos);
- std::vector<djinterop::beatgrid_marker> beatgrid{
- {0, firstBarAlignedBeatPlayPos / 2}, {numBeats, lastBeatPlayPos / 2}};
- beatgrid = el::normalize_beatgrid(std::move(beatgrid), sampleCount);
- externalTrack.set_default_beatgrid(beatgrid);
- externalTrack.set_adjusted_beatgrid(beatgrid);
+ if (numBeats > 0) {
+ std::vector<djinterop::beatgrid_marker> beatgrid{
+ {0, firstBarAlignedBeatPlayPos / 2}, {numBeats, lastBeatPlayPos / 2}};
+ beatgrid = el::normalize_beatgrid(std::move(beatgrid), sampleCount);
+ externalTrack.set_default_beatgrid(beatgrid);
+ externalTrack.set_adjusted_beatgrid(beatgrid);
+ } else {
+ qWarning() << "Non-positive number of beats in beat data of track" << pTrack->getId()
+ << "(" << pTrack->getFileInfo().fileName() << ")";
+ }
} else {
qInfo() << "No beats data found for track" << pTrack->getId()
<< "(" << pTrack->getFileInfo().fileName() << ")";