client: Proxy interface destruction logic

This commit is contained in:
Tim Kourt 2017-04-07 14:55:33 -07:00 committed by Denis Kenzior
parent 0d7d5a427d
commit a21db05517
2 changed files with 18 additions and 4 deletions

View File

@ -171,6 +171,20 @@ static void proxy_interface_create(const char *path,
proxy_interface_bind_dependencies(path);
}
static void proxy_interface_destroy(void *data)
{
struct proxy_interface *proxy = data;
l_free(proxy->path);
if (proxy->type->ops->destroy)
proxy->type->ops->destroy(proxy->data);
proxy->type = NULL;
l_free(proxy);
}
static void interfaces_added_callback(struct l_dbus_message *message,
void *user_data)
{
@ -252,6 +266,9 @@ static void service_appeared_callback(struct l_dbus *dbus, void *user_data)
static void service_disappeared_callback(struct l_dbus *dbus,
void *user_data)
{
l_queue_clear(proxy_interfaces, proxy_interface_destroy);
display_disable_cmd_prompt();
}
static void dbus_disconnect_callback(void *user_data)
@ -259,10 +276,6 @@ static void dbus_disconnect_callback(void *user_data)
l_main_quit();
}
static void proxy_interface_destroy(void *data)
{
}
bool dbus_proxy_init(void)
{
if (dbus)

View File

@ -24,6 +24,7 @@ struct proxy_interface;
struct proxy_interface_type_ops {
void *(*create)(void);
void (*destroy)(void *data);
};
struct proxy_interface_type {