summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorShawn Rutledge <shawn.rutledge@theqtcompany.com>2014-12-16 10:38:06 +0100
committerMichal Klocek <michal.klocek@qt.io>2019-11-25 12:01:39 +0100
commit598ad60d562832d9b3452ef3bc8fa4a4c84b47e4 (patch)
tree312bdab380d5b044006499bcc18f50569e0d3b1c /examples
parent44a4a350004de012510f9a82353b09b1b3c68884 (diff)
pdfviewer example: page cache has a page count limit
to limit memory usage
Diffstat (limited to 'examples')
-rw-r--r--examples/widgets/pdfviewer/sequentialpagewidget.cpp4
-rw-r--r--examples/widgets/pdfviewer/sequentialpagewidget.h2
2 files changed, 6 insertions, 0 deletions
diff --git a/examples/widgets/pdfviewer/sequentialpagewidget.cpp b/examples/widgets/pdfviewer/sequentialpagewidget.cpp
index c85f784c8..c5ba65071 100644
--- a/examples/widgets/pdfviewer/sequentialpagewidget.cpp
+++ b/examples/widgets/pdfviewer/sequentialpagewidget.cpp
@@ -12,6 +12,7 @@ Q_DECLARE_LOGGING_CATEGORY(lcExample)
SequentialPageWidget::SequentialPageWidget(QWidget *parent)
: QWidget(parent)
+ , m_pageCacheLimit(20)
, m_pageRenderer(new PageRenderer())
, m_background(Qt::darkGray)
, m_placeholderIcon(":icons/images/busy.png")
@@ -69,7 +70,10 @@ void SequentialPageWidget::invalidate()
void SequentialPageWidget::pageLoaded(int page, qreal zoom, QImage image)
{
Q_UNUSED(zoom)
+ if (m_cachedPagesLRU.length() > m_pageCacheLimit)
+ m_pageCache.remove(m_cachedPagesLRU.takeFirst());
m_pageCache.insert(page, image);
+ m_cachedPagesLRU.append(page);
update();
}
diff --git a/examples/widgets/pdfviewer/sequentialpagewidget.h b/examples/widgets/pdfviewer/sequentialpagewidget.h
index 2a3025d29..d612e9a7a 100644
--- a/examples/widgets/pdfviewer/sequentialpagewidget.h
+++ b/examples/widgets/pdfviewer/sequentialpagewidget.h
@@ -38,6 +38,8 @@ private:
private:
QHash<int, QImage> m_pageCache;
+ QList<int> m_cachedPagesLRU;
+ int m_pageCacheLimit;
QVector<QSizeF> m_pageSizes;
PageRenderer *m_pageRenderer;
QBrush m_background;