summaryrefslogtreecommitdiff
path: root/src/lib/elementary/elm_atspi_bridge.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/elementary/elm_atspi_bridge.c')
-rw-r--r--src/lib/elementary/elm_atspi_bridge.c212
1 files changed, 101 insertions, 111 deletions
diff --git a/src/lib/elementary/elm_atspi_bridge.c b/src/lib/elementary/elm_atspi_bridge.c
index 4b1eb17..53e79cc 100644
--- a/src/lib/elementary/elm_atspi_bridge.c
+++ b/src/lib/elementary/elm_atspi_bridge.c
@@ -67,7 +67,6 @@ typedef struct _Elm_Atspi_Bridge_Data
67{ 67{
68 Eldbus_Connection *session_bus; 68 Eldbus_Connection *session_bus;
69 Eldbus_Connection *a11y_bus; 69 Eldbus_Connection *a11y_bus;
70 Eina_List *reemited_events;
71 Eina_Hash *cache; 70 Eina_Hash *cache;
72 Eldbus_Service_Interface *cache_interface; 71 Eldbus_Service_Interface *cache_interface;
73 Eldbus_Signal_Handler *register_hdl; 72 Eldbus_Signal_Handler *register_hdl;
@@ -398,71 +397,71 @@ struct atspi_state_desc
398}; 397};
399 398
400static const struct atspi_state_desc elm_states_to_atspi_state[] = { 399static const struct atspi_state_desc elm_states_to_atspi_state[] = {
401 { EFL_ACCESS_STATE_INVALID, ATSPI_STATE_INVALID, "invalid" }, 400 { EFL_ACCESS_STATE_TYPE_INVALID, ATSPI_STATE_INVALID, "invalid" },
402 { EFL_ACCESS_STATE_ACTIVE, ATSPI_STATE_ACTIVE, "active" }, 401 { EFL_ACCESS_STATE_TYPE_ACTIVE, ATSPI_STATE_ACTIVE, "active" },
403 { EFL_ACCESS_STATE_ARMED, ATSPI_STATE_ARMED, "armed" }, 402 { EFL_ACCESS_STATE_TYPE_ARMED, ATSPI_STATE_ARMED, "armed" },
404 { EFL_ACCESS_STATE_BUSY, ATSPI_STATE_BUSY, "busy" }, 403 { EFL_ACCESS_STATE_TYPE_BUSY, ATSPI_STATE_BUSY, "busy" },
405 { EFL_ACCESS_STATE_CHECKED, ATSPI_STATE_CHECKED, "checked" }, 404 { EFL_ACCESS_STATE_TYPE_CHECKED, ATSPI_STATE_CHECKED, "checked" },
406 { EFL_ACCESS_STATE_COLLAPSED, ATSPI_STATE_COLLAPSED, "collapsed" }, 405 { EFL_ACCESS_STATE_TYPE_COLLAPSED, ATSPI_STATE_COLLAPSED, "collapsed" },
407 { EFL_ACCESS_STATE_DEFUNCT, ATSPI_STATE_DEFUNCT, "defunct" }, 406 { EFL_ACCESS_STATE_TYPE_DEFUNCT, ATSPI_STATE_DEFUNCT, "defunct" },
408 { EFL_ACCESS_STATE_EDITABLE, ATSPI_STATE_EDITABLE, "editable" }, 407 { EFL_ACCESS_STATE_TYPE_EDITABLE, ATSPI_STATE_EDITABLE, "editable" },
409 { EFL_ACCESS_STATE_ENABLED, ATSPI_STATE_ENABLED, "enabled" }, 408 { EFL_ACCESS_STATE_TYPE_ENABLED, ATSPI_STATE_ENABLED, "enabled" },
410 { EFL_ACCESS_STATE_EXPANDABLE, ATSPI_STATE_EXPANDABLE, "expandable" }, 409 { EFL_ACCESS_STATE_TYPE_EXPANDABLE, ATSPI_STATE_EXPANDABLE, "expandable" },
411 { EFL_ACCESS_STATE_EXPANDED, ATSPI_STATE_EXPANDED, "expanded" }, 410 { EFL_ACCESS_STATE_TYPE_EXPANDED, ATSPI_STATE_EXPANDED, "expanded" },
412 { EFL_ACCESS_STATE_FOCUSABLE, ATSPI_STATE_FOCUSABLE, "focusable" }, 411 { EFL_ACCESS_STATE_TYPE_FOCUSABLE, ATSPI_STATE_FOCUSABLE, "focusable" },
413 { EFL_ACCESS_STATE_FOCUSED, ATSPI_STATE_FOCUSED, "focused" }, 412 { EFL_ACCESS_STATE_TYPE_FOCUSED, ATSPI_STATE_FOCUSED, "focused" },
414 { EFL_ACCESS_STATE_HAS_TOOLTIP, ATSPI_STATE_HAS_TOOLTIP, "has-tooltip" }, 413 { EFL_ACCESS_STATE_TYPE_HAS_TOOLTIP, ATSPI_STATE_HAS_TOOLTIP, "has-tooltip" },
415 { EFL_ACCESS_STATE_HORIZONTAL, ATSPI_STATE_HORIZONTAL, "horizontal" }, 414 { EFL_ACCESS_STATE_TYPE_HORIZONTAL, ATSPI_STATE_HORIZONTAL, "horizontal" },
416 { EFL_ACCESS_STATE_ICONIFIED, ATSPI_STATE_ICONIFIED, "iconified" }, 415 { EFL_ACCESS_STATE_TYPE_MINIMIZED, ATSPI_STATE_ICONIFIED, "minimized" },
417 { EFL_ACCESS_STATE_MODAL, ATSPI_STATE_MODAL, "modal" }, 416 { EFL_ACCESS_STATE_TYPE_MODAL, ATSPI_STATE_MODAL, "modal" },
418 { EFL_ACCESS_STATE_MULTI_LINE, ATSPI_STATE_MULTI_LINE, "multi-line" }, 417 { EFL_ACCESS_STATE_TYPE_MULTI_LINE, ATSPI_STATE_MULTI_LINE, "multi-line" },
419 { EFL_ACCESS_STATE_MULTISELECTABLE, ATSPI_STATE_MULTISELECTABLE, "multiselectable" }, 418 { EFL_ACCESS_STATE_TYPE_MULTISELECTABLE, ATSPI_STATE_MULTISELECTABLE, "multiselectable" },
420 { EFL_ACCESS_STATE_OPAQUE, ATSPI_STATE_OPAQUE, "opaque" }, 419 { EFL_ACCESS_STATE_TYPE_OPAQUE, ATSPI_STATE_OPAQUE, "opaque" },
421 { EFL_ACCESS_STATE_PRESSED, ATSPI_STATE_PRESSED, "pressed" }, 420 { EFL_ACCESS_STATE_TYPE_PRESSED, ATSPI_STATE_PRESSED, "pressed" },
422 { EFL_ACCESS_STATE_RESIZABLE, ATSPI_STATE_RESIZABLE, "resizable" }, 421 { EFL_ACCESS_STATE_TYPE_RESIZABLE, ATSPI_STATE_RESIZABLE, "resizable" },
423 { EFL_ACCESS_STATE_SELECTABLE, ATSPI_STATE_SELECTABLE, "selectable" }, 422 { EFL_ACCESS_STATE_TYPE_SELECTABLE, ATSPI_STATE_SELECTABLE, "selectable" },
424 { EFL_ACCESS_STATE_SELECTED, ATSPI_STATE_SELECTED, "selected" }, 423 { EFL_ACCESS_STATE_TYPE_SELECTED, ATSPI_STATE_SELECTED, "selected" },
425 { EFL_ACCESS_STATE_SENSITIVE, ATSPI_STATE_SENSITIVE, "sensitive" }, 424 { EFL_ACCESS_STATE_TYPE_SENSITIVE, ATSPI_STATE_SENSITIVE, "sensitive" },
426 { EFL_ACCESS_STATE_SHOWING, ATSPI_STATE_SHOWING, "showing" }, 425 { EFL_ACCESS_STATE_TYPE_SHOWING, ATSPI_STATE_SHOWING, "showing" },
427 { EFL_ACCESS_STATE_SINGLE_LINE, ATSPI_STATE_SINGLE_LINE, "single-line" }, 426 { EFL_ACCESS_STATE_TYPE_SINGLE_LINE, ATSPI_STATE_SINGLE_LINE, "single-line" },
428 { EFL_ACCESS_STATE_STALE, ATSPI_STATE_STALE, "stale" }, 427 { EFL_ACCESS_STATE_TYPE_STALE, ATSPI_STATE_STALE, "stale" },
429 { EFL_ACCESS_STATE_TRANSIENT, ATSPI_STATE_TRANSIENT, "transient" }, 428 { EFL_ACCESS_STATE_TYPE_TRANSIENT, ATSPI_STATE_TRANSIENT, "transient" },
430 { EFL_ACCESS_STATE_VERTICAL, ATSPI_STATE_VERTICAL, "vertical" }, 429 { EFL_ACCESS_STATE_TYPE_VERTICAL, ATSPI_STATE_VERTICAL, "vertical" },
431 { EFL_ACCESS_STATE_VISIBLE, ATSPI_STATE_VISIBLE, "visible" }, 430 { EFL_ACCESS_STATE_TYPE_VISIBLE, ATSPI_STATE_VISIBLE, "visible" },
432 { EFL_ACCESS_STATE_MANAGES_DESCENDANTS, ATSPI_STATE_MANAGES_DESCENDANTS, "manages-descendants" }, 431 { EFL_ACCESS_STATE_TYPE_MANAGES_DESCENDANTS, ATSPI_STATE_MANAGES_DESCENDANTS, "manages-descendants" },
433 { EFL_ACCESS_STATE_INDETERMINATE, ATSPI_STATE_INDETERMINATE, "indeterminate" }, 432 { EFL_ACCESS_STATE_TYPE_INDETERMINATE, ATSPI_STATE_INDETERMINATE, "indeterminate" },
434 { EFL_ACCESS_STATE_REQUIRED, ATSPI_STATE_REQUIRED, "required" }, 433 { EFL_ACCESS_STATE_TYPE_REQUIRED, ATSPI_STATE_REQUIRED, "required" },
435 { EFL_ACCESS_STATE_TRUNCATED, ATSPI_STATE_TRUNCATED, "truncated" }, 434 { EFL_ACCESS_STATE_TYPE_TRUNCATED, ATSPI_STATE_TRUNCATED, "truncated" },
436 { EFL_ACCESS_STATE_ANIMATED, ATSPI_STATE_ANIMATED, "animated" }, 435 { EFL_ACCESS_STATE_TYPE_ANIMATED, ATSPI_STATE_ANIMATED, "animated" },
437 { EFL_ACCESS_STATE_INVALID_ENTRY, ATSPI_STATE_INVALID_ENTRY, "invalid-entry" }, 436 { EFL_ACCESS_STATE_TYPE_INVALID_ENTRY, ATSPI_STATE_INVALID_ENTRY, "invalid-entry" },
438 { EFL_ACCESS_STATE_SUPPORTS_AUTOCOMPLETION, ATSPI_STATE_SUPPORTS_AUTOCOMPLETION, "supports-autocompletion" }, 437 { EFL_ACCESS_STATE_TYPE_SUPPORTS_AUTOCOMPLETION, ATSPI_STATE_SUPPORTS_AUTOCOMPLETION, "supports-autocompletion" },
439 { EFL_ACCESS_STATE_SELECTABLE_TEXT, ATSPI_STATE_SELECTABLE_TEXT, "selectable-text" }, 438 { EFL_ACCESS_STATE_TYPE_SELECTABLE_TEXT, ATSPI_STATE_SELECTABLE_TEXT, "selectable-text" },
440 { EFL_ACCESS_STATE_IS_DEFAULT, ATSPI_STATE_IS_DEFAULT, "is-default" }, 439 { EFL_ACCESS_STATE_TYPE_IS_DEFAULT, ATSPI_STATE_IS_DEFAULT, "is-default" },
441 { EFL_ACCESS_STATE_VISITED, ATSPI_STATE_VISITED, "visited" }, 440 { EFL_ACCESS_STATE_TYPE_VISITED, ATSPI_STATE_VISITED, "visited" },
442 { EFL_ACCESS_STATE_LAST_DEFINED, ATSPI_STATE_LAST_DEFINED, "last-defined" }, 441 { EFL_ACCESS_STATE_TYPE_LAST_DEFINED, ATSPI_STATE_LAST_DEFINED, "last-defined" },
443}; 442};
444 443
445static const int elm_relation_to_atspi_relation_mapping[] = { 444static const int elm_relation_to_atspi_relation_mapping[] = {
446 [EFL_ACCESS_RELATION_NULL] = ATSPI_RELATION_NULL, 445 [EFL_ACCESS_RELATION_TYPE_NULL] = ATSPI_RELATION_NULL,
447 [EFL_ACCESS_RELATION_LABEL_FOR] = ATSPI_RELATION_LABEL_FOR, 446 [EFL_ACCESS_RELATION_TYPE_LABEL_FOR] = ATSPI_RELATION_LABEL_FOR,
448 [EFL_ACCESS_RELATION_LABELLED_BY] = ATSPI_RELATION_LABELLED_BY, 447 [EFL_ACCESS_RELATION_TYPE_LABELLED_BY] = ATSPI_RELATION_LABELLED_BY,
449 [EFL_ACCESS_RELATION_CONTROLLER_FOR] = ATSPI_RELATION_CONTROLLER_FOR, 448 [EFL_ACCESS_RELATION_TYPE_CONTROLLER_FOR] = ATSPI_RELATION_CONTROLLER_FOR,
450 [EFL_ACCESS_RELATION_CONTROLLED_BY] = ATSPI_RELATION_CONTROLLED_BY, 449 [EFL_ACCESS_RELATION_TYPE_CONTROLLED_BY] = ATSPI_RELATION_CONTROLLED_BY,
451 [EFL_ACCESS_RELATION_MEMBER_OF] = ATSPI_RELATION_MEMBER_OF, 450 [EFL_ACCESS_RELATION_TYPE_MEMBER_OF] = ATSPI_RELATION_MEMBER_OF,
452 [EFL_ACCESS_RELATION_TOOLTIP_FOR] = ATSPI_RELATION_TOOLTIP_FOR, 451 [EFL_ACCESS_RELATION_TYPE_TOOLTIP_FOR] = ATSPI_RELATION_TOOLTIP_FOR,
453 [EFL_ACCESS_RELATION_NODE_CHILD_OF] = ATSPI_RELATION_NODE_CHILD_OF, 452 [EFL_ACCESS_RELATION_TYPE_NODE_CHILD_OF] = ATSPI_RELATION_NODE_CHILD_OF,
454 [EFL_ACCESS_RELATION_NODE_PARENT_OF] = ATSPI_RELATION_NODE_PARENT_OF, 453 [EFL_ACCESS_RELATION_TYPE_NODE_PARENT_OF] = ATSPI_RELATION_NODE_PARENT_OF,
455 [EFL_ACCESS_RELATION_EXTENDED] = ATSPI_RELATION_EXTENDED, 454 [EFL_ACCESS_RELATION_TYPE_EXTENDED] = ATSPI_RELATION_EXTENDED,
456 [EFL_ACCESS_RELATION_FLOWS_TO] = ATSPI_RELATION_FLOWS_TO, 455 [EFL_ACCESS_RELATION_TYPE_FLOWS_TO] = ATSPI_RELATION_FLOWS_TO,
457 [EFL_ACCESS_RELATION_FLOWS_FROM] = ATSPI_RELATION_FLOWS_FROM, 456 [EFL_ACCESS_RELATION_TYPE_FLOWS_FROM] = ATSPI_RELATION_FLOWS_FROM,
458 [EFL_ACCESS_RELATION_SUBWINDOW_OF] = ATSPI_RELATION_SUBWINDOW_OF, 457 [EFL_ACCESS_RELATION_TYPE_SUBWINDOW_OF] = ATSPI_RELATION_SUBWINDOW_OF,
459 [EFL_ACCESS_RELATION_EMBEDS] = ATSPI_RELATION_EMBEDS, 458 [EFL_ACCESS_RELATION_TYPE_EMBEDS] = ATSPI_RELATION_EMBEDS,
460 [EFL_ACCESS_RELATION_EMBEDDED_BY] = ATSPI_RELATION_EMBEDDED_BY, 459 [EFL_ACCESS_RELATION_TYPE_EMBEDDED_BY] = ATSPI_RELATION_EMBEDDED_BY,
461 [EFL_ACCESS_RELATION_POPUP_FOR] = ATSPI_RELATION_POPUP_FOR, 460 [EFL_ACCESS_RELATION_TYPE_POPUP_FOR] = ATSPI_RELATION_POPUP_FOR,
462 [EFL_ACCESS_RELATION_PARENT_WINDOW_OF] = ATSPI_RELATION_PARENT_WINDOW_OF, 461 [EFL_ACCESS_RELATION_TYPE_PARENT_WINDOW_OF] = ATSPI_RELATION_PARENT_WINDOW_OF,
463 [EFL_ACCESS_RELATION_DESCRIPTION_FOR] = ATSPI_RELATION_DESCRIPTION_FOR, 462 [EFL_ACCESS_RELATION_TYPE_DESCRIPTION_FOR] = ATSPI_RELATION_DESCRIPTION_FOR,
464 [EFL_ACCESS_RELATION_DESCRIBED_BY] = ATSPI_RELATION_DESCRIBED_BY, 463 [EFL_ACCESS_RELATION_TYPE_DESCRIBED_BY] = ATSPI_RELATION_DESCRIBED_BY,
465 [EFL_ACCESS_RELATION_LAST_DEFINED] = ATSPI_RELATION_LAST_DEFINED, 464 [EFL_ACCESS_RELATION_TYPE_LAST_DEFINED] = ATSPI_RELATION_LAST_DEFINED,
466}; 465};
467 466
468static inline Eldbus_Message *_dbus_invalid_ref_error_new(const Eldbus_Message *msg) 467static inline Eldbus_Message *_dbus_invalid_ref_error_new(const Eldbus_Message *msg)
@@ -472,7 +471,7 @@ static inline Eldbus_Message *_dbus_invalid_ref_error_new(const Eldbus_Message *
472 471
473static AtspiRelationType _elm_relation_to_atspi_relation(Efl_Access_Relation_Type type) 472static AtspiRelationType _elm_relation_to_atspi_relation(Efl_Access_Relation_Type type)
474{ 473{
475 if ((type < EFL_ACCESS_RELATION_LAST_DEFINED) && (type > EFL_ACCESS_RELATION_NULL)) 474 if ((type < EFL_ACCESS_RELATION_TYPE_LAST_DEFINED) && (type > EFL_ACCESS_RELATION_TYPE_NULL))
476 return elm_relation_to_atspi_relation_mapping[type]; 475 return elm_relation_to_atspi_relation_mapping[type];
477 return ATSPI_RELATION_NULL; 476 return ATSPI_RELATION_NULL;
478} 477}
@@ -3896,7 +3895,7 @@ _state_changed_signal_send(void *data, const Efl_Event *event)
3896 return; 3895 return;
3897 } 3896 }
3898 3897
3899 if ((state_data->type > EFL_ACCESS_STATE_LAST_DEFINED) || 3898 if ((state_data->type > EFL_ACCESS_STATE_TYPE_LAST_DEFINED) ||
3900 (int)state_data->type < 0) 3899 (int)state_data->type < 0)
3901 { 3900 {
3902 efl_event_callback_stop(event->object); 3901 efl_event_callback_stop(event->object);
@@ -4652,73 +4651,64 @@ _iter_marshall_key_event(Eldbus_Message_Iter *iter, Key_Event_Info *data)
4652 eldbus_message_iter_container_close(iter, struct_iter); 4651 eldbus_message_iter_container_close(iter, struct_iter);
4653} 4652}
4654 4653
4655static void
4656_on_event_del(void *user_data, void *func_data EINA_UNUSED)
4657{
4658 Key_Event_Info *info = user_data;
4659 _key_event_info_free(info);
4660}
4661
4662static void
4663_on_listener_answer(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
4664{
4665 Key_Event_Info *info = data;
4666 const char *errname, *errmsg;
4667 Eina_Bool ret = EINA_TRUE;
4668
4669 ELM_ATSPI_BRIDGE_DATA_GET_OR_RETURN(info->bridge, pd);
4670
4671 if (eldbus_message_error_get(msg, &errname, &errmsg))
4672 {
4673 ERR("%s %s", errname, errmsg);
4674 goto reemit;
4675 }
4676 if (!eldbus_message_arguments_get(msg, "b", &ret))
4677 {
4678 ERR("Return message does not contain return value");
4679 goto reemit;
4680 }
4681 if (ret)
4682 {
4683 _key_event_info_free(info);
4684 return;
4685 }
4686reemit:
4687 ecore_event_add(info->type, &info->event, _on_event_del, info);
4688 pd->reemited_events = eina_list_append(pd->reemited_events, &info->event);
4689}
4690
4691static Eina_Bool 4654static Eina_Bool
4692_elm_atspi_bridge_key_filter(void *data, void *loop EINA_UNUSED, int type, void *event) 4655_elm_atspi_bridge_key_filter(void *data, void *loop EINA_UNUSED, int type, void *event)
4693{ 4656{
4694 Eldbus_Message *msg;
4695 Eldbus_Message_Iter *iter;
4696 Ecore_Event_Key *key_event = event; 4657 Ecore_Event_Key *key_event = event;
4697 Key_Event_Info *ke; 4658 Key_Event_Info *ke;
4659 Eldbus_Object *dobj;
4660 Eldbus_Proxy *proxy;
4661 Eldbus_Message *req;
4662 Eldbus_Message_Iter *iter;
4663 Eldbus_Message *reply;
4664 Eina_Bool ret = EINA_TRUE;
4665 const char *errname = NULL, *errmsg = NULL;
4698 Eo *bridge = data; 4666 Eo *bridge = data;
4699 4667
4700 ELM_ATSPI_BRIDGE_DATA_GET_OR_RETURN_VAL(bridge, pd, EINA_TRUE); 4668 ELM_ATSPI_BRIDGE_DATA_GET_OR_RETURN_VAL(bridge, pd, EINA_TRUE);
4701 4669
4702 if ((type != ECORE_EVENT_KEY_DOWN) && (type != ECORE_EVENT_KEY_UP)) return EINA_TRUE; 4670 if ((type != ECORE_EVENT_KEY_DOWN) && (type != ECORE_EVENT_KEY_UP)) return EINA_TRUE;
4703 4671
4704 // check if reemited 4672 if (!(dobj = eldbus_object_get(pd->a11y_bus, ATSPI_DBUS_NAME_REGISTRY, ATSPI_DBUS_PATH_DEC)))
4705 if (eina_list_data_find(pd->reemited_events, event))
4706 { 4673 {
4707 pd->reemited_events = eina_list_remove(pd->reemited_events, event); 4674 ERR("Failed to create eldbus object for: " ATSPI_DBUS_PATH_DEC);
4675 return EINA_TRUE;
4676 }
4677
4678 if (!(proxy = eldbus_proxy_get(dobj, ATSPI_DBUS_INTERFACE_DEC)))
4679 {
4680 ERR("Failed to create proxy object for: " ATSPI_DBUS_INTERFACE_DEC);
4681 return EINA_TRUE;
4682 }
4683
4684 if (!(req = eldbus_proxy_method_call_new(proxy, "NotifyListenersSync")))
4685 {
4686 ERR("Failed to create method call on: " ATSPI_DBUS_INTERFACE_DEC "." "NotifyListenersSync");
4708 return EINA_TRUE; 4687 return EINA_TRUE;
4709 } 4688 }
4710 4689
4711 ke = _key_event_info_new(type, key_event, bridge); 4690 ke = _key_event_info_new(type, key_event, bridge);
4712 if (!ke) return EINA_TRUE; 4691 if (!ke) return EINA_TRUE;
4713 4692
4714 msg = eldbus_message_method_call_new(ATSPI_DBUS_NAME_REGISTRY, ATSPI_DBUS_PATH_DEC, 4693 iter = eldbus_message_iter_get(req);
4715 ATSPI_DBUS_INTERFACE_DEC, "NotifyListenersSync");
4716 iter = eldbus_message_iter_get(msg);
4717 _iter_marshall_key_event(iter, ke); 4694 _iter_marshall_key_event(iter, ke);
4695 _key_event_info_free(ke);
4718 4696
4719 // timeout should be kept reasonably low to avoid delays 4697 // timeout should be kept reasonably low to avoid delays
4720 if (!eldbus_connection_send(pd->a11y_bus, msg, _on_listener_answer, ke, 100)) 4698 if (!(reply = eldbus_proxy_send_and_block(proxy, req, 100)))
4721 return EINA_TRUE; 4699 {
4700 ERR("Unable to call method " ATSPI_DBUS_INTERFACE_DEC "." "NotifyListenersSync");
4701 return EINA_TRUE;
4702 }
4703
4704 if (eldbus_message_error_get(reply, &errname, &errmsg))
4705 ERR("Error in call method " ATSPI_DBUS_INTERFACE_DEC "." "NotifyListenersSync" ": %s %s", errname, errmsg);
4706 else
4707 if (!eldbus_message_arguments_get(reply, "b", &ret))
4708 ERR("Invalid answer signature");
4709
4710 if (ret)
4711 return EINA_FALSE;
4722 4712
4723 return EINA_FALSE; 4713 return EINA_FALSE;
4724} 4714}