[arch-commits] Commit in shotwell/trunk (3 files)

Sergej Pupykin spupykin at nymeria.archlinux.org
Tue Mar 19 11:34:45 UTC 2013


    Date: Tuesday, March 19, 2013 @ 12:34:45
  Author: spupykin
Revision: 86559

upgpkg: shotwell 0.14.0-1

upd

Modified:
  shotwell/trunk/PKGBUILD
Deleted:
  shotwell/trunk/0001-Port-to-GStreamer-1.0.patch
  shotwell/trunk/regenerate-video-thumbnails.patch

-----------------------------------+
 0001-Port-to-GStreamer-1.0.patch  |  219 ------------------------------------
 PKGBUILD                          |   24 ---
 regenerate-video-thumbnails.patch |  154 -------------------------
 3 files changed, 6 insertions(+), 391 deletions(-)

Deleted: 0001-Port-to-GStreamer-1.0.patch
===================================================================
--- 0001-Port-to-GStreamer-1.0.patch	2013-03-19 10:30:42 UTC (rev 86558)
+++ 0001-Port-to-GStreamer-1.0.patch	2013-03-19 11:34:45 UTC (rev 86559)
@@ -1,219 +0,0 @@
-From 4db67e385c9c2d89947077f1520aa31af2538d65 Mon Sep 17 00:00:00 2001
-From: Alban Browaeys <prahal at yahoo.com>
-Date: Wed, 09 Jan 2013 01:11:27 +0000
-Subject: Ports Shotwell to GStreamer 1.0. Closes #6055.
-
----
-diff --git a/Makefile b/Makefile
-index 2488f82..5a7e262 100644
---- a/Makefile
-+++ b/Makefile
-@@ -37,7 +37,7 @@ EXTRAS_SUPPORTED_LANGUAGES=fr de it es pl et sv sk lv pt bg bn nl da zh_CN el ru
- LOCAL_LANG_DIR=locale-langpack
- SYSTEM_LANG_DIR := $(DESTDIR)$(PREFIX)/share/locale
- 
--VALAFLAGS := -g --enable-checking --thread --fatal-warnings --enable-deprecated $(USER_VALAFLAGS)
-+VALAFLAGS := -g --enable-checking --thread --fatal-warnings --enable-deprecated --enable-experimental $(USER_VALAFLAGS)
- ifdef UNITY_SUPPORT
- VALAFLAGS := $(VALAFLAGS) --define UNITY_SUPPORT
- endif
-@@ -293,9 +293,9 @@ EXT_PKGS = \
- 	gio-unix-2.0 \
- 	glib-2.0 \
- 	gmodule-2.0 \
--	gstreamer-0.10 \
--	gstreamer-base-0.10 \
--	gstreamer-pbutils-0.10 \
-+	gstreamer-1.0 \
-+	gstreamer-base-1.0 \
-+	gstreamer-pbutils-1.0 \
- 	gtk+-3.0 \
- 	gudev-1.0 \
- 	libexif \
-@@ -314,8 +314,8 @@ endif
- THUMBNAILER_PKGS = \
-     gtk+-3.0 \
-     gee-1.0 \
--    gstreamer-0.10 \
--    gstreamer-base-0.10
-+    gstreamer-1.0 \
-+    gstreamer-base-1.0
- 
- DIRECT_LIBS =
- 
-@@ -325,10 +325,10 @@ EXT_PKG_VERSIONS = \
- 	gio-unix-2.0 >= 2.20 \
- 	glib-2.0 >= $(MIN_GLIB_VERSION) \
- 	gmodule-2.0 >= 2.24.0 \
--	gstreamer-0.10 >= 0.10.28 \
--	gstreamer-base-0.10 >= 0.10.28 \
--	gstreamer-plugins-base-0.10 >= 0.10.32 \
--	gstreamer-pbutils-0.10 >= 0.10.32 \
-+	gstreamer-1.0 >= 1.0.0 \
-+	gstreamer-base-1.0 >= 1.0.0 \
-+	gstreamer-plugins-base-1.0 >= 1.0.0 \
-+	gstreamer-pbutils-1.0 >= 1.0.0 \
- 	gtk+-3.0 >= 3.0.11 \
- 	gudev-1.0 >= 145 \
- 	libexif >= 0.6.16 \
-@@ -683,7 +683,7 @@ $(VALA_STAMP): $(EXPANDED_SRC_FILES) $(EXPANDED_VAPI_FILES) $(GPHOTO_VAPI_FILE)
- 	$(call check_valac_version)
- 	@echo Compiling Vala code...
- 	@mkdir -p $(BUILD_DIR)
--	@$(VALAC) --ccode --directory=$(BUILD_DIR) --basedir=src \
-+	$(VALAC) --ccode --directory=$(BUILD_DIR) --basedir=src \
- 		$(foreach pkg,$(VALA_PKGS),--pkg=$(pkg)) \
- 		$(foreach vapidir,$(VAPI_DIRS),--vapidir=$(vapidir)) \
- 		$(foreach def,$(DEFINES),-X -D$(def)) \
-diff --git a/src/VideoSupport.vala b/src/VideoSupport.vala
-index deb45e2..f679bd0 100644
---- a/src/VideoSupport.vala
-+++ b/src/VideoSupport.vala
-@@ -163,8 +163,8 @@ public class VideoReader {
-                 file.get_path()));
-         
-         try {
--            Gst.Discoverer d = new Gst.Discoverer((Gst.ClockTime) (Gst.SECOND * 5));
--            Gst.DiscovererInfo info = d.discover_uri(file.get_uri());
-+            Gst.PbUtils.Discoverer d = new Gst.PbUtils.Discoverer((Gst.ClockTime) (Gst.SECOND * 5));
-+            Gst.PbUtils.DiscovererInfo info = d.discover_uri(file.get_uri());
-             
-             clip_duration = ((double) info.get_duration()) / 1000000000.0;
-             
-@@ -172,7 +172,7 @@ public class VideoReader {
-             // TODO: Note that TAG_DATE can be changed to TAG_DATE_TIME in the future
-             // (and the corresponding output struct) in order to implement #2836.
-             Date? video_date = null;
--            if (info.get_tags() != null && info.get_tags().get_date(Gst.TAG_DATE, out video_date)) {
-+            if (info.get_tags() != null && info.get_tags().get_date(Gst.Tags.DATE, out video_date)) {
-                 timestamp = new DateTime.local(video_date.get_year(), video_date.get_month(), 
-                     video_date.get_day(), 0, 0, 0);
-             }
-@@ -323,7 +323,7 @@ public class Video : VideoSource, Flaggable, Monitorable, Dateable {
-         Gst.init(ref fake_unowned_args);
-         
-         int saved_state = Config.Facade.get_instance().get_video_interpreter_state_cookie();
--        current_state = (int) Gst.Registry.get_default().get_feature_list_cookie();
-+        current_state = (int) Gst.Registry.get().get_feature_list_cookie();
-         if (saved_state == Config.Facade.NO_VIDEO_INTERPRETER_STATE) {
-             message("interpreter state cookie not found; assuming all video thumbnails are out of date");
-             interpreter_state_changed = true;
-diff --git a/thumbnailer/shotwell-video-thumbnailer.vala b/thumbnailer/shotwell-video-thumbnailer.vala
-index 79a2d7e..ae1e537 100644
---- a/thumbnailer/shotwell-video-thumbnailer.vala
-+++ b/thumbnailer/shotwell-video-thumbnailer.vala
-@@ -10,22 +10,15 @@
- // Shotwell Thumbnailer takes in a video file and returns a thumbnail to stdout.  This is
- // a replacement for totem-video-thumbnailer
- class ShotwellThumbnailer {
--    const string caps_string = """video/x-raw-rgb,bpp = (int) 32, depth = (int) 32,
--                                      endianness = (int) BIG_ENDIAN,
--                                      red_mask = (int)   0xFF000000,
--                                      green_mask = (int) 0x00FF0000,
--                                      blue_mask = (int)  0x0000FF00,
--                                      width = (int) [ 1, max ],
--                                      height = (int) [ 1, max ],
--                                      framerate = (fraction) [ 0, max ]""";
-+    const string caps_string = """video/x-raw,format=RGB,bpp=32,depth=32,pixel-aspect-ratio=1/1""";
-     
-     public static int main(string[] args) {
-         Gst.Element pipeline, sink;
-         int width, height;
--        Gst.Buffer buffer;
-+        Gst.Sample sample;
-         string descr;
-         Gdk.Pixbuf pixbuf;
--        int64 position;
-+        int64 duration, position;
-         Gst.StateChangeReturn ret;
-         bool res;
-         
-@@ -36,7 +29,7 @@ class ShotwellThumbnailer {
-             return 1;
-         }
-         
--        descr = "filesrc location=\"%s\" ! decodebin2 ! ffmpegcolorspace ! ".printf(args[1]) + 
-+        descr = "filesrc location=\"%s\" ! decodebin ! videoconvert ! videoscale ! ".printf(args[1]) +
-             "appsink name=sink caps=\"%s\"".printf(caps_string);
-         
-         try {
-@@ -64,29 +57,41 @@ class ShotwellThumbnailer {
-                 stderr.printf("Failed to play the file: couldn't get state.\n");
-                 return 3;
-             }
--            
--            // Seek to the a position in the file. Most files have a black first frame so
--            // by seeking to somewhere else we have a bigger chance of getting something
--            // more interesting. An optimization would be to detect black images and then
--            // seek a little more.
--            position = (int64) (Gst.Format.PERCENT_MAX * 0.05);
--            pipeline.seek_simple(Gst.Format.PERCENT, Gst.SeekFlags.KEY_UNIT | Gst.SeekFlags.FLUSH , position);
--            
--            // Get the preroll buffer from appsink, this block untils appsink really
--            // prerolls.
--            GLib.Signal.emit_by_name(sink, "pull-preroll", out buffer, null);
--            
-+
-+            /* get the duration */
-+            pipeline.query_duration (Gst.Format.TIME, out duration);
-+
-+            if (duration != -1) {
-+                /* we have a duration, seek to 5% */
-+                position = duration * 5 / 100;
-+            } else {
-+                /* no duration, seek to 1 second, this could EOS */
-+                position = 1 * Gst.SECOND;
-+            }
-+
-+            /* seek to the a position in the file. Most files have a black first frame so
-+             * by seeking to somewhere else we have a bigger chance of getting something
-+             * more interesting. An optimisation would be to detect black images and then
-+             * seek a little more */
-+            pipeline.seek_simple (Gst.Format.TIME, Gst.SeekFlags.KEY_UNIT | Gst.SeekFlags.FLUSH, position);
-+
-+            /* get the preroll buffer from appsink, this block untils appsink really
-+             * prerolls */
-+            GLib.Signal.emit_by_name (sink, "pull-preroll", out sample, null);
-+
-             // if we have a buffer now, convert it to a pixbuf. It's possible that we
-             // don't have a buffer because we went EOS right away or had an error.
--            if (buffer != null) {
-+            if (sample != null) {
-+                Gst.Buffer buffer;
-                 Gst.Caps caps;
-                 Gst.Structure s;
-+                Gst.MapInfo mapinfo;
- 
-                 // Get the snapshot buffer format now. We set the caps on the appsink so
-                 // that it can only be an rgb buffer. The only thing we have not specified
-                 // on the caps is the height, which is dependant on the pixel-aspect-ratio
-                 // of the source material.
--                caps = buffer.get_caps();
-+                caps = sample.get_caps();
-                 if (caps == null) {
-                     stderr.printf("could not get snapshot format\n");
-                     return 5;
-@@ -101,14 +106,18 @@ class ShotwellThumbnailer {
-                     stderr.printf("Could not get snapshot dimension\n");
-                     return 6;
-                 }
--                
-+
-+                buffer = sample.get_buffer();
-+                buffer.map(out mapinfo, Gst.MapFlags.READ);
-+
-                 // Create pixmap from buffer and save, gstreamer video buffers have a stride
-                 // that is rounded up to the nearest multiple of 4.
--                pixbuf = new Gdk.Pixbuf.from_data(buffer.data, Gdk.Colorspace.RGB, true, 8, 
--                    width, height, width * 4, null);
-+                pixbuf = new Gdk.Pixbuf.from_data(mapinfo.data, Gdk.Colorspace.RGB, false, 8,
-+                    width, height, (((width * 3)+3)&~3), null);
-                 
-                 // Save the pixbuf.
-                 pixbuf.save("/dev/stdout", "png");
-+                buffer.unmap(mapinfo);
-             } else {
-                 stderr.printf("Could not make snapshot\n");
-                 return 10;
---
-cgit v0.9

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2013-03-19 10:30:42 UTC (rev 86558)
+++ PKGBUILD	2013-03-19 11:34:45 UTC (rev 86559)
@@ -4,8 +4,8 @@
 # Contributor: Joeny Ang <ang(dot)joeny(at)gmail(dot)com>
 
 pkgname=shotwell
-pkgver=0.13.1
-pkgrel=6
+pkgver=0.14.0
+pkgrel=1
 pkgdesc="A digital photo organizer designed for the GNOME desktop environment"
 arch=('i686' 'x86_64')
 url="http://yorba.org/shotwell/"
@@ -15,28 +15,16 @@
 	 'gst-plugins-base' 'libgphoto2')
 makedepends=('intltool' 'vala>=0.17.2' 'libunique3')
 install=shotwell.install
-source=("http://yorba.org/download/shotwell/0.13/shotwell-${pkgver}.tar.xz"
-	"no-libexec.patch"
-        "0001-Port-to-GStreamer-1.0.patch"
-        "regenerate-video-thumbnails.patch")
-md5sums=('71eb1346093705ca2b37c12a21994d14'
-         'b4124e022c98b4382530e6fbcef965e2'
-         '666d28c2a1b78632df8ab5f24c3aa3cd'
-         '4b70442c6d9c04f3be23426ef92adb43')
+source=("http://yorba.org/download/shotwell/stable/shotwell-$pkgver.tar.xz"
+	"no-libexec.patch")
+md5sums=('14b8e02091376fa69ac0a04ba61ea608'
+         'b4124e022c98b4382530e6fbcef965e2')
 
 build() {
   cd "${srcdir}/${pkgname}-${pkgver}"
 
   patch -p1 <$srcdir/no-libexec.patch
 
-  # Port to GSreamer 1.0 (video thumbnailer)
-  # http://redmine.yorba.org/issues/6055
-  patch -p1 <$srcdir/0001-Port-to-GStreamer-1.0.patch
-
-  # Regenerate video thumbnails on lost
-  # http://redmine.yorba.org/issues/6152
-  patch -p1 <$srcdir/regenerate-video-thumbnails.patch
-
   ./configure --prefix=/usr \
 	--disable-schemas-compile \
 	--disable-desktop-update \

Deleted: regenerate-video-thumbnails.patch
===================================================================
--- regenerate-video-thumbnails.patch	2013-03-19 10:30:42 UTC (rev 86558)
+++ regenerate-video-thumbnails.patch	2013-03-19 11:34:45 UTC (rev 86559)
@@ -1,154 +0,0 @@
-From 05c10b9c6107dc785808732216498ef5f3f6b87d Mon Sep 17 00:00:00 2001
-From: Clint Rogers <clinton at 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




More information about the arch-commits mailing list