Diff between 5bb6f1c0b0236dee7f17be9d90ef58f6d97c9c42 and 53f37e559bf36ccd9e7be3ad85f37f69646a2c64

Changed Files

File Additions Deletions Status
obexd/plugins/opp.c +8 -0 modified
obexd/src/obex.c +2 -3 modified
obexd/src/service.h +1 -0 modified

Full Patch

diff --git a/obexd/plugins/opp.c b/obexd/plugins/opp.c
index d7f2999..b98145c 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 b333b6a..b164427 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 32720e1..966256c 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);