diff options
Diffstat (limited to 'src/lib/eldbus/eldbus_model_object.c')
-rw-r--r-- | src/lib/eldbus/eldbus_model_object.c | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/src/lib/eldbus/eldbus_model_object.c b/src/lib/eldbus/eldbus_model_object.c index 0cf462c380..a50c848391 100644 --- a/src/lib/eldbus/eldbus_model_object.c +++ b/src/lib/eldbus/eldbus_model_object.c @@ -18,7 +18,7 @@ static bool _eldbus_model_object_introspect(Eldbus_Model_Object_Data *, const ch static void _eldbus_model_object_introspect_cb(void *, const Eldbus_Message *, Eldbus_Pending *); static void _eldbus_model_object_connect(Eldbus_Model_Object_Data *); static void _eldbus_model_object_disconnect(Eldbus_Model_Object_Data *); -static void _eldbus_model_object_unload(Eldbus_Model_Object_Data *); +static void _eldbus_model_object_clear(Eldbus_Model_Object_Data *); static void _eldbus_model_object_introspect_nodes(Eldbus_Model_Object_Data *, const char *, Eina_List *); static char *_eldbus_model_object_concatenate_path(const char *, const char *); static void _eldbus_model_object_create_children(Eldbus_Model_Object_Data *, Eldbus_Object *, Eina_List *); @@ -93,7 +93,7 @@ _eldbus_model_object_eo_base_destructor(Eo *obj, Eldbus_Model_Object_Data *pd) eina_stringshare_del(pd->bus); eina_stringshare_del(pd->path); - _eldbus_model_object_unload(pd); + _eldbus_model_object_clear(pd); eo_do_super(obj, MY_CLASS, eo_destructor()); } @@ -131,7 +131,13 @@ _eldbus_model_object_efl_model_base_properties_load(Eo *obj, Eldbus_Model_Object if (!pd->connection) _eldbus_model_object_connect(pd); - pd->unique_name = eina_stringshare_add(eldbus_connection_unique_name_get(pd->connection)); + pd->unique_name = eina_value_new(EINA_VALUE_TYPE_STRING); + EINA_SAFETY_ON_NULL_RETURN(pd->unique_name); + + const char *unique_name = eldbus_connection_unique_name_get(pd->connection); + Eina_Bool ret = eina_value_set(pd->unique_name, unique_name); + EINA_SAFETY_ON_FALSE_RETURN(ret); + efl_model_load_set(pd->obj, &pd->load, EFL_MODEL_LOAD_STATUS_LOADED_PROPERTIES); } @@ -162,9 +168,7 @@ _eldbus_model_object_efl_model_base_property_get(Eo *obj EINA_UNUSED, if (strcmp(property, UNIQUE_NAME_PROPERTY) != 0) return EFL_MODEL_LOAD_STATUS_ERROR; - eina_value_setup(value, EINA_VALUE_TYPE_STRING); - eina_value_set(value, pd->unique_name); - + *value = pd->unique_name; return pd->load.status; } @@ -192,7 +196,7 @@ _eldbus_model_object_efl_model_base_unload(Eo *obj EINA_UNUSED, Eldbus_Model_Obj { DBG("(%p)", obj); - _eldbus_model_object_unload(pd); + _eldbus_model_object_clear(pd); efl_model_load_set(pd->obj, &pd->load, EFL_MODEL_LOAD_STATUS_UNLOADED); } @@ -363,13 +367,13 @@ _eldbus_model_object_disconnect(Eldbus_Model_Object_Data *pd) } static void -_eldbus_model_object_unload(Eldbus_Model_Object_Data *pd) +_eldbus_model_object_clear(Eldbus_Model_Object_Data *pd) { EINA_SAFETY_ON_NULL_RETURN(pd); if (!pd->connection) return; - eina_stringshare_del(pd->unique_name); + eina_value_free(pd->unique_name); pd->unique_name = NULL; Eo *child; |