[devel] Q: проблемы в отлове перезапуска халдыбаса
Alexey I. Froloff
=?iso-8859-1?q?raorn_=CE=C1_altlinux=2Eru?=
Ср Янв 2 19:15:56 MSK 2008
Либо я совсем тупой, либо одно из двух.
Пытаюсь отловить перезапуск hal и dbus в своей софтине. Код
честно стырил из ivman (pulseaudio и powersaved с hal не
работают). План действий следующий:
1. Говорим DBus'у не делать _exit() при отвале коннекта.
2. Вешаем обработчик сигнала от DBus.
По сигналу Disconnected от DBus unref'им открытый коннект и
ставим в mainloop вызов процедуры реконнекта. Я пытался в этом
месте звать ещё и libhal_ctx_shutdown(), но ловил сегфолт.
Процедура реконнекта будет вызываться периодически, пока коннект
не появится (делается средствами glib).
По сигналу NameOwnerChanged от org.freedesktop.Hal если:
1. Старый owner валидный, а новый нет - зовём
libhal_ctx_shutdown().
2. Старый owner не валидный, а новый валидный - опять инитим hal.
Это всё есть в сорцах ivman.
Проблема в следующем:
Если сразу перезапустить DBus, моя софтина получает
NameOwnerChanged от Hal и сегфолтится.
Если перезапустить Hal, софтина получает два NameOwnerChanged и
работает дальше.
Если сначала перезапустить Hal, а потом сколько угодно раз
перезапускать DBus, то при перезапуске DBus будет ловиться
Disconnected и программа работает нормально.
Если отключить пляски с Hal картина будет следующая:
При первом перезапуске DBus будут вызываться:
NameOwnerChanged со смыслом "Hal ушёл"
Disconnected от DBus
NameOwnerChanged со смыслом "Hal пришёл"
При последующих перезапусках DBus сигнал "Hal ушёл" ко мне
попадать не будет.
Собсно, вопрос. Что с этим всем делать и не сегфолтится ли у
кого ivman при перезапуске DBus?
--
Regards,
Sir Raorn.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: Digital signature
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20080102/a7b6365e/attachment-0002.bin>
Подробная информация о списке рассылки Devel