diff options
author | Philip Langdale <philipl@overt.org> | 2012-08-19 14:13:25 -0700 |
---|---|---|
committer | Philip Langdale <philipl@overt.org> | 2013-01-11 20:30:18 -0800 |
commit | 634086fe0ce6336440f2b4ca60b3c523eb477d4b (patch) | |
tree | 7ac4b30cbad10acb43f71ff75d0ac2b03c6fa4ec | |
parent | 10504d057757943b4cf487d46bf3e191fe911039 (diff) | |
download | gvfs-634086fe0ce6336440f2b4ca60b3c523eb477d4b.tar.gz |
MTP: Add support for using Representative Sample of Thumbnail fails.
I have no idea if this really works, as I don't have a device
that uses it.
-rw-r--r-- | daemon/gvfsbackendmtp.c | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/daemon/gvfsbackendmtp.c b/daemon/gvfsbackendmtp.c index 9e210845..f43c9487 100644 --- a/daemon/gvfsbackendmtp.c +++ b/daemon/gvfsbackendmtp.c @@ -1135,7 +1135,7 @@ do_open_icon_for_read (GVfsBackend *backend, int ret = LIBMTP_Get_Thumbnail(G_VFS_BACKEND_MTP(backend)->device, id, &data, &size); if (ret == 0) { - g_print("File %u has sampledata: %u\n", id, size); + g_print("File %u has thumbnail: %u\n", id, size); GByteArray *bytes = g_byte_array_sized_new(size); g_byte_array_append(bytes, data, size); free(data); @@ -1143,12 +1143,24 @@ do_open_icon_for_read (GVfsBackend *backend, g_vfs_job_open_for_read_set_handle (G_VFS_JOB_OPEN_FOR_READ(job), bytes); g_vfs_job_succeeded (G_VFS_JOB (job)); } else { - g_print("File %u has no thumbnail:\n", id); - g_vfs_job_failed (G_VFS_JOB (job), - G_IO_ERROR, - G_IO_ERROR_NOT_FOUND, - _("No thumbnail for entity '%s'"), - icon_id); + LIBMTP_filesampledata_t *sample_data = LIBMTP_new_filesampledata_t(); + ret = LIBMTP_Get_Representative_Sample(G_VFS_BACKEND_MTP(backend)->device, id, sample_data); + if (ret == 0) { + g_print("File %u has sampledata: %u\n", id, size); + GByteArray *bytes = g_byte_array_sized_new(sample_data->size); + g_byte_array_append(bytes, sample_data->data, sample_data->size); + LIBMTP_destroy_filesampledata_t(sample_data); + g_vfs_job_open_for_read_set_can_seek (G_VFS_JOB_OPEN_FOR_READ(job), FALSE); + g_vfs_job_open_for_read_set_handle (G_VFS_JOB_OPEN_FOR_READ(job), bytes); + g_vfs_job_succeeded (G_VFS_JOB (job)); + } else { + g_print("File %u has no thumbnail:\n", id); + g_vfs_job_failed (G_VFS_JOB (job), + G_IO_ERROR, + G_IO_ERROR_NOT_FOUND, + _("No thumbnail for entity '%s'"), + icon_id); + } } } else { g_vfs_job_failed (G_VFS_JOB (job), |