Don't call update for each thumbnail loaded

This commit is contained in:
2022-04-18 09:56:45 +02:00
parent fabf3f0c1a
commit a1848b27bf
2 changed files with 14 additions and 8 deletions
+12 -8
View File
@@ -57,6 +57,10 @@ ImageWidget::ImageWidget(QWidget *parent) : QOpenGLWidget(parent)
m_superpixel = m_invert = false;
m_showThumbnails = false;
m_thumbnailCount = 0;
m_updateTimer = new QTimer(this);
m_updateTimer->setInterval(500);
m_updateTimer->setSingleShot(true);
connect(m_updateTimer, SIGNAL(timeout()), this, SLOT(update()));
setAcceptDrops(true);
}
@@ -190,7 +194,7 @@ void ImageWidget::thumbnailLoaded(const Image *image)
int sizes[3] = { std::max(1, a > 1.0f ? THUMB_SIZE : (int)(THUMB_SIZE * a)), std::max(1, a < 1.0f ? THUMB_SIZE : (int)(THUMB_SIZE / a)), image->number() };
m_bufferSizes->bind();
m_bufferSizes->write(image->number() * sizeof(sizes), sizes, sizeof(sizes));
update();
if(!m_updateTimer->isActive())m_updateTimer->start();
}
void ImageWidget::showThumbnail(bool enable)
@@ -218,7 +222,7 @@ void ImageWidget::paintGL()
f->glUniform3i(m_thumbnailProgram->uniformLocation("viewport_row"), width(), height(), width()/THUMB_SIZE_BORDER);
m_thumbnailProgram->setUniformValue("mtf_param", m_low, m_mid, m_high);
m_thumbnailProgram->setUniformValue("invert", m_invert);
m_thumbnailProgram->setUniformValue("offset", m_dx, m_dy);
m_thumbnailProgram->setUniformValue("offset", 0, m_dy);
f3->glVertexAttribDivisor(m_thumbnailProgram->attributeLocation("imageSize_num"), 1);
QMatrix4x4 mvp;
mvp.ortho(rect());
@@ -428,8 +432,8 @@ void ImageScrollAreaGL::setThumbnails(int count)
m_thumbCount = count;
if(m_thumbCount)
{
m_verticalScrollBar->setRange(0, (m_thumbCount / (m_imageWidget->width() / THUMB_SIZE_BORDER) + 1) * THUMB_SIZE_BORDER);
m_verticalScrollBar->setPageStep(THUMB_SIZE);
m_verticalScrollBar->setRange(0, m_thumbCount / (m_imageWidget->width() / THUMB_SIZE_BORDER) * THUMB_SIZE_BORDER);
m_verticalScrollBar->setPageStep(THUMB_SIZE_BORDER);
}
else
{
@@ -445,8 +449,8 @@ void ImageScrollAreaGL::updateScrollbars(bool zoom)
{
m_horizontalScrollBar->hide();
m_verticalScrollBar->show();
m_verticalScrollBar->setRange(0, (m_thumbCount / (m_imageWidget->width() / THUMB_SIZE_BORDER) + 1) * THUMB_SIZE_BORDER);
m_verticalScrollBar->setPageStep(128);
m_verticalScrollBar->setRange(0, m_thumbCount / (m_imageWidget->width() / THUMB_SIZE_BORDER) * THUMB_SIZE_BORDER);
m_verticalScrollBar->setPageStep(THUMB_SIZE_BORDER);
}
else
{
@@ -468,8 +472,8 @@ void ImageScrollAreaGL::resizeEvent(QResizeEvent *event)
QWidget::resizeEvent(event);
if(m_thumbCount)
{
m_verticalScrollBar->setRange(0, (m_thumbCount / (m_imageWidget->width() / THUMB_SIZE_BORDER) + 1) * THUMB_SIZE_BORDER);
m_verticalScrollBar->setPageStep(128);
m_verticalScrollBar->setRange(0, m_thumbCount / (m_imageWidget->width() / THUMB_SIZE_BORDER) * THUMB_SIZE_BORDER);
m_verticalScrollBar->setPageStep(THUMB_SIZE_BORDER);
}
else
{