diff options
Diffstat (limited to 'src/plugins/platforms/android')
3 files changed, 20 insertions, 23 deletions
diff --git a/src/plugins/platforms/android/androidjnimain.cpp b/src/plugins/platforms/android/androidjnimain.cpp index 19ab051162..cd40b7eec2 100644 --- a/src/plugins/platforms/android/androidjnimain.cpp +++ b/src/plugins/platforms/android/androidjnimain.cpp @@ -443,6 +443,11 @@ static void *startMainMethod(void */*data*/) if (m_applicationClass) QJNIObjectPrivate::callStaticMethod<void>(m_applicationClass, "quitApp", "()V"); + // All attached threads should be detached before returning from this function. + JavaVM *vm = QtAndroidPrivate::javaVM(); + if (vm != 0) + vm->DetachCurrentThread(); + return 0; } diff --git a/src/plugins/platforms/android/qandroidplatformfontdatabase.cpp b/src/plugins/platforms/android/qandroidplatformfontdatabase.cpp index 9b60ab291c..be1a3d7bdf 100644 --- a/src/plugins/platforms/android/qandroidplatformfontdatabase.cpp +++ b/src/plugins/platforms/android/qandroidplatformfontdatabase.cpp @@ -45,26 +45,20 @@ QString QAndroidPlatformFontDatabase::fontDir() const void QAndroidPlatformFontDatabase::populateFontDatabase() { QString fontpath = fontDir(); + QDir dir(fontpath); - if (!QFile::exists(fontpath)) { + if (!dir.exists()) { qFatal("QFontDatabase: Cannot find font directory %s - is Qt installed correctly?", qPrintable(fontpath)); } - QDir dir(fontpath); - QList<QFileInfo> entries = dir.entryInfoList(QStringList() << QStringLiteral("*.ttf") << QStringLiteral("*.otf"), QDir::Files); - for (int i = 0; i < int(entries.count()); ++i) { - const QByteArray file = QFile::encodeName(entries.at(i).absoluteFilePath()); - QSupportedWritingSystems supportedWritingSystems; - QStringList families = addTTFile(QByteArray(), file, &supportedWritingSystems); + QStringList nameFilters; + nameFilters << QLatin1String("*.ttf") + << QLatin1String("*.otf"); - extern int qt_script_for_writing_system(QFontDatabase::WritingSystem writingSystem); - for (int i = 0; i < QFontDatabase::WritingSystemsCount; ++i) { - if (i == QFontDatabase::Any || supportedWritingSystems.supported(QFontDatabase::WritingSystem(i))) { - QChar::Script script = QChar::Script(qt_script_for_writing_system(QFontDatabase::WritingSystem(i))); - m_fallbacks[script] += families; - } - } + foreach (const QFileInfo &fi, dir.entryInfoList(nameFilters, QDir::Files)) { + const QByteArray file = QFile::encodeName(fi.absoluteFilePath()); + QBasicFontDatabase::addTTFile(QByteArray(), file); } } @@ -73,15 +67,16 @@ QStringList QAndroidPlatformFontDatabase::fallbacksForFamily(const QString &fami QFont::StyleHint styleHint, QChar::Script script) const { - Q_UNUSED(family); - Q_UNUSED(style); - + QStringList result; if (styleHint == QFont::Monospace || styleHint == QFont::Courier) - return QString(qgetenv("QT_ANDROID_FONTS_MONOSPACE")).split(";") + m_fallbacks[script]; + result.append(QString(qgetenv("QT_ANDROID_FONTS_MONOSPACE")).split(";")); else if (styleHint == QFont::Serif) - return QString(qgetenv("QT_ANDROID_FONTS_SERIF")).split(";") + m_fallbacks[script]; + result.append(QString(qgetenv("QT_ANDROID_FONTS_SERIF")).split(";")); + else + result.append(QString(qgetenv("QT_ANDROID_FONTS")).split(";")); + result.append(QPlatformFontDatabase::fallbacksForFamily(family, style, styleHint, script)); - return QString(qgetenv("QT_ANDROID_FONTS")).split(";") + m_fallbacks[script]; + return result; } QT_END_NAMESPACE diff --git a/src/plugins/platforms/android/qandroidplatformfontdatabase.h b/src/plugins/platforms/android/qandroidplatformfontdatabase.h index 45de47a58c..89a9ed8bc0 100644 --- a/src/plugins/platforms/android/qandroidplatformfontdatabase.h +++ b/src/plugins/platforms/android/qandroidplatformfontdatabase.h @@ -47,9 +47,6 @@ public: QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const; - -private: - QHash<QChar::Script, QStringList> m_fallbacks; }; QT_END_NAMESPACE |