From 563f986ac0400090e5785c5decfa9dfd43b98c9b Mon Sep 17 00:00:00 2001 From: Thorvald Natvig Date: Tue, 12 Jun 2007 09:33:34 +0000 Subject: [PATCH] Multiple dbus sources git-svn-id: https://mumble.svn.sourceforge.net/svnroot/mumble/trunk@467 05730e5d-ab1b-0410-a4ac-84af385074fa --- src/murmur/Server.cpp | 3 +++ src/murmur/Server.h | 2 ++ src/murmur/murmur.cpp | 26 ++++++++++++++++++++++++-- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/murmur/Server.cpp b/src/murmur/Server.cpp index ff5e30dd1..d0079c2ba 100644 --- a/src/murmur/Server.cpp +++ b/src/murmur/Server.cpp @@ -64,6 +64,7 @@ ServerParams::ServerParams() { qsDatabase = QString(); iDBPort = 0; qsDBDriver = "QSQLITE"; + qsDBus = "session"; } void ServerParams::read(QString fname) { @@ -86,6 +87,8 @@ void ServerParams::read(QString fname) { qsDBPassword = qs.value("dbPassword", qsDBPassword).toString(); qsDBHostName = qs.value("dbHost", qsDBHostName).toString(); iDBPort = qs.value("dbPort", iDBPort).toInt(); + + qsDBus = qs.value("dbus", qsDBus).toString(); } BandwidthRecord::BandwidthRecord() { diff --git a/src/murmur/Server.h b/src/murmur/Server.h index 0e63ced81..e28abe0f0 100644 --- a/src/murmur/Server.h +++ b/src/murmur/Server.h @@ -136,6 +136,8 @@ struct ServerParams { QString qsDBPassword; QString qsDBHostName; int iDBPort; + + QString qsDBus; ServerParams(); void read(QString fname = QString("murmur.ini")); diff --git a/src/murmur/murmur.cpp b/src/murmur/murmur.cpp index 9c55fd8ba..2a45c9372 100644 --- a/src/murmur/murmur.cpp +++ b/src/murmur/murmur.cpp @@ -87,11 +87,33 @@ int main(int argc, char **argv) ServerDB db; +#ifdef Q_OS_UNIX MurmurDBus::registerTypes(); +#endif dbus=new MurmurDBus(a); #ifdef Q_OS_UNIX - QDBusConnection::sessionBus().registerObject("/Murmur", &a); - QDBusConnection::sessionBus().registerService("net.sourceforge.mumble"); + QDBusConnection qdbc("mainbus"); + if (g_sp.qsDBus == "session") + qdbc = QDBusConnection::sessionBus(); + else if (g_sp.qsDBus == "system") + qdbc = QDBusConnection::systemBus(); + else { + // QtDBus is not quite finished yet. + qWarning("Warning: Peer-to-peer session support is currently nonworking."); + qdbc = QDBusConnection::connectToBus(g_sp.qsDBus, "mainbus"); + if (! qdbc.isConnected()) { + QDBusServer *qdbs = new QDBusServer(g_sp.qsDBus, &a); + qWarning("%s",qPrintable(qdbs->lastError().name())); + qWarning("%d",qdbs->isConnected()); + qWarning("%s",qPrintable(qdbs->address())); + qdbc = QDBusConnection::connectToBus(g_sp.qsDBus, "mainbus"); + } + } + if (! qdbc.isConnected()) { + qWarning("Failed to connect to D-Bus %s",qPrintable(g_sp.qsDBus)); + } + qdbc.registerObject("/Murmur", &a); + qdbc.registerService("net.sourceforge.mumble"); #endif if (! supw.isEmpty()) {