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 <giuseppe.dangelo@kdab.com>
This commit is contained in:
parent
221bd941ff
commit
0510fc149e
@ -297,10 +297,6 @@ DEFINEFUNC(void , dbus_message_unref, (DBusMessage *message),
|
||||
(message), )
|
||||
|
||||
/* dbus-misc.h */
|
||||
DEFINEFUNC(void , dbus_get_version , (int *major_version_p,
|
||||
int *minor_version_p,
|
||||
int *micro_version_p),
|
||||
(major_version_p, minor_version_p, micro_version_p), )
|
||||
DEFINEFUNC(char* , dbus_get_local_machine_id , (void), (), return)
|
||||
|
||||
|
||||
@ -363,14 +359,6 @@ DEFINEFUNC(void , dbus_server_unref, (DBusServer *server),
|
||||
/* dbus-thread.h */
|
||||
DEFINEFUNC(dbus_bool_t , dbus_threads_init_default, (), (), return)
|
||||
|
||||
|
||||
/* D-Bus 1.4 symbols */
|
||||
#if !defined(QT_LINKED_LIBDBUS) || (DBUS_VERSION >= 0x010400)
|
||||
DEFINEFUNC(dbus_bool_t , dbus_connection_can_send_type , (DBusConnection *connection,
|
||||
int type),
|
||||
(connection, type), return)
|
||||
#endif
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QT_NO_DBUS
|
||||
|
@ -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
|
||||
#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;
|
||||
#if defined(QT_LINKED_LIBDBUS)
|
||||
# if DBUS_VERSION-0 >= 0x010400
|
||||
can_send_type = dbus_connection_can_send_type;
|
||||
# endif
|
||||
#else
|
||||
// run-time check if the next functions are available
|
||||
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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user