summaryrefslogtreecommitdiffstats
path: root/src/platformsupport/fontdatabases
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@qt.io>2017-08-02 22:49:38 +0200
committerOswald Buddenhagen <oswald.buddenhagen@qt.io>2017-08-02 22:52:32 +0200
commitee07b912a1768ea0b103544f9eeac41f3cf50cf6 (patch)
tree15bfa7e4a9c098511c1fc89e2b2c240520b85e2d /src/platformsupport/fontdatabases
parent4bfff6a98b59b32605d881a463ad3edc221a7dc8 (diff)
parenta96656a8fb6a3c1fc7765659efff28f807fd0deb (diff)
Merge remote-tracking branch 'origin/5.9' into dev
Conflicts: src/plugins/platforms/xcb/qxcbconnection.h src/plugins/platforms/xcb/qxcbconnection_xi2.cpp src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp src/plugins/styles/mac/qmacstyle_mac.mm src/widgets/widgets/qdockarealayout.cpp src/widgets/widgets/qmainwindow.cpp src/widgets/widgets/qmainwindowlayout.cpp src/widgets/widgets/qmainwindowlayout_p.h tests/auto/corelib/tools/qlocale/tst_qlocale.cpp tests/auto/other/macnativeevents/BLACKLIST tests/auto/widgets/widgets/qmenu/BLACKLIST Change-Id: Ic8e724b80a65e7b1af25511b0e674d209265e567
Diffstat (limited to 'src/platformsupport/fontdatabases')
-rw-r--r--src/platformsupport/fontdatabases/windows/qwindowsfontengine.cpp24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/platformsupport/fontdatabases/windows/qwindowsfontengine.cpp b/src/platformsupport/fontdatabases/windows/qwindowsfontengine.cpp
index 4be2182188..a337332b53 100644
--- a/src/platformsupport/fontdatabases/windows/qwindowsfontengine.cpp
+++ b/src/platformsupport/fontdatabases/windows/qwindowsfontengine.cpp
@@ -56,6 +56,7 @@
#include <QtCore/QtEndian>
#include <QtCore/QFile>
#include <QtCore/qmath.h>
+#include <QtCore/QTextStream>
#include <QtCore/QThreadStorage>
#include <QtCore/private/qsystemlibrary_p.h>
#include <QtCore/private/qstringiterator_p.h>
@@ -66,6 +67,7 @@
#if !defined(QT_NO_DIRECTWRITE)
# include <dwrite.h>
+# include <comdef.h>
#endif
QT_BEGIN_NAMESPACE
@@ -1214,6 +1216,22 @@ QWindowsMultiFontEngine::QWindowsMultiFontEngine(QFontEngine *fe, int script)
{
}
+#ifndef QT_NO_DIRECTWRITE
+static QString msgDirectWriteFunctionFailed(HRESULT hr, const char *function,
+ const QString &fam, const QString &substitute)
+{
+ _com_error error(hr);
+ QString result;
+ QTextStream str(&result);
+ str << function << " failed for \"" << fam << '"';
+ if (substitute != fam)
+ str << " (substitute: \"" << substitute << "\")";
+ str << ": error " << hex << showbase << ulong(hr) << ' ' << noshowbase << dec
+ << ": " << QString::fromWCharArray(error.ErrorMessage());
+ return result;
+}
+#endif // !QT_NO_DIRECTWRITE
+
QFontEngine *QWindowsMultiFontEngine::loadEngine(int at)
{
QFontEngine *fontEngine = engine(0);
@@ -1252,7 +1270,8 @@ QFontEngine *QWindowsMultiFontEngine::loadEngine(int at)
IDWriteFont *directWriteFont = 0;
HRESULT hr = data->directWriteGdiInterop->CreateFontFromLOGFONT(&lf, &directWriteFont);
if (FAILED(hr)) {
- qErrnoWarning("%s: CreateFontFromLOGFONT failed", __FUNCTION__);
+ qWarning("%s: %s", __FUNCTION__,
+ qPrintable(msgDirectWriteFunctionFailed(hr, "CreateFontFromLOGFONT", fam, nameSubstitute)));
} else {
Q_ASSERT(directWriteFont);
IDWriteFontFace *directWriteFontFace = NULL;
@@ -1270,7 +1289,8 @@ QFontEngine *QWindowsMultiFontEngine::loadEngine(int at)
fedw->fontDef.stretch = fontEngine->fontDef.stretch;
return fedw;
} else {
- qErrnoWarning("%s: CreateFontFace failed", __FUNCTION__);
+ qWarning("%s: %s", __FUNCTION__,
+ qPrintable(msgDirectWriteFunctionFailed(hr, "CreateFontFace", fam, nameSubstitute)));
}
}
}