Preload next and previous page if threading is enabled and not on low memory setting

BUGS: 132029

svn path=/branches/KDE/3.5/kdegraphics/kpdf/; revision=609253
remotes/origin/kpdf-3.5
Albert Astals Cid 20 years ago
parent 14608da1cf
commit 6ba8113c1d
  1. 5
      core/observer.h
  2. 21
      ui/presentationwidget.cpp

@ -24,10 +24,11 @@
/** PRIORITIES for requests. Globally defined here. **/
#define PAGEVIEW_PRIO 1
#define PAGEVIEW_PRELOAD_PRIO 3
#define PAGEVIEW_PRELOAD_PRIO 4
#define THUMBNAILS_PRIO 2
#define THUMBNAILS_PRELOAD_PRIO 4
#define THUMBNAILS_PRELOAD_PRIO 5
#define PRESENTATION_PRIO 0
#define PRESENTATION_PRELOAD_PRIO 3
class KPDFPage;

@ -448,6 +448,27 @@ void PresentationWidget::changePage( int newPage )
m_document->requestPixmaps( request );
// restore cursor
QApplication::restoreOverrideCursor();
// ask for next and previous page if not in low memory usage setting
if (KpdfSettings::memoryLevel() != KpdfSettings::EnumMemoryLevel::Low && KpdfSettings::enableThreading()) {
QValueList< PixmapRequest * > asyncRequests;
if (newPage + 1 < (int)m_document->pages())
{
PresentationFrame *nextFrame = m_frames[ newPage + 1 ];
pixW = nextFrame->geometry.width();
pixH = nextFrame->geometry.height();
if ( !nextFrame->page->hasPixmap( PRESENTATION_ID, pixW, pixH ) )
asyncRequests.push_back( new PixmapRequest( PRESENTATION_ID, newPage + 1, pixW, pixH, PRESENTATION_PRELOAD_PRIO, true ) );
}
if (newPage - 1 >= 0)
{
PresentationFrame *prevFrame = m_frames[ newPage - 1 ];
pixW = prevFrame->geometry.width();
pixH = prevFrame->geometry.height();
if ( !prevFrame->page->hasPixmap( PRESENTATION_ID, pixW, pixH ) )
asyncRequests.push_back( new PixmapRequest( PRESENTATION_ID, newPage - 1, pixW, pixH, PRESENTATION_PRELOAD_PRIO, true ) );
}
if (!asyncRequests.isEmpty()) m_document->requestPixmaps( asyncRequests );
}
}
else
{

Loading…
Cancel
Save