From a8220105f964ee4102e4ee886df2d0b162b42ae6 Mon Sep 17 00:00:00 2001 From: Adam Reichold Date: Fri, 3 Jan 2020 21:51:25 +0100 Subject: Reuse the GlobalParamsIniter in the qt5 frontend. --- poppler/GlobalParams.cc | 12 ++++++++++++ poppler/GlobalParams.h | 4 ++++ qt5/src/poppler-document.cc | 3 --- qt5/src/poppler-private.cc | 30 ++---------------------------- qt5/src/poppler-private.h | 12 ++++++------ 5 files changed, 24 insertions(+), 37 deletions(-) diff --git a/poppler/GlobalParams.cc b/poppler/GlobalParams.cc index d091ce4e..3c82bd48 100644 --- a/poppler/GlobalParams.cc +++ b/poppler/GlobalParams.cc @@ -414,6 +414,8 @@ GlobalParams::GlobalParams(const char *customPopplerDataDir) unicodeMapCache = new UnicodeMapCache(); cMapCache = new CMapCache(); + utf8Map = nullptr; + baseFontsInitialized = false; // set up the initial nameToUnicode tables @@ -1132,6 +1134,16 @@ std::string GlobalParams::getTextEncodingName() const { return textEncoding->toStr(); } +const UnicodeMap *GlobalParams::getUtf8Map() { + if (!utf8Map) { + GooString enc("UTF-8"); + utf8Map = globalParams->getUnicodeMap(&enc); + utf8Map->incRefCnt(); + } + + return utf8Map; +} + bool GlobalParams::getPrintCommands() { globalParamsLocker(); return printCommands; diff --git a/poppler/GlobalParams.h b/poppler/GlobalParams.h index 415cae4e..5ac536e2 100644 --- a/poppler/GlobalParams.h +++ b/poppler/GlobalParams.h @@ -139,6 +139,8 @@ public: CMap *getCMap(const GooString *collection, const GooString *cMapName, Stream *stream = nullptr); UnicodeMap *getTextEncoding(); + const UnicodeMap *getUtf8Map(); + std::vector *getEncodingNames(); //----- functions to set parameters @@ -208,6 +210,8 @@ private: CharCodeToUnicodeCache *unicodeToUnicodeCache; UnicodeMapCache *unicodeMapCache; CMapCache *cMapCache; + + UnicodeMap *utf8Map; mutable std::recursive_mutex mutex; mutable std::recursive_mutex unicodeMapCacheMutex; diff --git a/qt5/src/poppler-document.cc b/qt5/src/poppler-document.cc index ba9b86cd..658cba0f 100644 --- a/qt5/src/poppler-document.cc +++ b/qt5/src/poppler-document.cc @@ -57,9 +57,6 @@ namespace Poppler { - int DocumentData::count = 0; - QMutex DocumentData::mutex; - Document *Document::load(const QString &filePath, const QByteArray &ownerPassword, const QByteArray &userPassword) { diff --git a/qt5/src/poppler-private.cc b/qt5/src/poppler-private.cc index 3c9bf512..b1346ad1 100644 --- a/qt5/src/poppler-private.cc +++ b/qt5/src/poppler-private.cc @@ -54,15 +54,13 @@ namespace Debug { } - static UnicodeMap *utf8Map = nullptr; - void setDebugErrorFunction(PopplerDebugFunc function, const QVariant &closure) { Debug::debugFunction = function ? function : Debug::qDebugDebugFunction; Debug::debugClosure = closure; } - static void qt5ErrorFunction(void * /*data*/, ErrorCategory /*category*/, Goffset pos, const char *msg) + void qt5ErrorFunction(void * /*data*/, ErrorCategory /*category*/, Goffset pos, const char *msg) { QString emsg; @@ -79,12 +77,7 @@ namespace Debug { } QString unicodeToQString(const Unicode* u, int len) { - if (!utf8Map) - { - GooString enc("UTF-8"); - utf8Map = globalParams->getUnicodeMap(&enc); - utf8Map->incRefCnt(); - } + const UnicodeMap *utf8Map = globalParams->getUtf8Map(); // ignore the last character if it is 0x0 if ((len > 0) && (u[len - 1] == 0)) @@ -242,15 +235,6 @@ namespace Debug { qDeleteAll(m_embeddedFiles); delete (OptContentModel *)m_optContentModel; delete doc; - - QMutexLocker locker{&mutex}; - - count --; - if ( count == 0 ) - { - utf8Map = nullptr; - globalParams.reset(); - } } void DocumentData::init() @@ -259,16 +243,6 @@ namespace Debug { paperColor = Qt::white; m_hints = 0; m_optContentModel = nullptr; - - QMutexLocker locker{&mutex}; - - if ( count == 0 ) - { - utf8Map = nullptr; - globalParams = std::make_unique(); - setErrorCallback(qt5ErrorFunction, nullptr); - } - count ++; } diff --git a/qt5/src/poppler-private.h b/qt5/src/poppler-private.h index 28b5ca30..3fc7f7ec 100644 --- a/qt5/src/poppler-private.h +++ b/qt5/src/poppler-private.h @@ -75,7 +75,7 @@ namespace Poppler { GooString *QDateTimeToUnicodeGooString(const QDateTime &dt); - void qt5ErrorFunction(int pos, char *msg, va_list args); + void qt5ErrorFunction(void * /*data*/, ErrorCategory /*category*/, Goffset pos, const char *msg); Annot::AdditionalActionsType toPopplerAdditionalActionType(Annotation::AdditionalActionType type); @@ -93,9 +93,10 @@ namespace Poppler { bool externalDest; }; - class DocumentData { + class DocumentData : private GlobalParamsIniter { public: - DocumentData(const QString &filePath, GooString *ownerPassword, GooString *userPassword) + DocumentData(const QString &filePath, GooString *ownerPassword, GooString *userPassword) : + GlobalParamsIniter(qt5ErrorFunction, nullptr) { init(); m_filePath = filePath; @@ -111,7 +112,8 @@ namespace Poppler { delete userPassword; } - DocumentData(const QByteArray &data, GooString *ownerPassword, GooString *userPassword) + DocumentData(const QByteArray &data, GooString *ownerPassword, GooString *userPassword) : + GlobalParamsIniter(qt5ErrorFunction, nullptr) { fileContents = data; MemStream *str = new MemStream((char*)fileContents.data(), 0, fileContents.length(), Object(objNull)); @@ -158,8 +160,6 @@ namespace Poppler { QPointer m_optContentModel; QColor paperColor; int m_hints; - static int count; - static QMutex mutex; }; class FontInfoData -- cgit v1.2.3