diff options
author | Shawn Rutledge <shawn.rutledge@theqtcompany.com> | 2014-12-16 10:38:06 +0100 |
---|---|---|
committer | Michal Klocek <michal.klocek@qt.io> | 2019-11-25 12:01:39 +0100 |
commit | 598ad60d562832d9b3452ef3bc8fa4a4c84b47e4 (patch) | |
tree | 312bdab380d5b044006499bcc18f50569e0d3b1c /examples | |
parent | 44a4a350004de012510f9a82353b09b1b3c68884 (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.cpp | 4 | ||||
-rw-r--r-- | examples/widgets/pdfviewer/sequentialpagewidget.h | 2 |
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; |