LINUX.ORG.RU

Интерфейс D-Bus появляется дважды

 , ,


0

2

Здравствуйте. Столкнулся с такой проблемой. У меня есть класс DBusIntegration:

dbusintegration.h

#ifndef DBUSINTEGRATION_H
#define DBUSINTEGRATION_H

#include <QDBusAbstractAdaptor>


class DBusIntegration : public QDBusAbstractAdaptor {
    Q_CLASSINFO("D-Bus Interface", "org.plainDE.actions")

public:
    void init();
    DBusIntegration(QString service,
                    QString path,
                    QString interfaceName,
                    QObject* parent);
};

#endif // DBUSINTEGRATION_H

dbusintegration.cpp

#include "dbusintegration.h"

#include <QDBusConnection>
#include <QDBusConnectionInterface>
#include <QDebug>


DBusIntegration::DBusIntegration(QString service,
                                 QString path,
                                 QString interfaceName,
                                 QObject* parent) : QDBusAbstractAdaptor(parent) {
    QDBusConnection bus = QDBusConnection::sessionBus();


     bus.registerService(service);

     bus.registerObject(path,
                        interfaceName,
                        parent,
                        QDBusConnection::ExportAllSlots);
}

Из другого файла:

DBusIntegration db("org.plainDE.plainPanel", "/Actions", "org.plainDE.actions", this);

Открываю qdbusviewer. Сервис действительно появился, по правильному пути, но вот с интерфейсами беда. Их почему-то два. И даже при том, что из другого Qt приложения методы работают, все равно это неправильно (я собрался также реализовывать org.kde.StatusNotifierWatcher, и другие приложения не понимают 2 интерфейса с одним именем).

Если я убираю прямое указание имени интерфейса:

DBusIntegration db("org.plainDE.plainPanel", "/Actions", this);

, то ситуация лучше. Появляются два интерфейса local.plainPanel.panel и org.qtproject.Qt.QWidget. Но если при взаимодействии двух моих приложений, меня это устраивает, то org.kde.StatusNotifierWatcher, естественно должно быть правильное имя интерфейса (все тот же org.kde.StatusNotifierWatcher).

Подскажите, пожалуйста, что я делаю не так, почему появляются два интерфейса с одинаковым именем? Спасибо.



Последнее исправление: thm (всего исправлений: 1)