From d989579d62e6b1b37996383f4e36c6a9677c6c4e Mon Sep 17 00:00:00 2001 From: Mike Walters Date: Thu, 3 Mar 2016 23:54:59 +0000 Subject: [PATCH] spectrogram: Fix caching/tileIDs --- spectrogramplot.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/spectrogramplot.cpp b/spectrogramplot.cpp index 41f5585..9c9031b 100644 --- a/spectrogramplot.cpp +++ b/spectrogramplot.cpp @@ -105,9 +105,15 @@ void SpectrogramPlot::paintMid(QPainter &painter, QRect &rect, range_t sa if (!inputSource || inputSource->count() == 0) return; + off_t sampleOffset = sampleRange.minimum % getStride(); + off_t tileID = sampleRange.minimum - sampleOffset; + int xoffset = sampleOffset / fftSize; for (int x = rect.left(); x < rect.right(); x += linesPerTile()) { - QPixmap *tile = getPixmapTile(sampleRange.minimum + x * getStride()); - painter.drawPixmap(QRect(x, rect.y(), linesPerTile(), fftSize), *tile); + QPixmap *tile = getPixmapTile(tileID); + // TODO: don't draw past rect.right() + painter.drawPixmap(QRect(x, rect.y(), linesPerTile() - xoffset, fftSize), *tile, QRect(xoffset, 0, linesPerTile() - xoffset, fftSize)); + xoffset = 0; + tileID += getStride() * linesPerTile(); } }