[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