diff options
author | Adam Reichold <adam.reichold@t-online.de> | 2020-01-03 21:51:25 +0100 |
---|---|---|
committer | Albert Astals Cid <tsdgeos@yahoo.es> | 2020-01-04 22:13:25 +0000 |
commit | a8220105f964ee4102e4ee886df2d0b162b42ae6 (patch) | |
tree | 86d80a6e655e176e44bbe4719da871bfa42bcf46 | |
parent | 7daaa2925858ef1740ec38b25be7bf74c0aefa33 (diff) |
Reuse the GlobalParamsIniter in the qt5 frontend.
-rw-r--r-- | poppler/GlobalParams.cc | 12 | ||||
-rw-r--r-- | poppler/GlobalParams.h | 4 | ||||
-rw-r--r-- | qt5/src/poppler-document.cc | 3 | ||||
-rw-r--r-- | qt5/src/poppler-private.cc | 30 | ||||
-rw-r--r-- | 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<GooString*> *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<GlobalParams>(); - 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<OptContentModel> m_optContentModel; QColor paperColor; int m_hints; - static int count; - static QMutex mutex; }; class FontInfoData |