summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn Rutledge <shawn.rutledge@theqtcompany.com>2014-12-16 10:38:06 +0100
committerShawn Rutledge <shawn.rutledge@theqtcompany.com>2014-12-16 11:01:30 +0100
commit472b2be477ff2d17c5904f19e43c21de4c55adc6 (patch)
tree116edb95a0dee246798e10032031ca2576905c62
parent188d4a072bdca8facad1b1e0670ed440050384ae (diff)
pdfviewer example: page cache has a page count limit
to limit memory usage
-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 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;