summaryrefslogtreecommitdiff
path: root/daemon/gvfsbackendafc.c
diff options
context:
space:
mode:
authorBastien Nocera <hadess@hadess.net>2015-05-20 14:34:31 +0200
committerBastien Nocera <hadess@hadess.net>2016-03-19 13:30:11 +0100
commitfe83e098679e120c0be2586b83f18f2fee4ea570 (patch)
tree501603bd816b29ed8d922a22bb5cfb0fda78c07b /daemon/gvfsbackendafc.c
parent6116c50e11cc9e6d32f55147c4912af11b526e2c (diff)
downloadgvfs-fe83e098679e120c0be2586b83f18f2fee4ea570.tar.gz
afc: Remove attempts at thumbnailing photos
iDevices had a list of thumbnails available through afc:/// for photos stored in the DCIM/ sub-directory, but the code to handle this was always pretty fragile, relying on the iOS version to know which of a number of different ways the thumbnails could be called or where they would be stored. It's easier to create the thumbnails ourselves from the JPG files, or even access photos through PTP so that thumbnails are readily accessible and in a way that doesn't change with each iOS release. https://bugzilla.gnome.org/show_bug.cgi?id=749639
Diffstat (limited to 'daemon/gvfsbackendafc.c')
-rw-r--r--daemon/gvfsbackendafc.c190
1 files changed, 0 insertions, 190 deletions
diff --git a/daemon/gvfsbackendafc.c b/daemon/gvfsbackendafc.c
index 5762571c..4ed6f690 100644
--- a/daemon/gvfsbackendafc.c
+++ b/daemon/gvfsbackendafc.c
@@ -43,18 +43,6 @@
int g_blocksize = 4096; /* assume this is the default block size */
typedef enum {
- IOS_UNKNOWN = 0,
- IOS1,
- IOS2,
- IOS3,
- IOS4,
- IOS5,
- IOS6,
- IOS7,
- IOS8
-} HostOSVersion;
-
-typedef enum {
ACCESS_MODE_UNDEFINED = 0,
ACCESS_MODE_AFC,
ACCESS_MODE_HOUSE_ARREST
@@ -82,7 +70,6 @@ struct _GVfsBackendAfc {
char *model;
gboolean connected;
AccessMode mode;
- HostOSVersion version;
idevice_t dev;
afc_client_t afc_cli; /* for ACCESS_MODE_AFC */
@@ -587,55 +574,6 @@ g_vfs_backend_afc_mount (GVfsBackend *backend,
g_vfs_backend_set_symbolic_icon_name (G_VFS_BACKEND(self), "phone-apple-iphone-symbolic");
}
- /* Get the major OS version */
- value = NULL;
- self->version = IOS_UNKNOWN;
- lerr = lockdownd_get_value (lockdown_cli, NULL, "ProductVersion", &value);
- if (G_LIKELY(g_vfs_backend_lockdownd_check (lerr, G_VFS_JOB(job)) == 0))
- {
- if (plist_get_node_type(value) == PLIST_STRING)
- {
- char *version_string = NULL;
-
- plist_get_string_val(value, &version_string);
- if (version_string)
- {
- /* parse version */
- int maj = 0;
- int min = 0;
- int rev = 0;
-
- sscanf(version_string, "%d.%d.%d", &maj, &min, &rev);
- free(version_string);
-
- switch (maj)
- {
- case 2:
- self->version = IOS2;
- break;
- case 3:
- self->version = IOS3;
- break;
- case 4:
- self->version = IOS4;
- break;
- case 5:
- self->version = IOS5;
- break;
- case 6:
- self->version = IOS6;
- break;
- case 7:
- self->version = IOS7;
- break;
- case 8:
- self->version = IOS8;
- break;
- }
- }
- }
- }
-
/* save the old client until we connect with the handshake */
lockdown_cli_old = lockdown_cli;
lockdown_cli = NULL;
@@ -1642,134 +1580,6 @@ g_vfs_backend_afc_set_info_from_afcinfo (GVfsBackendAfc *self,
g_file_info_set_is_hidden (info, hidden);
g_file_info_set_attribute_boolean (info, G_FILE_ATTRIBUTE_ACCESS_CAN_TRASH, FALSE);
-
- /* Check for matching thumbnail in .MISC directory */
- if (g_file_attribute_matcher_matches (matcher, G_FILE_ATTRIBUTE_PREVIEW_ICON) &&
- self->mode == ACCESS_MODE_AFC &&
- path != NULL &&
- g_str_has_prefix (path, "/DCIM/") &&
- hidden == FALSE &&
- basename != NULL &&
- type == G_FILE_TYPE_REGULAR &&
- strlen (path) > 1 &&
- strlen (basename) > 4 &&
- basename[strlen(basename) - 4] == '.')
- {
- char *thumb_uri, *thumb_path;
- char *no_suffix;
- char **thumb_afcinfo;
- GFile *thumb_file;
- const char *suffix;
-
- GMountSpec *mount_spec;
- const char *port;
-
- /* Handle thumbnails for movies as well */
- if (g_str_has_suffix (path, ".MOV"))
- suffix = "JPG";
- else
- suffix = "THM";
-
- if (self->version == IOS2)
- {
- /* The thumbnails are side-by-side with the
- * THM files in iOS2 */
-
- /* Remove the suffix */
- no_suffix = g_strndup (path, strlen (path) - 3);
- /* Replace with THM */
- thumb_path = g_strdup_printf ("%s%s", no_suffix, suffix);
- g_free (no_suffix);
- }
- else if (self->version == IOS3)
- {
- char *parent, *ptr;
- char *thumb_base;
-
- /* The thumbnails are in the .MISC sub-directory, relative to the
- * image itself, so:
- * afc://xxx/DCIM/100APPLE/IMG_0001.JPG
- * =>
- * afc://xxx/DCIM/100APPLE/.MISC/IMG_0001.THM
- */
-
- /* Parent directory */
- ptr = strrchr (path, '/');
- if (ptr == NULL)
- return;
- parent = g_strndup (path, ptr - path);
-
- /* Basename with suffix replaced */
- no_suffix = g_strndup (basename, strlen (basename) - 3);
- thumb_base = g_strdup_printf ("%s%s", no_suffix, suffix);
- g_free (no_suffix);
-
- /* Full thumbnail path */
- thumb_path = g_build_filename (parent, ".MISC", thumb_base, NULL);
-
- g_free (parent);
- g_free (thumb_base);
- }
- else if (self->version >= IOS4)
- {
- char **components;
-
- /* The thumbnails are in the PhotoData/ so:
- * afc://xxx/DCIM/100APPLE/IMG_0001.JPG
- * =>
- * afc://xxx/PhotoData/100APPLE/IMG_0001.THM
- */
-
- /* Replace the JPG by THM */
- no_suffix = g_strndup (path, strlen (path) - 3);
- thumb_path = g_strdup_printf ("%s%s", no_suffix, suffix);
- g_free (no_suffix);
-
- /* Replace DCIM with PhotoData */
- components = g_strsplit (thumb_path, "/", -1);
- g_free (thumb_path);
- for (i = 0; components[i] != NULL; i++)
- {
- if (g_str_equal (components[i], "DCIM"))
- {
- g_free (components[i]);
- components[i] = g_strdup ("PhotoData");
- }
- }
- thumb_path = g_strjoinv ("/", components);
- g_strfreev (components);
- }
- else
- {
- thumb_path = NULL;
- }
-
- thumb_afcinfo = NULL;
- if (thumb_path == NULL ||
- afc_get_file_info (self->afc_cli, thumb_path, &thumb_afcinfo) != 0)
- {
- g_strfreev (thumb_afcinfo);
- g_free (thumb_path);
- return;
- }
- g_strfreev (thumb_afcinfo);
-
- /* Get the URI for the thumbnail file */
- mount_spec = g_vfs_backend_get_mount_spec (G_VFS_BACKEND (self));
- port = g_mount_spec_get (mount_spec, "port");
- thumb_uri = g_strdup_printf ("afc://%s%s%s", self->uuid, port ? port : "", thumb_path);
- g_free (thumb_path);
- thumb_file = g_file_new_for_uri (thumb_uri);
- g_free (thumb_uri);
-
- /* Set preview icon */
- icon = g_file_icon_new (thumb_file);
- g_object_unref (thumb_file);
- g_file_info_set_attribute_object (info,
- G_FILE_ATTRIBUTE_PREVIEW_ICON,
- G_OBJECT (icon));
- g_object_unref (icon);
- }
}
static void