summaryrefslogtreecommitdiffstats
path: root/src/dbus
diff options
context:
space:
mode:
authorDaniele E. Domenichelli <daniele.domenichelli@gmail.com>2011-04-18 16:21:05 (GMT)
committerMarius Storm-Olsen <marius.storm-olsen@nokia.com>2011-04-18 16:24:34 (GMT)
commit35a7a647faf66b281b9ca952252f90e530aa3afb (patch)
treeef03ebc116ba91e347280e0f99f517e72644b775 /src/dbus
parent393462ae14f6c33d0dc462704c754cf4f6bd41c3 (diff)
downloadQt-35a7a647faf66b281b9ca952252f90e530aa3afb.zip
Qt-35a7a647faf66b281b9ca952252f90e530aa3afb.tar.gz
Qt-35a7a647faf66b281b9ca952252f90e530aa3afb.tar.bz2
QtDBus: Fix QDBusServer to handle correctly new dbus connections
Merge-request: 2343 Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com> Reviewed-by: Thiago Macieira <thiago.macieira@nokia.com>
Diffstat (limited to 'src/dbus')
-rw-r--r--src/dbus/qdbusintegrator.cpp15
-rw-r--r--src/dbus/qdbusserver.cpp6
2 files changed, 10 insertions, 11 deletions
diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp
index a1cb209..e09b155 100644
--- a/src/dbus/qdbusintegrator.cpp
+++ b/src/dbus/qdbusintegrator.cpp
@@ -384,18 +384,16 @@ static void qDBusNewConnection(DBusServer *server, DBusConnection *connection, v
// keep the connection alive
q_dbus_connection_ref(connection);
- QDBusConnectionPrivate *d = new QDBusConnectionPrivate;
+ QDBusConnectionPrivate *d = static_cast<QDBusConnectionPrivate *>(data);
// setPeer does the error handling for us
QDBusErrorInternal error;
d->setPeer(connection, error);
QDBusConnection retval = QDBusConnectionPrivate::q(d);
- d->setBusService(retval);
// make QDBusServer emit the newConnection signal
- QDBusConnectionPrivate *server_d = static_cast<QDBusConnectionPrivate *>(data);
- server_d->serverConnection(retval);
+ d->serverConnection(retval);
}
} // extern "C"
@@ -1033,11 +1031,10 @@ void QDBusConnectionPrivate::closeConnection()
mode = InvalidMode; // prevent reentrancy
baseService.clear();
- if (oldMode == ServerMode) {
- if (server) {
- q_dbus_server_disconnect(server);
- }
- } else if (oldMode == ClientMode || oldMode == PeerMode) {
+ if (server)
+ q_dbus_server_disconnect(server);
+
+ if (oldMode == ClientMode || oldMode == PeerMode) {
if (connection) {
q_dbus_connection_close(connection);
// send the "close" message
diff --git a/src/dbus/qdbusserver.cpp b/src/dbus/qdbusserver.cpp
index 1fe80bd..3189b4e 100644
--- a/src/dbus/qdbusserver.cpp
+++ b/src/dbus/qdbusserver.cpp
@@ -62,14 +62,16 @@ QT_BEGIN_NAMESPACE
QDBusServer::QDBusServer(const QString &address, QObject *parent)
: QObject(parent)
{
+ if (address.isEmpty())
+ return;
+
if (!qdbus_loadLibDBus()) {
d = 0;
return;
}
d = new QDBusConnectionPrivate(this);
- if (address.isEmpty())
- return;
+ d->name = QLatin1String("QDBusServer-") + QString::number(reinterpret_cast<qulonglong>(d));
QObject::connect(d, SIGNAL(newServerConnection(QDBusConnection)),
this, SIGNAL(newConnection(QDBusConnection)));