e/connman: split stringshare and non-stringshare

search



SVN revision: 76053
This commit is contained in:
Lucas De Marchi 2012-09-03 22:00:04 +00:00
parent 091380518e
commit 339cd51087
2 changed files with 23 additions and 8 deletions

View File

@ -73,6 +73,13 @@ extern int E_CONNMAN_EVENT_MANAGER_OUT;
unsigned int e_connman_system_init(E_DBus_Connection *edbus_conn) EINA_ARG_NONNULL(1);
unsigned int e_connman_system_shutdown(void);
/* Requests from UI */
/**
* Find service using a non-stringshared path
*/
struct Connman_Service *econnman_manager_find_service(struct Connman_Manager *cm, const char *path) EINA_ARG_NONNULL(1, 2);
/* UI calls from econnman */
/*

View File

@ -287,12 +287,11 @@ static struct Connman_Service *_service_new(const char *path, DBusMessageIter *p
return cs;
}
static struct Connman_Service *_manager_find_service_by_path(struct Connman_Manager *cm,
const char *path)
static struct Connman_Service *_manager_find_service_stringshared(
struct Connman_Manager *cm, const char *path)
{
struct Connman_Service *cs, *found = NULL;
path = eina_stringshare_add(path);
EINA_INLIST_FOREACH(cm->services, cs)
{
if (cs->obj.path == path)
@ -300,12 +299,21 @@ static struct Connman_Service *_manager_find_service_by_path(struct Connman_Mana
found = cs;
break;
}
}
eina_stringshare_del(path);
}
return found;
}
struct Connman_Service *econnman_manager_find_service(struct Connman_Manager *cm,
const char *path)
{
struct Connman_Service *cs;
path = eina_stringshare_add(path);
cs = _manager_find_service_stringshared(cm, path);
eina_stringshare_del(path);
return cs;
}
static void _manager_services_remove(struct Connman_Manager *cm,
DBusMessageIter *array)
{
@ -322,7 +330,7 @@ static void _manager_services_remove(struct Connman_Manager *cm,
continue;
}
dbus_message_iter_get_basic(array, &path);
cs = _manager_find_service_by_path(cm, path);
cs = econnman_manager_find_service(cm, path);
if (cs == NULL)
{
ERR("Received object path '%s' to remove, but it's not in list",
@ -379,7 +387,7 @@ static void _manager_services_changed(void *data, DBusMessage *msg)
}
dbus_message_iter_get_basic(&entry, &path);
cs = _manager_find_service_by_path(cm, path);
cs = econnman_manager_find_service(cm, path);
dbus_message_iter_next(&entry);
if (dbus_message_iter_get_arg_type(&entry) != DBUS_TYPE_ARRAY)