add_definitions(
-DQT_BUILD_DBUS_LIB
- -UQT_LINKED_LIBDBUS
-DDBUS_API_SUBJECT_TO_CHANGE
)
set(EXTRA_DBUS_LIBS KtCore KtXml ${DBUS_LIBRARIES})
${CMAKE_CURRENT_SOURCE_DIR}/qdbuscontext.cpp
${CMAKE_CURRENT_SOURCE_DIR}/qdbuspendingcall.cpp
${CMAKE_CURRENT_SOURCE_DIR}/qdbuspendingreply.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/qdbus_symbols.cpp
${CMAKE_CURRENT_SOURCE_DIR}/qdbusservicewatcher.cpp
${CMAKE_CURRENT_SOURCE_DIR}/qdbusunixfiledescriptor.cpp
${CMAKE_CURRENT_SOURCE_DIR}/qdbusvirtualobject.cpp
+++ /dev/null
-/****************************************************************************
-**
-** Copyright (C) 2015 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the QtDBus module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see http://www.qt.io/terms-conditions. For further
-** information use the contact form at http://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** As a special exception, The Qt Company gives you certain additional
-** rights. These rights are described in The Qt Company LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtCore/qglobal.h>
-#include <QtCore/qlibrary.h>
-#include <QtCore/qmutex.h>
-#include <qmutexpool_p.h>
-
-#ifndef QT_NO_DBUS
-
-QT_BEGIN_NAMESPACE
-
-void *qdbus_resolve_me(const char *name);
-
-#if !defined QT_LINKED_LIBDBUS
-
-static QLibrary *qdbus_libdbus = 0;
-
-void qdbus_unloadLibDBus()
-{
- delete qdbus_libdbus;
- qdbus_libdbus = 0;
-}
-
-bool qdbus_loadLibDBus()
-{
- static volatile bool triedToLoadLibrary = false;
-#ifndef QT_NO_THREAD
- QMutexLocker locker(QMutexPool::globalInstanceGet((void *)&qdbus_resolve_me));
-#endif
- QLibrary *&lib = qdbus_libdbus;
- if (triedToLoadLibrary)
- return lib && lib->isLoaded();
-
- lib = new QLibrary;
- triedToLoadLibrary = true;
-
- static int majorversions[] = { 3, 2, -1 };
- lib->unload();
- lib->setFileName(QLatin1String("dbus-1"));
- lib->setLoadHints(QLibrary::ImprovedSearchHeuristics);
- 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;
-
- lib->unload();
- }
-
- delete lib;
- lib = 0;
- return false;
-}
-
-void *qdbus_resolve_conditionally(const char *name)
-{
- if (qdbus_loadLibDBus())
- return qdbus_libdbus->resolve(name);
- return 0;
-}
-
-void *qdbus_resolve_me(const char *name)
-{
- void *ptr = 0;
- if (!qdbus_loadLibDBus())
- qFatal("Cannot find libdbus-1 in your system to resolve symbol '%s'.", name);
-
- ptr = qdbus_libdbus->resolve(name);
- if (!ptr)
- qFatal("Cannot resolve '%s' in your libdbus-1.", name);
-
- return ptr;
-}
-
-Q_DESTRUCTOR_FUNCTION(qdbus_unloadLibDBus)
-
-#endif // QT_LINKED_LIBDBUS
-
-QT_END_NAMESPACE
-
-#endif // QT_NO_DBUS
QT_BEGIN_NAMESPACE
-#if !defined QT_LINKED_LIBDBUS
-
-void *qdbus_resolve_conditionally(const char *name); // doesn't print a warning
-void *qdbus_resolve_me(const char *name); // prints a warning
-bool qdbus_loadLibDBus();
-
-# define DEFINEFUNC(ret, func, args, argcall, funcret) \
- typedef ret (* _q_PTR_##func) args; \
- static inline ret q_##func args \
- { \
- static _q_PTR_##func ptr; \
- if (!ptr) \
- ptr = (_q_PTR_##func) qdbus_resolve_me(#func); \
- funcret ptr argcall; \
- }
-
-#else // defined QT_LINKED_LIBDBUS
-
-inline bool qdbus_loadLibDBus() { return true; }
-
-# define DEFINEFUNC(ret, func, args, argcall, funcret) \
+#define DEFINEFUNC(ret, func, args, argcall, funcret) \
static inline ret q_##func args { funcret func argcall; }
-#endif // defined QT_LINKED_LIBDBUS
-
/* dbus-bus.h */
DEFINEFUNC(void, dbus_bus_add_match, (DBusConnection *connection,
const char *rule,
QByteArray QDBusArgumentPrivate::createSignature(int id)
{
- if (!qdbus_loadLibDBus())
- return "";
-
QByteArray signature;
QDBusMarshaller *marshaller = new QDBusMarshaller(0);
marshaller->ba = &signature;
*/
QDBusArgument::QDBusArgument()
{
- if (!qdbus_loadLibDBus()) {
- d = 0;
- return;
- }
-
QDBusMarshaller *dd = new QDBusMarshaller(0);
d = dd;
{
// Q_ASSERT_X(QCoreApplication::instance(), "QDBusConnection::addConnection",
// "Cannot create connection without a Q[Core]Application instance");
- if (!qdbus_loadLibDBus()) {
- QDBusConnectionPrivate *d = 0;
- return QDBusConnection(d);
- }
QMutexLocker locker(&_q_manager()->mutex);
{
// Q_ASSERT_X(QCoreApplication::instance(), "QDBusConnection::addConnection",
// "Cannot create connection without a Q[Core]Application instance");
- if (!qdbus_loadLibDBus()) {
- QDBusConnectionPrivate *d = 0;
- return QDBusConnection(d);
- }
QMutexLocker locker(&_q_manager()->mutex);
{
// Q_ASSERT_X(QCoreApplication::instance(), "QDBusConnection::addConnection",
// "Cannot create connection without a Q[Core]Application instance");
- if (!qdbus_loadLibDBus()) {
- QDBusConnectionPrivate *d = 0;
- return QDBusConnection(d);
- }
QMutexLocker locker(&_q_manager()->mutex);
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)
-# 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 (can_send_type && can_send_type(connection, DBUS_TYPE_UNIX_FD))
+ if (dbus_connection_can_send_type(connection, DBUS_TYPE_UNIX_FD))
result |= QDBusConnection::UnixFileDescriptorPassing;
return result;
DBusMessage *QDBusMessagePrivate::toDBusMessage(const QDBusMessage &message, QDBusConnection::ConnectionCapabilities capabilities,
QDBusError *error)
{
- if (!qdbus_loadLibDBus()) {
- *error = QDBusError(QDBusError::Failed, QLatin1String("Could not open lidbus-1 library"));
- return 0;
- }
-
DBusMessage *msg = 0;
const QDBusMessagePrivate *d_ptr = message.d_ptr;
if (address.isEmpty())
return;
- if (!qdbus_loadLibDBus()) {
- d = 0;
- return;
- }
d = new QDBusConnectionPrivate(this);
QObject::connect(d, SIGNAL(newServerConnection(QDBusConnection)),