--- drivers/atmodem/atutil.c | 8 +++++++- drivers/atmodem/atutil.h | 3 ++- 2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/drivers/atmodem/atutil.c b/drivers/atmodem/atutil.c index 0c6aab4..7c46dc5 100644 --- a/drivers/atmodem/atutil.c +++ b/drivers/atmodem/atutil.c @@ -45,6 +45,7 @@ struct at_util_sim_state_query { guint num_times; at_util_sim_inserted_cb_t cb; void *userdata; + GDestroyNotify data_destroy; }; static gboolean cpin_check(gpointer userdata); @@ -574,7 +575,8 @@ static gboolean cpin_check(gpointer userdata) struct at_util_sim_state_query *at_util_sim_state_query_new(GAtChat *chat, guint interval, guint num_times, at_util_sim_inserted_cb_t cb, - void *userdata) + void *userdata, + GDestroyNotify data_destroy) { struct at_util_sim_state_query *req; @@ -585,6 +587,7 @@ struct at_util_sim_state_query *at_util_sim_state_query_new(GAtChat *chat, req->num_times = num_times; req->cb = cb; req->userdata = userdata; + req->data_destroy = data_destroy; cpin_check(req); @@ -599,5 +602,8 @@ void at_util_sim_state_query_free(struct at_util_sim_state_query *req) if (req->cpin_poll_source > 0) g_source_remove(req->cpin_poll_source); + if (req->data_destroy) + req->data_destroy(req->userdata); + g_free(req); } diff --git a/drivers/atmodem/atutil.h b/drivers/atmodem/atutil.h index 5046547..5ab9901 100644 --- a/drivers/atmodem/atutil.h +++ b/drivers/atmodem/atutil.h @@ -79,7 +79,8 @@ gboolean at_util_parse_attr(GAtResult *result, const char *prefix, struct at_util_sim_state_query *at_util_sim_state_query_new(GAtChat *chat, guint interval, guint num_times, at_util_sim_inserted_cb_t cb, - void *userdata); + void *userdata, + GDestroyNotify data_destroy); void at_util_sim_state_query_free(struct at_util_sim_state_query *req); struct cb_data { -- 1.7.4.1 _______________________________________________ ofono mailing list ofono@ofono.org http://lists.ofono.org/listinfo/ofono