summaryrefslogtreecommitdiff
path: root/community/shotwell/regenerate-video-thumbnails.patch
diff options
context:
space:
mode:
Diffstat (limited to 'community/shotwell/regenerate-video-thumbnails.patch')
-rw-r--r--community/shotwell/regenerate-video-thumbnails.patch154
1 files changed, 0 insertions, 154 deletions
diff --git a/community/shotwell/regenerate-video-thumbnails.patch b/community/shotwell/regenerate-video-thumbnails.patch
deleted file mode 100644
index 8a399355e..000000000
--- a/community/shotwell/regenerate-video-thumbnails.patch
+++ /dev/null
@@ -1,154 +0,0 @@
-From 05c10b9c6107dc785808732216498ef5f3f6b87d Mon Sep 17 00:00:00 2001
-From: Clint Rogers <clinton@yorba.org>
-Date: Wed, 16 Jan 2013 00:09:42 +0000
-Subject: Causes video thumbnails to get regenerated if lost; closes #6152.
-
-Also moves some code around so regeneration for both stills and videos happens in the same spot, improving code navigability.
----
-diff --git a/src/PhotoMonitor.vala b/src/PhotoMonitor.vala
-index 40416d1..3dcc481 100644
---- a/src/PhotoMonitor.vala
-+++ b/src/PhotoMonitor.vala
-@@ -287,16 +287,7 @@ private class PhotoMonitor : MediaMonitor {
-
- return MediaMonitor.DiscoveredFile.UNKNOWN;
- }
--
-- if (!ThumbnailCache.exists(photo)) {
-- try {
-- ThumbnailCache.import_from_source(photo, true);
-- photo.notify_altered(new Alteration("image","thumbnail"));
-- } catch (Error e) {
-- // thumbnail for this object was already broken, so nothing got worse.
-- }
-- }
--
-+
- switch (state) {
- case LibraryPhotoSourceCollection.State.ONLINE:
- case LibraryPhotoSourceCollection.State.OFFLINE:
-diff --git a/src/ThumbnailCache.vala b/src/ThumbnailCache.vala
-index be97183..2a2c716 100644
---- a/src/ThumbnailCache.vala
-+++ b/src/ThumbnailCache.vala
-@@ -1,7 +1,7 @@
--/* Copyright 2009-2012 Yorba Foundation
-+/* Copyright 2009-2013 Yorba Foundation
- *
- * This software is licensed under the GNU LGPL (version 2.1 or later).
-- * See the COPYING file in this distribution.
-+ * See the COPYING file in this distribution.
- */
-
- public class Thumbnails {
-@@ -74,6 +74,7 @@ public class ThumbnailCache : Object {
- private class AsyncFetchJob : BackgroundJob {
- public ThumbnailCache cache;
- public string thumbnail_name;
-+ public ThumbnailSource source;
- public PhotoFileFormat source_format;
- public Dimensions dim;
- public Gdk.InterpType interp;
-@@ -84,13 +85,14 @@ public class ThumbnailCache : Object {
- public bool fetched = false;
-
- public AsyncFetchJob(ThumbnailCache cache, string thumbnail_name,
-- PhotoFileFormat source_format, Gdk.Pixbuf? prefetched, Dimensions dim,
-+ ThumbnailSource source, Gdk.Pixbuf? prefetched, Dimensions dim,
- Gdk.InterpType interp, AsyncFetchCallback callback, Cancellable? cancellable) {
- base(cache, async_fetch_completion_callback, cancellable);
-
- this.cache = cache;
- this.thumbnail_name = thumbnail_name;
-- this.source_format = source_format;
-+ this.source = source;
-+ this.source_format = source.get_preferred_thumbnail_format();
- this.unscaled = prefetched;
- this.dim = dim;
- this.interp = interp;
-@@ -126,11 +128,42 @@ public class ThumbnailCache : Object {
- // scale if specified
- scaled = dim.has_area() ? resize_pixbuf(unscaled, dim, interp) : unscaled;
- } catch (Error err) {
-+ // Is the problem that the thumbnail couldn't be read? If so, it's recoverable;
-+ // we'll just create it and leave this.err as null if creation works.
-+ if (err is FileError) {
-+ try {
-+ Photo photo = source as Photo;
-+ Video video = source as Video;
-+
-+ if (photo != null) {
-+ unscaled = photo.get_pixbuf(Scaling.for_best_fit(dim.width, true));
-+ photo.notify_altered(new Alteration("image","thumbnail"));
-+ return;
-+ }
-+
-+ if (video != null) {
-+ unscaled = video.create_thumbnail(dim.width);
-+ scaled = resize_pixbuf(unscaled, dim, interp);
-+ cache.save_thumbnail(cache.get_source_cached_file(source),
-+ unscaled, source);
-+ replace(source, cache.size, unscaled);
-+ return;
-+ }
-+
-+ } catch (Error e) {
-+ // Creating the thumbnail failed; tell the rest of the app.
-+ this.err = e;
-+ return;
-+ }
-+ }
-+
-+ // ...the original error wasn't from reading the file, but something else;
-+ // tell the rest of the app.
- this.err = err;
- }
- }
- }
--
-+
- private static Workers fetch_workers = null;
-
- public const ulong MAX_BIG_CACHED_BYTES = 40 * 1024 * 1024;
-@@ -230,13 +263,13 @@ public class ThumbnailCache : Object {
-
- public static void fetch_async(ThumbnailSource source, int scale, AsyncFetchCallback callback,
- Cancellable? cancellable = null) {
-- get_best_cache(scale)._fetch_async(source.get_source_id(), source.get_preferred_thumbnail_format(),
-+ get_best_cache(scale)._fetch_async(source, source.get_preferred_thumbnail_format(),
- Dimensions(), DEFAULT_INTERP, callback, cancellable);
- }
-
-- public static void fetch_async_scaled(ThumbnailSource source, int scale, Dimensions dim,
-+ public static void fetch_async_scaled(ThumbnailSource source, int scale, Dimensions dim,
- Gdk.InterpType interp, AsyncFetchCallback callback, Cancellable? cancellable = null) {
-- get_best_cache(scale)._fetch_async(source.get_source_id(),
-+ get_best_cache(scale)._fetch_async(source,
- source.get_preferred_thumbnail_format(), dim, interp, callback, cancellable);
- }
-
-@@ -343,9 +376,10 @@ public class ThumbnailCache : Object {
- return pixbuf;
- }
-
-- private void _fetch_async(string thumbnail_name, PhotoFileFormat format, Dimensions dim,
-+ private void _fetch_async(ThumbnailSource source, PhotoFileFormat format, Dimensions dim,
- Gdk.InterpType interp, AsyncFetchCallback callback, Cancellable? cancellable) {
- // check if the pixbuf is already in memory
-+ string thumbnail_name = source.get_source_id();
- Gdk.Pixbuf pixbuf = fetch_from_memory(thumbnail_name);
- if (pixbuf != null && (!dim.has_area() || Dimensions.for_pixbuf(pixbuf).equals(dim))) {
- // if no scaling operation required, callback in this context and done (otherwise,
-@@ -365,8 +399,8 @@ public class ThumbnailCache : Object {
- // situation. This may change in the future, and the caching situation will need to be
- // handled.
-
-- fetch_workers.enqueue(new AsyncFetchJob(this, thumbnail_name, format, pixbuf, dim, interp,
-- callback, cancellable));
-+ fetch_workers.enqueue(new AsyncFetchJob(this, thumbnail_name, source, pixbuf, dim,
-+ interp, callback, cancellable));
- }
-
- // Called within Gtk.main's thread context
---
-cgit v0.9