diff -Nru shotwell-0.18.0/debian/changelog shotwell-0.18.0/debian/changelog --- shotwell-0.18.0/debian/changelog 2015-10-13 10:03:34.000000000 -0500 +++ shotwell-0.18.0/debian/changelog 2016-12-29 10:37:34.000000000 -0600 @@ -1,3 +1,9 @@ +shotwell (0.18.0-0ubuntu4.5) trusty; urgency=medium + + * debian/patches/ios8.patch: Fixes (LP: #1453336) + + -- Chris J Arges Thu, 29 Dec 2016 10:37:34 -0600 + shotwell (0.18.0-0ubuntu4.4) trusty; urgency=medium * debian/patches/06_uoa.patch: diff -Nru shotwell-0.18.0/debian/patches/ios8.patch shotwell-0.18.0/debian/patches/ios8.patch --- shotwell-0.18.0/debian/patches/ios8.patch 1969-12-31 18:00:00.000000000 -0600 +++ shotwell-0.18.0/debian/patches/ios8.patch 2016-12-29 10:37:31.000000000 -0600 @@ -0,0 +1,126 @@ +diff --git a/src/camera/ImportPage.vala b/src/camera/ImportPage.vala +index ba66990..b86c57f 100644 +--- a/src/camera/ImportPage.vala ++++ b/src/camera/ImportPage.vala +@@ -766,8 +766,17 @@ class PhotoImportSource : ImportSource { + ~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() { + if (toolbar == null) { + base.get_toolbar(); +@@ -1149,19 +1158,22 @@ public class ImportPage : CheckerboardPage { + private RefreshResult refresh_camera() { + if (busy) + return RefreshResult.BUSY; + + 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); + + on_view_changed(); + + progress_bar.set_ellipsize(Pango.EllipsizeMode.NONE); +@@ -1261,15 +1272,17 @@ public class ImportPage : CheckerboardPage { + progress_bar.visible = false; + 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 { + update_status(false, false); +@@ -1628,23 +1641,27 @@ public class ImportPage : CheckerboardPage { + private void on_import_selected() { + import(get_view().get_selected()); + } + + private void on_import_all() { + import(get_view().get_all()); + } + + private void import(Gee.Iterable 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); + + on_view_changed(); + progress_bar.visible = false; + + SortedList jobs = new SortedList(import_job_comparator); + Gee.ArrayList already_imported = new Gee.ArrayList(); +@@ -1772,18 +1789,21 @@ public class ImportPage : CheckerboardPage { + // to stop build warnings + local_ref = null; + } + + 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(); + } + + public override void set_display_titles(bool display) { + base.set_display_titles(display); diff -Nru shotwell-0.18.0/debian/patches/series shotwell-0.18.0/debian/patches/series --- shotwell-0.18.0/debian/patches/series 2014-10-21 10:44:15.000000000 -0500 +++ shotwell-0.18.0/debian/patches/series 2016-12-29 10:37:31.000000000 -0600 @@ -3,3 +3,4 @@ git_flickr_url.patch 06_uoa.patch git_rotate_error_out.patch +ios8.patch