summaryrefslogtreecommitdiffstats
path: root/src/dbus
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@nokia.com>2010-09-10 15:07:29 (GMT)
committerThiago Macieira <thiago.macieira@nokia.com>2010-09-22 13:13:16 (GMT)
commitad1fe7574f36dc54a1a0050308c52fc15e757842 (patch)
treea0970ae583efedbc8883b93aac7fabb2b48f70d2 /src/dbus
parent56bb732f1628fb23b98a2554348b309f634ca55f (diff)
downloadQt-ad1fe7574f36dc54a1a0050308c52fc15e757842.zip
Qt-ad1fe7574f36dc54a1a0050308c52fc15e757842.tar.gz
Qt-ad1fe7574f36dc54a1a0050308c52fc15e757842.tar.bz2
Pre-populate the watched services hash with org.freedesktop.DBus
The D-Bus specification doesn't require GetNameOwner("org.freedesktop.DBus") to return anything in specific, but the reference implementation always returns "org.freedesktop.DBus". The Python D-Bus bindings even require it. So add the same assumption to QtDBus, which saves a round-trip at the application start to ask the server what its own owner is Reviewed-By: Robin Burchell Reviewed-By: Ritt Konstantin
Diffstat (limited to 'src/dbus')
-rw-r--r--src/dbus/qdbusconnection_p.h3
-rw-r--r--src/dbus/qdbusintegrator.cpp4
2 files changed, 7 insertions, 0 deletions
diff --git a/src/dbus/qdbusconnection_p.h b/src/dbus/qdbusconnection_p.h
index 81af2c7..1bd00da 100644
--- a/src/dbus/qdbusconnection_p.h
+++ b/src/dbus/qdbusconnection_p.h
@@ -160,6 +160,9 @@ public:
struct WatchedServiceData {
WatchedServiceData() : refcount(0) {}
+ WatchedServiceData(const QString &owner, int refcount = 0)
+ : owner(owner), refcount(refcount)
+ {}
QString owner;
int refcount;
};
diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp
index cf6ca28..c7b531e 100644
--- a/src/dbus/qdbusintegrator.cpp
+++ b/src/dbus/qdbusintegrator.cpp
@@ -973,6 +973,10 @@ QDBusConnectionPrivate::QDBusConnectionPrivate(QObject *p)
QDBusMetaTypeId::init();
rootNode.flags = 0;
+
+ // prepopulate watchedServices:
+ // we know that the owner of org.freedesktop.DBus is itself
+ watchedServices.insert(dbusServiceString(), WatchedServiceData(dbusServiceString(), 1));
}
QDBusConnectionPrivate::~QDBusConnectionPrivate()