~mutse-young/ubuntu-docviewer-app/trunk

« back to all changes in this revision

Viewing changes to src/plugin/poppler-qml-plugin/pdfdocument.cpp

  • Committer: Tarmac
  • Author(s): Stefano Verzegnassi
  • Date: 2015-02-04 15:37:54 UTC
  • mfrom: (63.2.15 20-enable-zoom)
  • Revision ID: tarmac-20150204153754-1jrf9jzk34t9g3ho
Enable zoom in PDF view & multithreading support. Fixes: https://bugs.launchpad.net/bugs/1399978.

Approved by Ubuntu Phone Apps Jenkins Bot, Riccardo Padovani.

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
#include <QDebug>
26
26
#include <QQmlEngine>
27
27
#include <QQmlContext>
 
28
#include <QThread>
28
29
 
29
30
PdfDocument::PdfDocument(QAbstractListModel *parent):
30
31
    QAbstractListModel(parent)
31
32
  , m_path("")
 
33
  , m_providersNumber(-1)
32
34
{
33
35
    qRegisterMetaType<PdfPagesList>("PdfPagesList");
34
36
}
163
165
 
164
166
void PdfDocument::loadProvider()
165
167
{
166
 
    qDebug() << "Loading image provider...";
 
168
    // WORKAROUND: QQuickImageProvider should create multiple threads to load more images at the same time.
 
169
    // [QTBUG-37998] QQuickImageProvider can block its separate thread with ForceAsynchronousImageLoading
 
170
    // Link: https://bugreports.qt.io/browse/QTBUG-37988
 
171
    int newProvidersNumber = QThread::idealThreadCount();
 
172
    if (newProvidersNumber != m_providersNumber) {
 
173
        m_providersNumber = newProvidersNumber;
 
174
        Q_EMIT providersNumberChanged();
 
175
    }
 
176
 
 
177
    qDebug() << "Ideal number of image providers is:" << m_providersNumber;
 
178
 
 
179
    qDebug() << "Loading image provider(s)...";
167
180
    QQmlEngine *engine = QQmlEngine::contextForObject(this)->engine();
168
181
 
169
 
    engine->addImageProvider(QLatin1String("poppler"), new PdfImageProvider(m_document));
 
182
    for (int i=0; i<m_providersNumber; i++)
 
183
        engine->addImageProvider(QLatin1String("poppler" + QByteArray::number(i)), new PdfImageProvider(m_document));
170
184
 
171
 
    qDebug() << "Image provider loaded successfully !";
 
185
    qDebug() << "Image provider(s) loaded successfully !";
172
186
}
173
187
 
174
188
PdfDocument::~PdfDocument()