From 3fef42da82fc271b6e2444f9ddf774543edf6d1d Mon Sep 17 00:00:00 2001 From: Giovanni Gherdovich Date: Thu, 3 Jan 2013 20:37:15 +0100 Subject: [PATCH] AVCTP: Replace calls to g_queue_free_full function The function g_queue_free_full is available only from GLib 2.32. If BlueZ has to build against GLib 2.28, as stated in the configure.ac, this patch replaces the calls to g_queue_free_full in the AVTCP module with its body, taken from the sources of GLib 2.32. --- profiles/audio/avctp.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/profiles/audio/avctp.c b/profiles/audio/avctp.c index 843de82d3..d39bbabe5 100644 --- a/profiles/audio/avctp.c +++ b/profiles/audio/avctp.c @@ -369,7 +369,7 @@ static struct avctp_pdu_handler *find_handler(GSList *list, uint8_t opcode) return NULL; } -static void pending_destroy(void *data) +static void pending_destroy(gpointer data, gpointer user_data) { struct avctp_pending_req *req = data; @@ -394,8 +394,10 @@ static void avctp_channel_destroy(struct avctp_channel *chan) g_source_remove(chan->process_id); g_free(chan->buffer); - g_queue_free_full(chan->queue, pending_destroy); - g_slist_free_full(chan->processed, pending_destroy); + g_queue_foreach(chan->queue, pending_destroy, NULL); + g_queue_free(chan->queue); + g_slist_foreach(chan->processed, pending_destroy, NULL); + g_slist_free(chan->processed); g_slist_free_full(chan->handlers, g_free); g_free(chan); } @@ -539,7 +541,7 @@ static gboolean req_timeout(gpointer user_data) p->timeout = 0; - pending_destroy(p); + pending_destroy(p, NULL); chan->p = NULL; if (chan->process_id == 0) @@ -573,7 +575,7 @@ static gboolean process_queue(void *user_data) if (p->process(p->data) == 0) break; - pending_destroy(p); + pending_destroy(p, NULL); } if (p == NULL) @@ -625,7 +627,7 @@ static void control_response(struct avctp_channel *control, return; control->processed = g_slist_remove(control->processed, p); - pending_destroy(p); + pending_destroy(p, NULL); return; } -- 2.47.3