summaryrefslogtreecommitdiff
path: root/debian/patches/0100-ios8.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/0100-ios8.patch')
-rw-r--r--debian/patches/0100-ios8.patch96
1 files changed, 96 insertions, 0 deletions
diff --git a/debian/patches/0100-ios8.patch b/debian/patches/0100-ios8.patch
new file mode 100644
index 0000000..c28066f
--- /dev/null
+++ b/debian/patches/0100-ios8.patch
@@ -0,0 +1,96 @@
+Index: trunk/src/camera/ImportPage.vala
+===================================================================
+--- trunk.orig/src/camera/ImportPage.vala
++++ trunk/src/camera/ImportPage.vala
+@@ -766,6 +766,15 @@ public class ImportPage : CheckerboardPa
+ ~ImportPage() {
+ LibraryPhoto.global.contents_altered.disconnect(on_media_added_removed);
+ Video.global.contents_altered.disconnect(on_media_added_removed);
++
++ // iOS 8 issue. Release the camera here
++ if (camera != null) {
++ GPhoto.Result res = camera.exit(spin_idle_context.context);
++ if (res != GPhoto.Result.OK) {
++ // log but don't fail
++ warning("ImportPage destructor: Unable to unlock camera: %s", res.to_full_string());
++ }
++ }
+ }
+
+ public override Gtk.Toolbar get_toolbar() {
+@@ -1153,11 +1162,14 @@ public class ImportPage : CheckerboardPa
+ update_status(busy, false);
+
+ refresh_error = null;
+- refresh_result = camera.init(spin_idle_context.context);
+- if (refresh_result != GPhoto.Result.OK) {
+- warning("Unable to initialize camera: %s", refresh_result.to_full_string());
+-
+- return (refresh_result == GPhoto.Result.IO_LOCK) ? RefreshResult.LOCKED : RefreshResult.LIBRARY_ERROR;
++ // iOS 8 issue
++ if (camera == null) {
++ refresh_result = camera.init(spin_idle_context.context);
++ if (refresh_result != GPhoto.Result.OK) {
++ warning("Unable to initialize camera: %s", refresh_result.to_full_string());
++
++ return (refresh_result == GPhoto.Result.IO_LOCK) ? RefreshResult.LOCKED : RefreshResult.LIBRARY_ERROR;
++ }
+ }
+
+ update_status(true, refreshed);
+@@ -1262,13 +1274,15 @@ public class ImportPage : CheckerboardPa
+ progress_bar.set_ellipsize(Pango.EllipsizeMode.NONE);
+ progress_bar.set_text("");
+ progress_bar.set_fraction(0.0);
+-
++
++#if 0
+ GPhoto.Result res = camera.exit(spin_idle_context.context);
+ if (res != GPhoto.Result.OK) {
+ // log but don't fail
+ warning("Unable to unlock camera: %s", res.to_full_string());
+ }
+-
++#endif
++
+ if (refresh_result == GPhoto.Result.OK) {
+ update_status(false, true);
+ } else {
+@@ -1634,11 +1648,15 @@ public class ImportPage : CheckerboardPa
+ }
+
+ private void import(Gee.Iterable<DataObject> items) {
+- GPhoto.Result res = camera.init(spin_idle_context.context);
+- if (res != GPhoto.Result.OK) {
+- AppWindow.error_message(_("Unable to lock camera: %s").printf(res.to_full_string()));
+-
+- return;
++ // We now keep the camera open as long as we can to
++ // work around the iOS 8 directory name shuffling issue.
++ if (camera == null) {
++ GPhoto.Result res = camera.init(spin_idle_context.context);
++ if (res != GPhoto.Result.OK) {
++ AppWindow.error_message(_("Unable to lock camera: %s").printf(res.to_full_string()));
++
++ return;
++ }
+ }
+
+ update_status(true, refreshed);
+@@ -1774,12 +1792,15 @@ public class ImportPage : CheckerboardPa
+ }
+
+ private void close_import() {
++// iOS 8 issue
++#if 0
+ GPhoto.Result res = camera.exit(spin_idle_context.context);
+ if (res != GPhoto.Result.OK) {
+ // log but don't fail
+ message("Unable to unlock camera: %s", res.to_full_string());
+ }
+-
++#endif
++
+ update_status(false, refreshed);
+
+ on_view_changed();