From 0510fc149e0c6b955ee9b93917e72ee378369197 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Thu, 18 Oct 2012 16:27:35 -0700 Subject: Make QtDBus work again with D-Bus 1.0 and 1.1 The dbus_get_version function was introduced in 1.2, so we'd need to detect pre-1.2 by the absence of the function. But if we're going to detect the presence or absence of any function, we might as well do it on dbus_connection_can_send_type, which is the function we wanted anyway. Change-Id: I6e17a3a8f1382c6a489490084f6e3f61aa5a1947 Reviewed-by: Giuseppe D'Angelo --- src/dbus/qdbusintegrator.cpp | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'src/dbus/qdbusintegrator.cpp') diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp index 3fb72e34d9..2b3ee901a5 100644 --- a/src/dbus/qdbusintegrator.cpp +++ b/src/dbus/qdbusintegrator.cpp @@ -1687,24 +1687,23 @@ void QDBusConnectionPrivate::setPeer(DBusConnection *c, const QDBusErrorInternal static QDBusConnection::ConnectionCapabilities connectionCapabilies(DBusConnection *connection) { QDBusConnection::ConnectionCapabilities result = 0; + typedef dbus_bool_t (*can_send_type_t)(DBusConnection *, int); + static can_send_type_t can_send_type = 0; -#if defined(QT_LINKED_LIBDBUS) && DBUS_VERSION < 0x010400 - // no capabilities are possible +#if defined(QT_LINKED_LIBDBUS) +# if DBUS_VERSION-0 >= 0x010400 + can_send_type = dbus_connection_can_send_type; +# endif #else -# if !defined(QT_LINKED_LIBDBUS) // run-time check if the next functions are available - int major, minor, micro; - q_dbus_get_version(&major, &minor, µ); - if (major == 1 && minor < 4) - return result; -# endif + can_send_type = (can_send_type_t)qdbus_resolve_conditionally("dbus_connection_can_send_type"); +#endif #ifndef DBUS_TYPE_UNIX_FD # define DBUS_TYPE_UNIX_FD int('h') #endif - if (q_dbus_connection_can_send_type(connection, DBUS_TYPE_UNIX_FD)) + if (can_send_type && can_send_type(connection, DBUS_TYPE_UNIX_FD)) result |= QDBusConnection::UnixFileDescriptorPassing; -#endif return result; } -- cgit v1.2.3