eldbus: Fix interface_unregister()
authorJosé Roberto de Souza <zehortigoza@gmail.com>
Sat, 23 Mar 2013 17:43:05 +0000 (14:43 -0300)
committerJosé Roberto de Souza <jose.souza@intel.com>
Mon, 5 Aug 2013 16:25:25 +0000 (13:25 -0300)
src/lib/eldbus_service.c
src/lib/eldbus_service.h

index b42b16e..98f76de 100644 (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
index f36903b..5fa839d 100644 (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);