summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/atmodem/atutil.c8
-rw-r--r--drivers/atmodem/atutil.h3
2 files changed, 9 insertions, 2 deletions
diff --git a/drivers/atmodem/atutil.c b/drivers/atmodem/atutil.c
index 0c6aab46..1227b4d7 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 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 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->destroy = 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->destroy)
+ req->destroy(req->userdata);
+
g_free(req);
}
diff --git a/drivers/atmodem/atutil.h b/drivers/atmodem/atutil.h
index 5046547c..b17a4a57 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 destroy);
void at_util_sim_state_query_free(struct at_util_sim_state_query *req);
struct cb_data {