eldbus: Fix interface_unregister()

This commit is contained in:
José Roberto de Souza 2013-03-23 14:43:05 -03:00 committed by Lucas De Marchi
parent 9e4dc299a7
commit 12855e5fe7
2 changed files with 6 additions and 11 deletions

View File

@ -1082,17 +1082,12 @@ _on_connection_free(void *data, const void *dead_pointer EINA_UNUSED)
EAPI void
eldbus_service_interface_unregister(Eldbus_Service_Interface *iface)
{
Eldbus_Service_Object *obj;
ELDBUS_SERVICE_INTERFACE_CHECK(iface);
if (!eina_hash_find(iface->obj->interfaces, objmanager->name))
{
//properties + introspectable + iface that user wants unregister
if (eina_hash_population(iface->obj->interfaces) < 4)
eldbus_service_object_unregister(iface);
return;
}
eina_hash_del(iface->obj->interfaces, NULL, iface);
iface->obj->introspection_dirty = EINA_TRUE;
obj = iface->obj;
eina_hash_del(obj->interfaces, NULL, iface);
_interface_free(iface);
obj->introspection_dirty = EINA_TRUE;
}
EAPI void

View File

@ -110,8 +110,8 @@ EAPI Eldbus_Service_Interface *eldbus_service_interface_register(Eldbus_Connecti
/**
* @brief Unregister a interface.
* If this is the last interface of the object path, the object path will be
* removed too.
* Note: This doesn't unregister the object path if interface count reaches 0.
* Use eldbus_service_object_unregister() to unregister the object.
*/
EAPI void eldbus_service_interface_unregister(Eldbus_Service_Interface *iface) EINA_ARG_NONNULL(1);