diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/dbus/qdbus_symbols.cpp | 25 |
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; |