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_init(E_DBus_Connection *edbus_conn) EINA_ARG_NONNULL(1);
unsigned int e_connman_system_shutdown(void); 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 */ /* UI calls from econnman */
/* /*

View File

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