Don't call update for each thumbnail loaded
This commit is contained in:
+12
-8
@@ -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
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user