From 453f45e7f7989c7ea18ab2e7728e61ce7a5b8aac Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Fri, 20 Oct 2017 12:00:30 +0200 Subject: [PATCH] Start the text generation request via a queued connection Summary: so that pixmap generation gets a chance to start before the text generation This makes that on files where both the text generation and the pixmap generation are slow at least we see something "as fast as possible" since only either text generation or pixmap generation threads run at the same time Reviewers: #okular, mlaurent Reviewed By: mlaurent Subscribers: michaelweghorn, dvratil, mlaurent, #okular Tags: #okular Differential Revision: https://phabricator.kde.org/D8378 --- core/generator.cpp | 3 ++- core/generator_p.h | 9 +++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/core/generator.cpp b/core/generator.cpp index 004197d43..f2862b140 100644 --- a/core/generator.cpp +++ b/core/generator.cpp @@ -252,7 +252,8 @@ void Generator::generatePixmap( PixmapRequest *request ) */ if ( hasFeature( TextExtraction ) && !request->page()->hasTextPage() && canGenerateTextPage() && !d->m_closing ) { d->mTextPageReady = false; - d->textPageGenerationThread()->startGeneration( request->page() ); + // Queue the text generation request so that pixmap generation gets a chance to start before the text generation + QMetaObject::invokeMethod(d->textPageGenerationThread(), "startGeneration", Qt::QueuedConnection, Q_ARG(Okular::Page*, request->page())); } return; diff --git a/core/generator_p.h b/core/generator_p.h index 060bc135d..6457e7be1 100644 --- a/core/generator_p.h +++ b/core/generator_p.h @@ -19,6 +19,8 @@ class QEventLoop; class QMutex; +#include "page.h" + namespace Okular { class DocumentObserver; @@ -124,14 +126,15 @@ class TextPageGenerationThread : public QThread public: TextPageGenerationThread( Generator *generator ); - void startGeneration( Page *page ); - void endGeneration(); Page *page() const; TextPage* textPage() const; + public slots: + void startGeneration( Okular::Page *page ); + protected: void run() override; @@ -166,4 +169,6 @@ class FontExtractionThread : public QThread } +Q_DECLARE_METATYPE(Okular::Page*) + #endif