@@ -21,6 +21,9 @@
21#include <QSettings>
21#include <QSettings>
22#include <QDebug>
22#include <QDebug>
25+#include <nih/alloc.h>
24#include "paths.h"
27#include "paths.h"
@@ -31,7 +34,8 @@ public:
31 : m_name(name)
34 : m_name(name)
32 , m_fileInfo(fileInfo)
35 , m_fileInfo(fileInfo)
33 , m_verified (true)
36 , m_verified (true)
36 QString m_name;
40 QString m_name;
37 QFileInfo m_fileInfo;
41 QFileInfo m_fileInfo;
@@ -43,12 +47,34 @@ public:
43IndicatorsManager::IndicatorsManager(QObject* parent)
47IndicatorsManager::IndicatorsManager(QObject* parent)
44 : QObject(parent)
48 : QObject(parent)
45 , m_loaded(false)
49 , m_loaded(false)
52+ auto upstartsession = qgetenv("UPSTART_SESSION");
53+ if (!upstartsession.isNull()) {
54+ DBusConnection * conn = NULL;
55+ conn = dbus_connection_open(upstartsession.constData(), NULL);
57+ m_upstart = nih_dbus_proxy_new(NULL, conn,
61+ dbus_connection_unref(conn);
65+ if (m_upstart != NULL) {
66+ m_upstart->auto_start = FALSE;
49IndicatorsManager::~IndicatorsManager()
70IndicatorsManager::~IndicatorsManager()
74+ if (m_upstart != NULL) {
75+ nih_unref(m_upstart, NULL);
54void IndicatorsManager::load()
80void IndicatorsManager::load()
@@ -208,6 +234,19 @@ void IndicatorsManager::setLoaded(bool loaded)
209 m_loaded = loaded;
235 m_loaded = loaded;
210 Q_EMIT loadedChanged(m_loaded);
236 Q_EMIT loadedChanged(m_loaded);
238+ if (m_upstart != NULL) {
241+ event_sent = upstart_emit_event_sync(NULL, m_upstart, "indicator-services-start", NULL, 0);
243+ event_sent = upstart_emit_event_sync(NULL, m_upstart, "indicator-services-end", NULL, 0);
246+ if (event_sent != 0) {
247+ qWarning() << "Unable to send indicator event to Upstart";