[gvfs] afc: Remove attempts at thumbnailing photos



commit fe83e098679e120c0be2586b83f18f2fee4ea570
Author: Bastien Nocera <hadess hadess net>
Date:   Wed May 20 14:34:31 2015 +0200

    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

 daemon/gvfsbackendafc.c |  190 -----------------------------------------------
 1 files changed, 0 insertions(+), 190 deletions(-)
---
diff --git a/daemon/gvfsbackendafc.c b/daemon/gvfsbackendafc.c
index 5762571..4ed6f69 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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]