From 2883c4d173f51d90d8d3736b9e3407a73539c601 Mon Sep 17 00:00:00 2001 From: Christian Fetzer Date: Wed, 29 May 2013 12:45:18 +0300 Subject: [PATCH] obexd: Use process callback to queue transfers This generalizes the existing queuing of transfers by using the process callback of pending_request. --- obexd/client/session.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/obexd/client/session.c b/obexd/client/session.c index 33e20575c..a831e4140 100644 --- a/obexd/client/session.c +++ b/obexd/client/session.c @@ -678,6 +678,16 @@ static void session_queue(struct pending_request *p) p->session); } +static int session_process_transfer(struct pending_request *p, GError **err) +{ + if (!obc_transfer_start(p->transfer, p->session->obex, err)) + return -1; + + DBG("Tranfer(%p) started", p->transfer); + p->session->p = p; + return 0; +} + guint obc_session_queue(struct obc_session *session, struct obc_transfer *transfer, session_callback_t func, void *user_data, @@ -700,7 +710,8 @@ guint obc_session_queue(struct obc_session *session, obc_transfer_set_callback(transfer, transfer_complete, session); - p = pending_request_new(session, NULL, transfer, func, user_data, NULL); + p = pending_request_new(session, session_process_transfer, transfer, + func, user_data, NULL); session_queue(p); return p->id; } @@ -720,12 +731,8 @@ static void session_process_queue(struct obc_session *session) while ((p = g_queue_pop_head(session->queue))) { GError *gerr = NULL; - DBG("Transfer(%p) started", p->transfer); - - if (obc_transfer_start(p->transfer, session->obex, &gerr)) { - session->p = p; + if (p->process(p, &gerr) == 0) break; - } if (p->func) p->func(session, p->transfer, gerr, p->data); -- 2.47.3