diff --git a/src/lib/eldbus/eldbus_service.c b/src/lib/eldbus/eldbus_service.c index b42b16e0b7..98f76de33b 100644 --- a/src/lib/eldbus/eldbus_service.c +++ b/src/lib/eldbus/eldbus_service.c @@ -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 diff --git a/src/lib/eldbus/eldbus_service.h b/src/lib/eldbus/eldbus_service.h index f36903bab1..5fa839d395 100644 --- a/src/lib/eldbus/eldbus_service.h +++ b/src/lib/eldbus/eldbus_service.h @@ -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);