summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Langdale <philipl@overt.org>2013-03-10 12:22:51 -0700
committerLinus Walleij <triad@df.lth.se>2013-03-11 13:15:23 +0100
commit50dd3478d53bbdaadce8b9eea125d0e427c7d79d (patch)
tree5d5e04817ab04acb97ab8c26e340f6b235b60228
parentcb2794ebf651dc2ce2be074b70432b6e9c839727 (diff)
downloadlibmtp-50dd3478d53bbdaadce8b9eea125d0e427c7d79d.tar.gz
Propagate StoreRemoved, ObjectAdded and ObjectRemoved events.
These events, along with the previously exposed StoreAdded event, are the most frequently implemented events on MTP devices. In the case of Google's Android MTP stack, they are the only events exposed. In the case of StoreRemoved, the param value is the storage ID and in the case of ObjectAdded/Removed, it is the entity ID. Signed-off-by: Philip Langdale <philipl@overt.org> Signed-off-by: Linus Walleij <triad@df.lth.se>
-rw-r--r--src/libmtp.c6
-rw-r--r--src/libmtp.h.in3
2 files changed, 9 insertions, 0 deletions
diff --git a/src/libmtp.c b/src/libmtp.c
index 9bfb20f..b08c5c5 100644
--- a/src/libmtp.c
+++ b/src/libmtp.c
@@ -2171,9 +2171,13 @@ int LIBMTP_Read_Event(LIBMTP_mtpdevice_t *device, LIBMTP_event_t *event, uint32_
break;
case PTP_EC_ObjectAdded:
LIBMTP_INFO("Received event PTP_EC_ObjectAdded in session %u\n", session_id);
+ *event = LIBMTP_EVENT_OBJECT_ADDED;
+ *out1 = param1;
break;
case PTP_EC_ObjectRemoved:
LIBMTP_INFO("Received event PTP_EC_ObjectRemoved in session %u\n", session_id);
+ *event = LIBMTP_EVENT_OBJECT_REMOVED;
+ *out1 = param1;
break;
case PTP_EC_StoreAdded:
LIBMTP_INFO("Received event PTP_EC_StoreAdded in session %u\n", session_id);
@@ -2184,6 +2188,8 @@ int LIBMTP_Read_Event(LIBMTP_mtpdevice_t *device, LIBMTP_event_t *event, uint32_
case PTP_EC_StoreRemoved:
LIBMTP_INFO("Received event PTP_EC_StoreRemoved in session %u\n", session_id);
/* TODO: rescan storages */
+ *event = LIBMTP_EVENT_STORE_REMOVED;
+ *out1 = param1;
break;
case PTP_EC_DevicePropChanged:
LIBMTP_INFO("Received event PTP_EC_DevicePropChanged in session %u\n", session_id);
diff --git a/src/libmtp.h.in b/src/libmtp.h.in
index de5680a..9c1c73f 100644
--- a/src/libmtp.h.in
+++ b/src/libmtp.h.in
@@ -771,6 +771,9 @@ struct LIBMTP_devicestorage_struct {
enum LIBMTP_event_enum {
LIBMTP_EVENT_NONE,
LIBMTP_EVENT_STORE_ADDED,
+ LIBMTP_EVENT_STORE_REMOVED,
+ LIBMTP_EVENT_OBJECT_ADDED,
+ LIBMTP_EVENT_OBJECT_REMOVED,
};
typedef enum LIBMTP_event_enum LIBMTP_event_t;