better trapping in dbus code (in case of unforseen problems)
SVN revision: 45680
This commit is contained in:
parent
7a3f478648
commit
c53dd2238d
|
@ -60,12 +60,12 @@ e_kbd_dbus_shutdown(void)
|
||||||
char *str;
|
char *str;
|
||||||
|
|
||||||
/* remove the dbus signal handlers if we can */
|
/* remove the dbus signal handlers if we can */
|
||||||
if (dbus_conn)
|
if (dbus_dev_add)
|
||||||
{
|
e_dbus_signal_handler_del(dbus_conn, dbus_dev_add);
|
||||||
e_dbus_signal_handler_del(dbus_conn, dbus_dev_add);
|
if (dbus_dev_del)
|
||||||
e_dbus_signal_handler_del(dbus_conn, dbus_dev_del);
|
e_dbus_signal_handler_del(dbus_conn, dbus_dev_del);
|
||||||
e_dbus_signal_handler_del(dbus_conn, dbus_dev_chg);
|
if (dbus_dev_chg)
|
||||||
}
|
e_dbus_signal_handler_del(dbus_conn, dbus_dev_chg);
|
||||||
|
|
||||||
/* free the list of ignored keyboards */
|
/* free the list of ignored keyboards */
|
||||||
EINA_LIST_FREE(ignore_kbds, str)
|
EINA_LIST_FREE(ignore_kbds, str)
|
||||||
|
@ -118,8 +118,12 @@ _e_kbd_dbus_cb_input_kbd_is(void *data, void *reply, DBusError *err)
|
||||||
/* if it's an input keyboard, than add it and eval */
|
/* if it's an input keyboard, than add it and eval */
|
||||||
if ((ret) && (ret->boolean))
|
if ((ret) && (ret->boolean))
|
||||||
{
|
{
|
||||||
_e_kbd_dbus_kbd_add(udi);
|
if (udi)
|
||||||
_e_kbd_dbus_kbd_eval();
|
{
|
||||||
|
_e_kbd_dbus_kbd_add(udi);
|
||||||
|
_e_kbd_dbus_kbd_eval();
|
||||||
|
free(udi);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -175,6 +179,7 @@ _e_kbd_dbus_kbd_add(const char *udi)
|
||||||
const char *str;
|
const char *str;
|
||||||
Eina_List *l;
|
Eina_List *l;
|
||||||
|
|
||||||
|
if (!udi) return;
|
||||||
EINA_LIST_FOREACH(dbus_kbds, l, str)
|
EINA_LIST_FOREACH(dbus_kbds, l, str)
|
||||||
if (!strcmp(str, udi)) return;
|
if (!strcmp(str, udi)) return;
|
||||||
dbus_kbds = eina_list_append(dbus_kbds, eina_stringshare_add(udi));
|
dbus_kbds = eina_list_append(dbus_kbds, eina_stringshare_add(udi));
|
||||||
|
@ -186,6 +191,7 @@ _e_kbd_dbus_kbd_del(const char *udi)
|
||||||
const char *str;
|
const char *str;
|
||||||
Eina_List *l;
|
Eina_List *l;
|
||||||
|
|
||||||
|
if (!udi) return;
|
||||||
EINA_LIST_FOREACH(dbus_kbds, l, str)
|
EINA_LIST_FOREACH(dbus_kbds, l, str)
|
||||||
if (!strcmp(str, udi))
|
if (!strcmp(str, udi))
|
||||||
{
|
{
|
||||||
|
@ -258,11 +264,17 @@ _e_kbd_dbus_dev_chg(void *data, DBusMessage *msg)
|
||||||
dbus_error_init(&err);
|
dbus_error_init(&err);
|
||||||
dbus_message_get_args(msg, &err, DBUS_TYPE_STRING, &udi,
|
dbus_message_get_args(msg, &err, DBUS_TYPE_STRING, &udi,
|
||||||
DBUS_TYPE_STRING, &cap, DBUS_TYPE_INVALID);
|
DBUS_TYPE_STRING, &cap, DBUS_TYPE_INVALID);
|
||||||
if (!strcmp(cap, "input.keyboard"))
|
if (cap)
|
||||||
{
|
{
|
||||||
_e_kbd_dbus_kbd_add(udi);
|
if (!strcmp(cap, "input.keyboard"))
|
||||||
_e_kbd_dbus_kbd_eval();
|
{
|
||||||
|
if (udi)
|
||||||
|
{
|
||||||
|
_e_kbd_dbus_kbd_add(udi);
|
||||||
|
_e_kbd_dbus_kbd_eval();
|
||||||
|
free(udi);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
free(cap);
|
||||||
}
|
}
|
||||||
if (cap) free(cap);
|
|
||||||
if (udi) free(udi);
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue