From 49a9b91258c42db16280fe99bed501d487a6664a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Garapich?= Date: Sun, 24 May 2015 12:14:54 +0200 Subject: [PATCH] refs #423 Detect already running xbus --- .../simulator/xplane/simulator_xplane.cpp | 27 ++++++++++++++++--- .../simulator/xplane/simulator_xplane.h | 4 +++ 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/plugins/simulator/xplane/simulator_xplane.cpp b/src/plugins/simulator/xplane/simulator_xplane.cpp index deac99b40..68e70520d 100644 --- a/src/plugins/simulator/xplane/simulator_xplane.cpp +++ b/src/plugins/simulator/xplane/simulator_xplane.cpp @@ -454,9 +454,16 @@ namespace BlackSimPlugin if (m_watcher) // already started return; - m_conn = QDBusConnection::sessionBus(); // TODO make this configurable - m_watcher = new QDBusServiceWatcher(xbusServiceName(), m_conn, QDBusServiceWatcher::WatchForRegistration, this); - connect(m_watcher, &QDBusServiceWatcher::serviceRegistered, this, &CSimulatorXPlaneListener::ps_serviceRegistered); + if (isXBusRunning()) + { + emit simulatorStarted(); + } + else + { + m_conn = QDBusConnection::sessionBus(); // TODO make this configurable + m_watcher = new QDBusServiceWatcher(xbusServiceName(), m_conn, QDBusServiceWatcher::WatchForRegistration, this); + connect(m_watcher, &QDBusServiceWatcher::serviceRegistered, this, &CSimulatorXPlaneListener::ps_serviceRegistered); + } } void CSimulatorXPlaneListener::stop() @@ -468,6 +475,20 @@ namespace BlackSimPlugin } } + bool CSimulatorXPlaneListener::isXBusRunning() const + { + QDBusConnection conn = QDBusConnection::sessionBus(); // TODO make this configurable + CXBusServiceProxy *service = new CXBusServiceProxy(conn); + CXBusTrafficProxy *traffic = new CXBusTrafficProxy(conn); + + bool result = service->isValid() && traffic->isValid(); + + service->deleteLater(); + traffic->deleteLater(); + + return result; + } + void CSimulatorXPlaneListener::ps_serviceRegistered(const QString &serviceName) { if (serviceName == xbusServiceName()) diff --git a/src/plugins/simulator/xplane/simulator_xplane.h b/src/plugins/simulator/xplane/simulator_xplane.h index b596412e8..f70e53c74 100644 --- a/src/plugins/simulator/xplane/simulator_xplane.h +++ b/src/plugins/simulator/xplane/simulator_xplane.h @@ -198,6 +198,10 @@ namespace BlackSimPlugin //! \copydoc BlackCore::ISimulatorListener::stop virtual void stop() override; + private: + //! \brief Check if XBus service is already registered + bool isXBusRunning() const; + private slots: void ps_serviceRegistered(const QString &serviceName);