summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/dbus/qdbus_symbols.cpp25
1 files changed, 20 insertions, 5 deletions
diff --git a/src/dbus/qdbus_symbols.cpp b/src/dbus/qdbus_symbols.cpp
index 8c642c8887..e475a23f48 100644
--- a/src/dbus/qdbus_symbols.cpp
+++ b/src/dbus/qdbus_symbols.cpp
@@ -84,14 +84,29 @@ bool qdbus_loadLibDBus()
triedToLoadLibrary = true;
static int majorversions[] = { 3, 2, -1 };
+ const QString baseNames[] = {
+#ifdef Q_OS_WIN
+ QStringLiteral("dbus-1"),
+#endif
+ QStringLiteral("libdbus-1")
+ };
+
lib->unload();
- lib->setFileName(QLatin1String("dbus-1"));
for (uint i = 0; i < sizeof(majorversions) / sizeof(majorversions[0]); ++i) {
- lib->setFileNameAndVersion(lib->fileName(), majorversions[i]);
- if (lib->load() && lib->resolve("dbus_connection_open_private"))
- return true;
+ for (uint j = 0; j < sizeof(baseNames) / sizeof(baseNames[0]); ++j) {
+#ifdef Q_OS_WIN
+ QString suffix;
+ if (majorversions[i] != -1)
+ suffix = QString::number(- majorversions[i]); // negative so it prepends the dash
+ lib->setFileName(baseNames[j] + suffix);
+#else
+ lib->setFileNameAndVersion(baseNames[j], majorversions[i]);
+#endif
+ if (lib->load() && lib->resolve("dbus_connection_open_private"))
+ return true;
- lib->unload();
+ lib->unload();
+ }
}
delete lib;