Russian Qt Forum
Ноябрь 22, 2024, 15:10 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Dbus - KDE = trouble  (Прочитано 2557 раз)
Termit
Самовар
**
Offline Offline

Сообщений: 144



Просмотр профиля WWW
« : Октябрь 29, 2010, 00:11 »

Наступил на неприятные грабли...

Пишу на Kubuntu 10.10 (KDE 4.5) пока писал, тестировал и т.д. все было в порядке и нравилось. НО как только, то, что писал, запустил на Debian Lenny (KDE 3.5) несколько расстроился...

Суть проблемы:

В приложении которое отсылает сигналы подключаюсь к DBUS так:
Код:
	QDBusConnection connection = QDBusConnection::connectToBus(QDBusConnection::SessionBus,  DefaultsFilesystem::nameServiceFiscallistener());
if (!connection.isConnected())
Journal::instance()->error(qPrintable(QString(tr("DBus connect false"))));
else
Journal::instance()->debug(qPrintable(QString(tr("DBus connect is successfully"))));


if (!connection.registerService(DefaultsFilesystem::nameServiceFiscallistener()))
Journal::instance()->error(qPrintable(QString(tr("DBus register service false"))));
else
Journal::instance()->debug(qPrintable(QString(tr("DBus register service successfully"))));


if (!connection.registerObject(DefaultsFilesystem::pathServiceFiscallistener(), this, QDBusConnection::ExportAllSignals))
Journal::instance()->error(qPrintable(QString(tr("DBus register object false"))));
else
Journal::instance()->debug(qPrintable(QString(tr("DBus register object successfully"))));


Посылаю сигналы так:

Код:
emit makingMoneySignal(sender->id(), summ);
emit removalOfMoneySignal(sender->id(), summ);
emit beginSessionSignal(sender->id(), sessionNumber);

и так далее...


В другом приложении ловлю сигналы так
Код:
	QDBusConnection::sessionBus().connect(
DefaultsFilesystem::nameServiceFiscallistener(),
DefaultsFilesystem::pathServiceFiscallistener(), "",
"makingMoneySignal", this,
SLOT(makingMoneySlot(const QString, unsigned int)));
QDBusConnection::sessionBus().connect(
DefaultsFilesystem::nameServiceFiscallistener(),
DefaultsFilesystem::pathServiceFiscallistener(), "",
"removalOfMoneySignal", this,
SLOT(removalOfMoneySlot(const QString, unsigned int)));
QDBusConnection::sessionBus().connect(
DefaultsFilesystem::nameServiceFiscallistener(),
DefaultsFilesystem::pathServiceFiscallistener(), "",
"beginSessionSignal", this,
SLOT(beginSessionSlot(const QString, int)));



И результат таков:

В Kubuntu  в сессии KDE все работает как часы (без KDE не проверял, но уверен будут грабли)

В Debian без сессии KDE
Получаю сообщения об ошибках
> DBus connect false
> DBus register object false
> DBus register object false

Ну и соответственно ничего не работает.


В Debian в сессии KDE
Подключение проходит успешно, но при отсылке сигнала получаю сообщения типа такого:


process 9565: arguments to dbus_message_new_signal() were incorrect, assertion "interface != NULL" failed in file dbus-message.c line 1287.
This is normally a bug in some application using the D-Bus library.
QDBusConnection: Could not emit signal (null).beginSaleSignal


process 9565: arguments to dbus_message_new_signal() were incorrect, assertion "interface != NULL" failed in file dbus-message.c line 1287.
This is normally a bug in some application using the D-Bus library.
QDBusConnection: Could not emit signal (null).addSalePositionSignal


Идея работы приложения такая:
- Приложение которое будет отсылать сигналы запускается однозначно до всех WindowManager, KDM, GDM и т.д.
- Приложение которое ловит сигналы будет запускаться уже в X сессии




Вопрос как заставить работать DBUS чтобы не было привязки к запущенной сессии не то, что KDE, а вообще к Х11 но чтобы сигналы отправлялись-ловились?
Как правильно вообще такое делать? Впервые столкнулся с DBUS.
« Последнее редактирование: Октябрь 29, 2010, 02:31 от Termit » Записан

Человеческая глупость дает представление о бесконечности
(с) Иоанна Хмелевская
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.083 секунд. Запросов: 22.