summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Reichold <adam.reichold@t-online.de>2020-01-03 21:51:25 +0100
committerAlbert Astals Cid <tsdgeos@yahoo.es>2020-01-04 22:13:25 +0000
commita8220105f964ee4102e4ee886df2d0b162b42ae6 (patch)
tree86d80a6e655e176e44bbe4719da871bfa42bcf46
parent7daaa2925858ef1740ec38b25be7bf74c0aefa33 (diff)
Reuse the GlobalParamsIniter in the qt5 frontend.
-rw-r--r--poppler/GlobalParams.cc12
-rw-r--r--poppler/GlobalParams.h4
-rw-r--r--qt5/src/poppler-document.cc3
-rw-r--r--qt5/src/poppler-private.cc30
-rw-r--r--qt5/src/poppler-private.h12
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