diff --git a/core/pagecontroller.cpp b/core/pagecontroller.cpp index c9af42b30..1a2d477cb 100644 --- a/core/pagecontroller.cpp +++ b/core/pagecontroller.cpp @@ -24,9 +24,6 @@ using namespace Okular; PageController::PageController() : QObject() { - connect( ThreadWeaver::Weaver::instance(), - SIGNAL( jobDone(ThreadWeaver::Job*) ), - SLOT( imageRotationDone(ThreadWeaver::Job*) ) ); } PageController::~PageController() @@ -40,6 +37,7 @@ PageController * PageController::self() void PageController::addRotationJob(RotationJob *job) { + initWeaver(); ThreadWeaver::Weaver::instance()->enqueue(job); } @@ -60,4 +58,16 @@ void PageController::imageRotationDone(ThreadWeaver::Job *j) job->deleteLater(); } +void PageController::initWeaver() +{ + static bool weaverInited = false; + if ( weaverInited ) + return; + + connect( ThreadWeaver::Weaver::instance(), SIGNAL( jobDone(ThreadWeaver::Job*) ), + this, SLOT( imageRotationDone(ThreadWeaver::Job*) ) ); + + weaverInited = true; +} + #include "pagecontroller_p.moc" diff --git a/core/pagecontroller_p.h b/core/pagecontroller_p.h index e5683568a..c0530c66d 100644 --- a/core/pagecontroller_p.h +++ b/core/pagecontroller_p.h @@ -42,6 +42,9 @@ class PageController : public QObject private slots: void imageRotationDone(ThreadWeaver::Job*); + + private: + void initWeaver(); }; }