diff options
author | Shawn Rutledge <shawn.rutledge@theqtcompany.com> | 2014-12-16 10:38:06 +0100 |
---|---|---|
committer | Shawn Rutledge <shawn.rutledge@theqtcompany.com> | 2014-12-16 11:01:30 +0100 |
commit | 472b2be477ff2d17c5904f19e43c21de4c55adc6 (patch) | |
tree | 116edb95a0dee246798e10032031ca2576905c62 | |
parent | 188d4a072bdca8facad1b1e0670ed440050384ae (diff) |
pdfviewer example: page cache has a page count limit
to limit memory usage
-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 c85f784..c5ba650 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 2a3025d..d612e9a 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; |