From 53f37e559bf36ccd9e7be3ad85f37f69646a2c64 Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Wed, 11 Nov 2009 15:15:36 -0300 Subject: [PATCH] obexd: Add progress callback to service driver Progress is driver dependent thus the driver should handle this not core. --- obexd/plugins/opp.c | 8 ++++++++ obexd/src/obex.c | 5 ++--- obexd/src/service.h | 1 + 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/obexd/plugins/opp.c b/obexd/plugins/opp.c index d7f2999c6..b98145ca6 100644 --- a/obexd/plugins/opp.c +++ b/obexd/plugins/opp.c @@ -103,6 +103,13 @@ static void opp_connect(obex_t *obex, obex_object_t *obj) OBEX_ObjectSetRsp(obj, OBEX_RSP_CONTINUE, OBEX_RSP_SUCCESS); } +static void opp_progress(obex_t *obex, obex_object_t *obj) +{ + struct obex_session *os = OBEX_GetUserData(obex); + + emit_transfer_progress(os->cid, os->size, os->offset); +} + static gint opp_chkput(obex_t *obex, obex_object_t *obj) { struct obex_session *os; @@ -233,6 +240,7 @@ struct obex_service_driver driver = { .channel = OPP_CHANNEL, .record = OPP_RECORD, .connect = opp_connect, + .progress = opp_progress, .disconnect = opp_disconnect, .get = opp_get, .put = opp_put, diff --git a/obexd/src/obex.c b/obexd/src/obex.c index b333b6a9c..b1644272d 100644 --- a/obexd/src/obex.c +++ b/obexd/src/obex.c @@ -725,9 +725,8 @@ static void obex_event(obex_t *obex, obex_object_t *obj, gint mode, switch (evt) { case OBEX_EV_PROGRESS: - /* Just emit progress for Object Push */ - if (os->service->service == OBEX_OPP) - emit_transfer_progress(os->cid, os->size, os->offset); + if (os->service->progress) + os->service->progress(obex, obj); break; case OBEX_EV_ABORT: os->aborted = TRUE; diff --git a/obexd/src/service.h b/obexd/src/service.h index 32720e180..966256ce5 100644 --- a/obexd/src/service.h +++ b/obexd/src/service.h @@ -28,6 +28,7 @@ struct obex_service_driver { const guint8 *target; const gchar *record; void (*connect) (obex_t *obex, obex_object_t *obj); + void (*progress) (obex_t *obex, obex_object_t *obj); void (*get) (obex_t *obex, obex_object_t *obj); void (*put) (obex_t *obex, obex_object_t *obj); gint (*chkput) (obex_t *obex, obex_object_t *obj); -- 2.47.3