diff options
-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; |