Hello community,

here is the log from the commit of package sushi for openSUSE:Factory checked 
in at 2016-03-29 14:30:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/sushi (Old)
 and      /work/SRC/openSUSE:Factory/.sushi.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "sushi"

Changes:
--------
--- /work/SRC/openSUSE:Factory/sushi/sushi.changes      2015-11-16 
18:52:07.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.sushi.new/sushi.changes 2016-03-29 
14:30:08.000000000 +0200
@@ -1,0 +2,14 @@
+Fri Mar  4 08:44:02 UTC 2016 - dims...@opensuse.org
+
+- Update to version 3.19.90:
+  + Port to ClutterGst 3.0.
+  + Don't assume X.
+  + Don't use deprecated style classes.
+  + Port to GTask.
+  + Fix toolbar spacing.
+  + Resync font renderer from gnome-font-viewer.
+- Drop sushi-port-to-clutter-gst-3.0.patch: fixed upstream.
+- Remove libtool BuildRequires and call to autoreconf, as we no
+  longer carry any patches.
+
+-------------------------------------------------------------------

Old:
----
  sushi-3.18.0.tar.xz
  sushi-port-to-clutter-gst-3.0.patch

New:
----
  sushi-3.19.90.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ sushi.spec ++++++
--- /var/tmp/diff_new_pack.ylqSCu/_old  2016-03-29 14:30:09.000000000 +0200
+++ /var/tmp/diff_new_pack.ylqSCu/_new  2016-03-29 14:30:09.000000000 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package sushi
 #
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,19 +17,15 @@
 
 
 Name:           sushi
-Version:        3.18.0
+Version:        3.19.90
 Release:        0
 Summary:        Quick Previewer for Nautilus
 License:        SUSE-GPL-2.0-with-plugin-exception
 Group:          Productivity/File utilities
 Url:            http://www.gnome.org
-Source0:        
http://download.gnome.org/sources/sushi/3.18/%{name}-%{version}.tar.xz
-# PATCH-FIX-UPSTREAM sushi-port-to-clutter-gst-3.0.patch bgo#756725 
zai...@opensuse.org -- Port to clutter-gst-3.0
-Patch0:         sushi-port-to-clutter-gst-3.0.patch
+Source0:        
http://download.gnome.org/sources/sushi/3.19/%{name}-%{version}.tar.xz
 BuildRequires:  gobject-introspection-devel
 BuildRequires:  intltool
-# Needed for patch0
-BuildRequires:  libtool
 %ifarch %ix86 x86_64
 BuildRequires:  unoconv
 %endif
@@ -64,11 +60,8 @@
 %lang_package
 %prep
 %setup -q
-%patch0 -p1
 
 %build
-# Needed for patch0
-autoreconf -fiv
 %configure
 make %{?_smp_mflags}
 

++++++ sushi-3.18.0.tar.xz -> sushi-3.19.90.tar.xz ++++++
++++ 1677 lines of diff (skipped)
++++    retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/sushi-3.18.0/NEWS new/sushi-3.19.90/NEWS
--- old/sushi-3.18.0/NEWS       2015-09-23 01:04:53.000000000 +0200
+++ new/sushi-3.19.90/NEWS      2016-03-04 05:35:01.000000000 +0100
@@ -1,3 +1,13 @@
+3.19.90 - "Hardcore Chilling"
+=============================
+
+- Port to ClutterGst 3.0 (Lionel Landwerlin)
+- Don't assume X (Matthias Clasen)
+- Don't use deprecated style classes (Matthias Clasen)
+- Port to GTask
+- Fix toolbar spacing
+- Resync font renderer from gnome-font-viewer
+
 3.18.0 - "Symbiosis"
 ====================
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/sushi-3.18.0/configure.ac new/sushi-3.19.90/configure.ac
--- old/sushi-3.18.0/configure.ac       2015-09-23 01:04:59.000000000 +0200
+++ new/sushi-3.19.90/configure.ac      2016-03-04 05:35:10.000000000 +0100
@@ -1,6 +1,6 @@
 dnl -*- mode: m4 -*-
 AC_PREREQ(2.63)
-AC_INIT([sushi],[3.18.0],[],[sushi])
+AC_INIT([sushi],[3.19.90],[],[sushi])
 
 AC_CONFIG_HEADERS([config/config.h])
 AC_CONFIG_SRCDIR([src/main.c])
@@ -62,7 +62,7 @@
                   clutter-x11-1.0 >= $CLUTTER_MIN_VERSION
                   gtk+-3.0 >= $GTK_MIN_VERSION
                   clutter-gtk-1.0 >= $CLUTTER_GTK_MIN_VERSION
-                  clutter-gst-2.0
+                  clutter-gst-3.0
                   gstreamer-1.0
                   gstreamer-pbutils-1.0
                   gstreamer-tag-1.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/sushi-3.18.0/po/LINGUAS new/sushi-3.19.90/po/LINGUAS
--- old/sushi-3.18.0/po/LINGUAS 2015-06-25 23:12:24.000000000 +0200
+++ new/sushi-3.19.90/po/LINGUAS        2015-11-18 02:36:55.000000000 +0100
@@ -22,6 +22,7 @@
 fi
 fr
 fur
+gd
 gl
 gu
 he
@@ -46,6 +47,7 @@
 pl
 pt
 pt_BR
+ro
 ru
 sl
 sk
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/sushi-3.18.0/po/gd.po new/sushi-3.19.90/po/gd.po
--- old/sushi-3.18.0/po/gd.po   1970-01-01 01:00:00.000000000 +0100
+++ new/sushi-3.19.90/po/gd.po  2015-11-18 02:36:55.000000000 +0100
@@ -0,0 +1,64 @@
+# Scottish Gaelic translation for sushi.
+# Copyright (C) 2015 sushi's COPYRIGHT HOLDER
+# This file is distributed under the same license as the sushi package.
+# GunChleoc <f...@foramnagaidhlig.net>, 2015.
+msgid ""
+msgstr ""
+"Project-Id-Version: sushi master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=sushi&";
+"keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2015-11-17 14:29+0000\n"
+"PO-Revision-Date: 2015-11-17 17:49+0100\n"
+"Last-Translator: GunChleoc <f...@foramnagaidhlig.net>\n"
+"Language-Team: Fòram na Gàidhlig\n"
+"Language: gd\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : "
+"(n > 2 && n < 20) ? 2 : 3;\n"
+"X-Generator: Virtaal 0.7.1\n"
+"X-Project-Style: gnome\n"
+
+#: ../src/js/ui/fallbackRenderer.js:119
+msgid "Type"
+msgstr "Seòrsa"
+
+#: ../src/js/ui/fallbackRenderer.js:120 ../src/js/ui/fallbackRenderer.js:129
+#: ../src/js/ui/fallbackRenderer.js:135 ../src/js/ui/spinnerBox.js:56
+msgid "Loading..."
+msgstr "'Ga luchdadh..."
+
+#: ../src/js/ui/fallbackRenderer.js:128
+msgid "Size"
+msgstr "Meud"
+
+#: ../src/js/ui/fallbackRenderer.js:134
+msgid "Modified"
+msgstr "Air atharrachadh"
+
+#: ../src/js/viewers/audio.js:172
+msgid "from"
+msgstr "o"
+
+#: ../src/js/viewers/audio.js:174
+msgid "by"
+msgstr "le"
+
+#: ../src/js/viewers/evince.js:77
+#, javascript-format
+msgid "%d of %d"
+msgstr "%d à %d"
+
+#: ../src/libsushi/sushi-file-loader.c:639
+#, c-format
+msgid "%d item"
+msgid_plural "%d items"
+msgstr[0] "%d nì"
+msgstr[1] "%d nì"
+msgstr[2] "%d nithean"
+msgstr[3] "%d nì"
+
+#: ../src/libsushi/sushi-file-loader.c:651
+msgid "Empty Folder"
+msgstr "Pasgan falamh"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/sushi-3.18.0/po/oc.po new/sushi-3.19.90/po/oc.po
--- old/sushi-3.18.0/po/oc.po   2015-06-25 23:12:24.000000000 +0200
+++ new/sushi-3.19.90/po/oc.po  2016-03-03 22:56:51.000000000 +0100
@@ -1,70 +1,68 @@
 # Occitan translation for sushi.
 # Copyright (C) 2011 sushi's COPYRIGHT HOLDER
 # This file is distributed under the same license as the sushi package.
-# Alexandre Franke <alexandre.fra...@gmail.com>, 2011.
-# Cédric Valmary (Tot en Òc) <cvalm...@yahoo.fr>, 2015.
+# Cédric Valmary <cvalm...@yahoo.fr>, 2015.
+# Cédric Valmary (Tot en òc) <cvalm...@yahoo.fr>, 2015.
 msgid ""
 msgstr ""
 "Project-Id-Version: sushi master\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=sushi&";
-"keywords=I18N+L10N&component=general\n"
-"POT-Creation-Date: 2015-05-25 23:38+0000\n"
-"PO-Revision-Date: 2015-05-26 09:06+0200\n"
-"Last-Translator: Cédric Valmary (Tot en Òc) <cvalm...@yahoo.fr>\n"
-"Language-Team: www.totenoc.eu\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?";
+"product=sushi&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2016-02-18 14:43+0000\n"
+"PO-Revision-Date: 2015-10-31 08:38+0200\n"
+"Last-Translator: Cédric Valmary (Tot en òc) <cvalm...@yahoo.fr>\n"
+"Language-Team: Tot en òc (totenoc.eu)\n"
 "Language: oc\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Virtaal 0.7.0\n"
+"X-Generator: Virtaal 0.7.1\n"
 "X-Project-Style: gnome\n"
 
-#: ../data/org.gnome.sushi.gschema.xml.in.h:1
-msgid "Client decoration"
-msgstr "Decoracion del client"
-
-#: ../data/org.gnome.sushi.gschema.xml.in.h:2
-msgid "Whether the window draws WM decorations itself"
-msgstr "Indica se la fenèstra dessenha las decoracions del WM ela-meteissa"
-
-#: ../src/js/ui/fallbackRenderer.js:121
+#: ../src/js/ui/fallbackRenderer.js:119
 msgid "Type"
 msgstr "Tipe"
 
-#: ../src/js/ui/fallbackRenderer.js:122 ../src/js/ui/fallbackRenderer.js:131
-#: ../src/js/ui/fallbackRenderer.js:137 ../src/js/ui/spinnerBox.js:58
+#: ../src/js/ui/fallbackRenderer.js:120 ../src/js/ui/fallbackRenderer.js:129
+#: ../src/js/ui/fallbackRenderer.js:135 ../src/js/ui/spinnerBox.js:56
 msgid "Loading..."
 msgstr "Cargament..."
 
-#: ../src/js/ui/fallbackRenderer.js:130
+#: ../src/js/ui/fallbackRenderer.js:128
 msgid "Size"
 msgstr "Talha"
 
-#: ../src/js/ui/fallbackRenderer.js:136
+#: ../src/js/ui/fallbackRenderer.js:134
 msgid "Modified"
 msgstr "Modificat"
 
-#: ../src/js/viewers/audio.js:173
+#: ../src/js/viewers/audio.js:172
 msgid "from"
 msgstr "de"
 
-#: ../src/js/viewers/audio.js:175
+#: ../src/js/viewers/audio.js:174
 msgid "by"
 msgstr "per"
 
-#: ../src/js/viewers/evince.js:79
-#, javascript-format
+#: ../src/js/viewers/evince.js:77
+#, javascript-format
 msgid "%d of %d"
 msgstr "%d sus %d"
 
-#: ../src/libsushi/sushi-file-loader.c:639
-#, c-format
+#: ../src/libsushi/sushi-file-loader.c:639
+#, c-format
 msgid "%d item"
 msgid_plural "%d items"
 msgstr[0] "%d element"
 msgstr[1] "%d elements"
 
-#: ../src/libsushi/sushi-file-loader.c:651
+#: ../src/libsushi/sushi-file-loader.c:651
 msgid "Empty Folder"
 msgstr "Dorsièr void"
+
+#~ msgid "Client decoration"
+#~ msgstr "Decoracion del client"
+
+#~ msgid "Whether the window draws WM decorations itself"
+#~ msgstr "Indica se la fenèstra dessenha las decoracions del WM ela-meteissa"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/sushi-3.18.0/po/pt.po new/sushi-3.19.90/po/pt.po
--- old/sushi-3.18.0/po/pt.po   2015-07-19 19:43:18.000000000 +0200
+++ new/sushi-3.19.90/po/pt.po  2015-11-14 20:03:46.000000000 +0100
@@ -9,7 +9,7 @@
 "Project-Id-Version: 3.8\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?";
 "product=sushi&keywords=I18N+L10N&component=general\n"
-"POT-Creation-Date: 2015-06-07 23:40+0000\n"
+"POT-Creation-Date: 2015-09-29 00:49+0000\n"
 "PO-Revision-Date: 2015-06-20 09:03+0100\n"
 "Last-Translator: Duarte Loreto <happyguy...@hotmail.com>\n"
 "Language-Team: Portuguese <gnome...@yahoogroups.com>\n"
@@ -20,40 +20,32 @@
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Gtranslator 2.91.6\n"
 
-#: ../data/org.gnome.sushi.gschema.xml.in.h:1
-msgid "Client decoration"
-msgstr "Decoração do cliente"
-
-#: ../data/org.gnome.sushi.gschema.xml.in.h:2
-msgid "Whether the window draws WM decorations itself"
-msgstr "Se a própria janela desenha ou não as decorações de Gestor de janelas"
-
-#: ../src/js/ui/fallbackRenderer.js:121
+#: ../src/js/ui/fallbackRenderer.js:119
 msgid "Type"
 msgstr "Tipo"
 
-#: ../src/js/ui/fallbackRenderer.js:122 ../src/js/ui/fallbackRenderer.js:131
-#: ../src/js/ui/fallbackRenderer.js:137 ../src/js/ui/spinnerBox.js:58
+#: ../src/js/ui/fallbackRenderer.js:120 ../src/js/ui/fallbackRenderer.js:129
+#: ../src/js/ui/fallbackRenderer.js:135 ../src/js/ui/spinnerBox.js:56
 msgid "Loading..."
 msgstr "A carregar..."
 
-#: ../src/js/ui/fallbackRenderer.js:130
+#: ../src/js/ui/fallbackRenderer.js:128
 msgid "Size"
 msgstr "Tamanho"
 
-#: ../src/js/ui/fallbackRenderer.js:136
+#: ../src/js/ui/fallbackRenderer.js:134
 msgid "Modified"
 msgstr "Modificado"
 
-#: ../src/js/viewers/audio.js:173
+#: ../src/js/viewers/audio.js:171
 msgid "from"
 msgstr "de"
 
-#: ../src/js/viewers/audio.js:175
+#: ../src/js/viewers/audio.js:173
 msgid "by"
 msgstr "por"
 
-#: ../src/js/viewers/evince.js:79
+#: ../src/js/viewers/evince.js:77
 #, javascript-format
 msgid "%d of %d"
 msgstr "%d de %d"
@@ -68,3 +60,10 @@
 #: ../src/libsushi/sushi-file-loader.c:651
 msgid "Empty Folder"
 msgstr "Pasta vazia"
+
+#~ msgid "Client decoration"
+#~ msgstr "Decoração do cliente"
+
+#~ msgid "Whether the window draws WM decorations itself"
+#~ msgstr ""
+#~ "Se a própria janela desenha ou não as decorações de Gestor de janelas"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/sushi-3.18.0/po/ro.po new/sushi-3.19.90/po/ro.po
--- old/sushi-3.18.0/po/ro.po   1970-01-01 01:00:00.000000000 +0100
+++ new/sushi-3.19.90/po/ro.po  2015-11-14 20:03:46.000000000 +0100
@@ -0,0 +1,64 @@
+# Romanian translation for sushi.
+# Copyright (C) 2015 sushi's COPYRIGHT HOLDER
+# This file is distributed under the same license as the sushi package.
+# Adriannho <raziel_therip...@yahoo.com>, 2015.
+# Daniel Șerbănescu <daniel [at] serbanescu [dot] dk>, 2015.
+msgid ""
+msgstr ""
+"Project-Id-Version: sushi master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=sushi&k";
+"eywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2015-10-11 12:44+0000\n"
+"PO-Revision-Date: 2015-10-15 18:49+0200\n"
+"Last-Translator: Daniel Șerbănescu <daniel [at] serbanescu [dot] dk>\n"
+"Language-Team: Gnome Romanian Translation Team\n"
+"Language: ro\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
+"20)) ? 1 : 2);;\n"
+"X-Generator: Virtaal 0.7.1\n"
+"X-Project-Style: gnome\n"
+
+#: ../src/js/ui/fallbackRenderer.js:119
+msgid "Type"
+msgstr "Tip"
+
+#: ../src/js/ui/fallbackRenderer.js:120 ../src/js/ui/fallbackRenderer.js:129
+#: ../src/js/ui/fallbackRenderer.js:135 ../src/js/ui/spinnerBox.js:56
+msgid "Loading..."
+msgstr "Se încarcă..."
+
+#: ../src/js/ui/fallbackRenderer.js:128
+msgid "Size"
+msgstr "Mărime"
+
+#: ../src/js/ui/fallbackRenderer.js:134
+msgid "Modified"
+msgstr "Modificat"
+
+#: ../src/js/viewers/audio.js:171
+msgid "from"
+msgstr "din"
+
+#: ../src/js/viewers/audio.js:173
+msgid "by"
+msgstr "de către"
+
+#: ../src/js/viewers/evince.js:77
+#, javascript-format
+msgid "%d of %d"
+msgstr "%d din %d"
+
+#: ../src/libsushi/sushi-file-loader.c:639
+#, c-format
+msgid "%d item"
+msgid_plural "%d items"
+msgstr[0] "%d element"
+msgstr[1] "%d elemente"
+msgstr[2] "%d de elemente"
+
+#: ../src/libsushi/sushi-file-loader.c:651
+msgid "Empty Folder"
+msgstr "Dosar gol"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/sushi-3.18.0/po/sv.po new/sushi-3.19.90/po/sv.po
--- old/sushi-3.18.0/po/sv.po   2014-11-20 18:17:19.000000000 +0100
+++ new/sushi-3.19.90/po/sv.po  2016-03-03 22:56:51.000000000 +0100
@@ -1,46 +1,37 @@
 # Swedish translation for sushi.
-# Copyright (C) 2011, 2012 Free Software Foundation, Inc.
+# Copyright © 2011, 2012 Free Software Foundation, Inc.
 # This file is distributed under the same license as the sushi package.
 # Daniel Nylander <p...@danielnylander.se>, 2011, 2012.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: sushi\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-02 10:41+0200\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?";
+"product=sushi&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2016-02-17 14:46+0000\n"
 "PO-Revision-Date: 2012-09-02 10:42+0100\n"
 "Last-Translator: Daniel Nylander <p...@danielnylander.se>\n"
 "Language-Team: Swedish <tp...@listor.tp-sv.se>\n"
-"Language: \n"
+"Language: sv\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: ../data/org.gnome.sushi.gschema.xml.in.h:1
-msgid "Client decoration"
-msgstr "Klientdekoration"
-
-#: ../data/org.gnome.sushi.gschema.xml.in.h:2
-msgid "Whether the window draws WM decorations itself"
-msgstr "Huruvida fönstret ritar ut dekorationer från fönsterhanteraren själv"
-
-#: ../src/js/ui/fallbackRenderer.js:120
+#: ../src/js/ui/fallbackRenderer.js:119
 msgid "Type"
 msgstr "Typ"
 
-#: ../src/js/ui/fallbackRenderer.js:121
-#: ../src/js/ui/fallbackRenderer.js:130
-#: ../src/js/ui/fallbackRenderer.js:136
-#: ../src/js/ui/spinnerBox.js:57
+#: ../src/js/ui/fallbackRenderer.js:120 ../src/js/ui/fallbackRenderer.js:129
+#: ../src/js/ui/fallbackRenderer.js:135 ../src/js/ui/spinnerBox.js:56
 msgid "Loading..."
 msgstr "Läser in..."
 
-#: ../src/js/ui/fallbackRenderer.js:129
+#: ../src/js/ui/fallbackRenderer.js:128
 msgid "Size"
 msgstr "Storlek"
 
-#: ../src/js/ui/fallbackRenderer.js:135
+#: ../src/js/ui/fallbackRenderer.js:134
 msgid "Modified"
 msgstr "Ändrad"
 
@@ -52,8 +43,8 @@
 msgid "by"
 msgstr "av"
 
-#: ../src/js/viewers/evince.js:79
-#, c-format
+#: ../src/js/viewers/evince.js:77
+#, javascript-format
 msgid "%d of %d"
 msgstr "%d av %d"
 
@@ -68,3 +59,9 @@
 msgid "Empty Folder"
 msgstr "Tom mapp"
 
+#~ msgid "Client decoration"
+#~ msgstr "Klientdekoration"
+
+#~ msgid "Whether the window draws WM decorations itself"
+#~ msgstr ""
+#~ "Huruvida fönstret ritar ut dekorationer från fönsterhanteraren själv"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/sushi-3.18.0/src/js/viewers/audio.js 
new/sushi-3.19.90/src/js/viewers/audio.js
--- old/sushi-3.18.0/src/js/viewers/audio.js    2015-07-22 21:26:54.000000000 
+0200
+++ new/sushi-3.19.90/src/js/viewers/audio.js   2015-11-14 20:43:43.000000000 
+0100
@@ -23,6 +23,7 @@
  *
  */
 
+const GdkPixbuf = imports.gi.GdkPixbuf;
 const Gio = imports.gi.Gio;
 const Gst = imports.gi.Gst;
 const Gtk = imports.gi.Gtk;
@@ -254,7 +255,8 @@
     },
 
     createToolbar : function () {
-        this._mainToolbar = new Gtk.Toolbar();
+        this._mainToolbar = new Gtk.Toolbar({ margin_start: 
Constants.TOOLBAR_SPACING,
+                                              margin_end: 
Constants.TOOLBAR_SPACING });
         this._mainToolbar.get_style_context().add_class('osd');
         this._mainToolbar.set_icon_size(Gtk.IconSize.MENU);
         this._mainToolbar.show();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/sushi-3.18.0/src/js/viewers/gst.js new/sushi-3.19.90/src/js/viewers/gst.js
--- old/sushi-3.18.0/src/js/viewers/gst.js      2015-07-22 21:26:54.000000000 
+0200
+++ new/sushi-3.19.90/src/js/viewers/gst.js     2015-11-14 20:03:46.000000000 
+0100
@@ -23,7 +23,7 @@
  *
  */
 
-imports.gi.versions.ClutterGst = '2.0';
+imports.gi.versions.ClutterGst = '3.0';
 const ClutterGst = imports.gi.ClutterGst;
 const Clutter = imports.gi.Clutter;
 const Gdk = imports.gi.Gdk;
@@ -60,29 +60,33 @@
     },
 
     clear : function() {
-        this._video.playing = false;
+        this._player.playing = false;
     },
 
     _createVideo : function(file) {
-        this._video =
-            new ClutterGst.VideoTexture({ sync_size: false });
+        this._player = new ClutterGst.Playback();
+        this._video = new Clutter.Actor({
+            content: new ClutterGst.Aspectratio({
+                player: this._player
+            })
+        });
 
-        this._video.set_uri(file.get_uri());
-        this._video.playing = true;
+        this._player.set_uri(file.get_uri());
+        this._player.playing = true;
 
         this._videoSizeChangeId =
-            this._video.connect('size-change',
-                                Lang.bind(this,
-                                          this._onVideoSizeChange));
-        this._video.connect('notify::playing',
-                            Lang.bind(this,
-                                      this._onVideoPlayingChange));
-        this._video.connect('notify::progress',
-                            Lang.bind(this,
-                                      this._onVideoProgressChange));
-        this._video.connect('notify::duration',
-                            Lang.bind(this,
-                                      this._onVideoDurationChange));
+            this._player.connect('size-change',
+                                 Lang.bind(this,
+                                           this._onVideoSizeChange));
+        this._player.connect('notify::playing',
+                             Lang.bind(this,
+                                       this._onVideoPlayingChange));
+        this._player.connect('notify::progress',
+                             Lang.bind(this,
+                                       this._onVideoProgressChange));
+        this._player.connect('notify::duration',
+                             Lang.bind(this,
+                                       this._onVideoDurationChange));
     },
 
     _updateProgressBar : function() {
@@ -90,7 +94,7 @@
             return;
 
         this._isSettingValue = true;
-        this._progressBar.set_value(this._video.progress * 1000);
+        this._progressBar.set_value(this._player.progress * 1000);
         this._isSettingValue = false;
     },
 
@@ -99,7 +103,7 @@
             return;
 
         let currentTime =
-            Math.floor(this._video.duration * this._video.progress);
+            Math.floor(this._player.duration * this._player.progress);
 
         this._currentLabel.set_text(Utils.formatTimeString(currentTime));
     },
@@ -108,7 +112,7 @@
         if (!this._mainToolbar)
             return;
 
-        let totalTime = this._video.duration;
+        let totalTime = this._player.duration;
 
         this._durationLabel.set_text(Utils.formatTimeString(totalTime));
     },
@@ -123,7 +127,7 @@
     },
 
     _onVideoPlayingChange : function() {
-        if (this._video.playing)
+        if (this._player.playing)
             this._toolbarPlay.set_icon_name('media-playback-pause-symbolic');
         else
         {
@@ -166,8 +170,8 @@
 
         this._toolbarPlay.connect('clicked',
                                   Lang.bind(this, function () {
-                                      let playing = !this._video.playing;
-                                      this._video.playing = playing;
+                                      let playing = !this._player.playing;
+                                      this._player.playing = playing;
                                   }));
 
         this._progressBar =
@@ -178,7 +182,7 @@
         this._progressBar.connect('value-changed',
                                   Lang.bind(this, function() {
                                       if(!this._isSettingValue)
-                                          this._video.progress = 
this._progressBar.get_value() / 1000;
+                                          this._player.progress = 
this._progressBar.get_value() / 1000;
                                   }));
 
         item = new Gtk.ToolItem();
@@ -200,7 +204,7 @@
         return this._toolbarActor;
     },
 
-    _onVideoSizeChange : function(video, width, height) {
+    _onVideoSizeChange : function(player, width, height) {
         this._videoWidth = width;
         this._videoHeight = height;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/sushi-3.18.0/src/libsushi/sushi-cover-art.c 
new/sushi-3.19.90/src/libsushi/sushi-cover-art.c
--- old/sushi-3.18.0/src/libsushi/sushi-cover-art.c     2014-11-20 
18:17:19.000000000 +0100
+++ new/sushi-3.19.90/src/libsushi/sushi-cover-art.c    2015-11-14 
20:36:57.000000000 +0100
@@ -155,61 +155,41 @@
 }
 
 typedef struct {
-  SushiCoverArtFetcher *self;
-  GSimpleAsyncResult *result;
   gchar *artist;
   gchar *album;
-} FetchUriJob;
+} FetchUriTaskData;
 
 static void
-fetch_uri_job_free (gpointer user_data)
+fetch_uri_task_data_free (gpointer user_data)
 {
-  FetchUriJob *data = user_data;
+  FetchUriTaskData *data = user_data;
 
-  g_clear_object (&data->self);
-  g_clear_object (&data->result);
   g_free (data->artist);
   g_free (data->album);
 
-  g_slice_free (FetchUriJob, data);
+  g_slice_free (FetchUriTaskData, data);
 }
 
-static FetchUriJob *
-fetch_uri_job_new (SushiCoverArtFetcher *self,
-                   const gchar *artist,
-                   const gchar *album,
-                   GAsyncReadyCallback callback,
-                   gpointer user_data)
+static FetchUriTaskData *
+fetch_uri_task_data_new (const gchar *artist,
+                         const gchar *album)
 {
-  FetchUriJob *retval;
+  FetchUriTaskData *retval;
 
-  retval = g_slice_new0 (FetchUriJob);
+  retval = g_slice_new0 (FetchUriTaskData);
   retval->artist = g_strdup (artist);
   retval->album = g_strdup (album);
-  retval->self = g_object_ref (self);
-  retval->result = g_simple_async_result_new (G_OBJECT (self), callback, 
user_data,
-                                              
sushi_cover_art_fetcher_get_uri_for_track_async);
 
   return retval;
 }
 
-static gboolean
-fetch_uri_job_callback (gpointer user_data)
-{
-  FetchUriJob *job = user_data;
-
-  g_simple_async_result_complete (job->result);
-  fetch_uri_job_free (job);
-
-  return FALSE;
-}
-
-static gboolean
-fetch_uri_job (GIOSchedulerJob *sched_job,
-               GCancellable *cancellable,
-               gpointer user_data)
+static void
+fetch_uri_job (GTask *task,
+               gpointer source_object,
+               gpointer task_data,
+               GCancellable *cancellable)
 {
-  FetchUriJob *job = user_data;
+  FetchUriTaskData *data = task_data;
   Mb5Metadata metadata;
   Mb5Query query;
   Mb5Release release;
@@ -224,7 +204,7 @@
   param_values = g_new (gchar*, 3);
 
   param_names[0] = g_strdup ("query");
-  param_values[0] = g_strdup_printf ("artist:\"%s\" AND release:\"%s\"", 
job->artist, job->album);
+  param_values[0] = g_strdup_printf ("artist:\"%s\" AND release:\"%s\"", 
data->artist, data->album);
 
   param_names[1] = g_strdup ("limit");
   param_values[1] = g_strdup ("10");
@@ -258,21 +238,16 @@
 
   if (retval == NULL) {
     /* FIXME: do we need a better error? */
-    g_simple_async_result_set_error (job->result,
-                                     G_IO_ERROR,
-                                     0, "%s",
-                                     "Error getting the ASIN from 
MusicBrainz");
+    g_task_return_new_error (task,
+                             G_IO_ERROR,
+                             0, "%s",
+                             "Error getting the ASIN from MusicBrainz");
   } else {
-    g_simple_async_result_set_op_res_gpointer (job->result,
-                                               retval, NULL);
+    g_task_return_pointer (task, retval, g_free);
   }
 
-  g_io_scheduler_job_send_to_mainloop_async (sched_job,
-                                             fetch_uri_job_callback,
-                                             job, NULL);
   g_strfreev (param_names);
   g_strfreev (param_values);
-  return FALSE;
 }
 
 static gchar *
@@ -280,15 +255,7 @@
                                                   GAsyncResult *result,
                                                   GError **error)
 {
-  gchar *retval;
-
-  if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (result),
-                                             error))
-    return NULL;
-
-  retval = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT 
(result));
-
-  return retval;
+  return g_task_propagate_pointer (G_TASK (result), error);
 }
 
 static void
@@ -298,12 +265,12 @@
                                                  GAsyncReadyCallback callback,
                                                  gpointer user_data)
 {
-  FetchUriJob *job;
+  FetchUriTaskData *data = fetch_uri_task_data_new (artist, album);
+  GTask *task = g_task_new (G_OBJECT (self), NULL, callback, user_data);
+  g_task_set_task_data (task, data, fetch_uri_task_data_free);
 
-  job = fetch_uri_job_new (self, artist, album, callback, user_data);
-  g_io_scheduler_push_job (fetch_uri_job,
-                           job, NULL,
-                           G_PRIORITY_DEFAULT, NULL);
+  g_task_run_in_thread (task, fetch_uri_job);
+  g_object_unref (task);
 }
 
 static GFile *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/sushi-3.18.0/src/libsushi/sushi-file-loader.c 
new/sushi-3.19.90/src/libsushi/sushi-file-loader.c
--- old/sushi-3.18.0/src/libsushi/sushi-file-loader.c   2014-11-20 
18:17:19.000000000 +0100
+++ new/sushi-3.19.90/src/libsushi/sushi-file-loader.c  2015-11-14 
20:16:02.000000000 +0100
@@ -590,7 +590,7 @@
     return NULL;
 
   retval = gtk_icon_info_load_icon (info, &error);
-  gtk_icon_info_free (info);
+  g_object_unref (info);
 
   if (error != NULL) {
     gchar *uri;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/sushi-3.18.0/src/libsushi/sushi-font-widget.c 
new/sushi-3.19.90/src/libsushi/sushi-font-widget.c
--- old/sushi-3.18.0/src/libsushi/sushi-font-widget.c   2015-07-22 
21:26:54.000000000 +0200
+++ new/sushi-3.19.90/src/libsushi/sushi-font-widget.c  2015-11-21 
23:51:36.000000000 +0100
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2011 Red Hat, Inc.
+ * Copyright (C) 2014 Khaled Hosny <khaledho...@eglug.org>.
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License as
@@ -26,6 +27,7 @@
 #include "sushi-font-widget.h"
 #include "sushi-font-loader.h"
 
+#include <hb-glib.h>
 #include <math.h>
 
 enum {
@@ -68,6 +70,112 @@
 static const gchar uppercase_text_stock[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
 static const gchar punctuation_text_stock[] = "0123456789.:,;(*!?')";
 
+static void
+text_to_glyphs (cairo_t *cr,
+                const gchar *text,
+                cairo_glyph_t **glyphs,
+                int *num_glyphs)
+{
+  PangoAttribute *fallback_attr;
+  PangoAttrList *attr_list;
+  PangoContext *context;
+  PangoDirection base_dir;
+  GList *items;
+  GList *visual_items;
+  FT_Face ft_face;
+  hb_font_t *hb_font;
+  gdouble x = 0, y = 0;
+  gint i;
+  gdouble x_scale, y_scale;
+
+  *num_glyphs = 0;
+  *glyphs = NULL;
+
+  base_dir = pango_find_base_dir (text, -1);
+
+  cairo_scaled_font_t *cr_font = cairo_get_scaled_font (cr);
+  ft_face = cairo_ft_scaled_font_lock_face (cr_font);
+  hb_font = hb_ft_font_create (ft_face, NULL);
+
+  cairo_surface_t *target = cairo_get_target (cr);
+  cairo_surface_get_device_scale (target, &x_scale, &y_scale);
+
+  /* We abuse pango itemazation to split text into script and direction
+   * runs, since we use our fonts directly no through pango, we don't
+   * bother changing the default font, but we disable font fallback as
+   * pango will split runs at font change */
+  context = pango_cairo_create_context (cr);
+  attr_list = pango_attr_list_new ();
+  fallback_attr = pango_attr_fallback_new (FALSE);
+  pango_attr_list_insert (attr_list, fallback_attr);
+  items = pango_itemize_with_base_dir (context, base_dir,
+                                       text, 0, strlen (text),
+                                       attr_list, NULL);
+  g_object_unref (context);
+  pango_attr_list_unref (attr_list);
+
+  /* reorder the items in the visual order */
+  visual_items = pango_reorder_items (items);
+
+  while (visual_items) {
+    PangoItem *item;
+    PangoAnalysis analysis;
+    hb_buffer_t *hb_buffer;
+    hb_glyph_info_t *hb_glyphs;
+    hb_glyph_position_t *hb_positions;
+    gint n;
+
+    item = visual_items->data;
+    analysis = item->analysis;
+
+    hb_buffer = hb_buffer_create ();
+    hb_buffer_add_utf8 (hb_buffer, text, -1, item->offset, item->length);
+    hb_buffer_set_script (hb_buffer, hb_glib_script_to_script 
(analysis.script));
+    hb_buffer_set_language (hb_buffer, hb_language_from_string 
(pango_language_to_string (analysis.language), -1));
+    hb_buffer_set_direction (hb_buffer, analysis.level % 2 ? HB_DIRECTION_RTL 
: HB_DIRECTION_LTR);
+
+    hb_shape (hb_font, hb_buffer, NULL, 0);
+
+    n = hb_buffer_get_length (hb_buffer);
+    hb_glyphs = hb_buffer_get_glyph_infos (hb_buffer, NULL);
+    hb_positions = hb_buffer_get_glyph_positions (hb_buffer, NULL);
+
+    *glyphs = g_renew (cairo_glyph_t, *glyphs, *num_glyphs + n);
+
+    for (i = 0; i < n; i++) {
+      (*glyphs)[*num_glyphs + i].index = hb_glyphs[i].codepoint;
+      (*glyphs)[*num_glyphs + i].x = x + (hb_positions[i].x_offset / (64. * 
x_scale));
+      (*glyphs)[*num_glyphs + i].y = y - (hb_positions[i].y_offset / (64. * 
y_scale));
+      x += (hb_positions[i].x_advance / (64. * x_scale));
+      y -= (hb_positions[i].y_advance / (64. * y_scale));
+    }
+
+    *num_glyphs += n;
+
+    hb_buffer_destroy (hb_buffer);
+
+    visual_items = visual_items->next;
+  }
+
+  g_list_free_full (visual_items, (GDestroyNotify) pango_item_free);
+  g_list_free_full (items, (GDestroyNotify) pango_item_free);
+
+  hb_font_destroy (hb_font);
+  cairo_ft_scaled_font_unlock_face (cr_font);
+}
+
+static void
+text_extents (cairo_t *cr,
+              const char *text,
+              cairo_text_extents_t *extents)
+{
+  cairo_glyph_t *glyphs;
+  gint num_glyphs;
+  text_to_glyphs (cr, text, &glyphs, &num_glyphs);
+  cairo_glyph_extents (cr, glyphs, num_glyphs, extents);
+  g_free (glyphs);
+}
+
 /* adapted from gnome-utils:font-viewer/font-view.c
  *
  * Copyright (C) 2002-2003  James Henstridge <ja...@daa.com.au>
@@ -84,13 +192,18 @@
 {
   cairo_font_extents_t font_extents;
   cairo_text_extents_t extents;
+  cairo_glyph_t *glyphs;
   GtkTextDirection text_dir;
   gint pos_x;
+  gint num_glyphs;
+  gint i;
 
   text_dir = gtk_widget_get_direction (GTK_WIDGET (self));
 
+  text_to_glyphs (cr, text, &glyphs, &num_glyphs);
+
   cairo_font_extents (cr, &font_extents);
-  cairo_text_extents (cr, text, &extents);
+  cairo_glyph_extents (cr, glyphs, num_glyphs, &extents);
 
   if (pos_y != NULL)
     *pos_y += font_extents.ascent + font_extents.descent +
@@ -102,8 +215,15 @@
       extents.x_advance - padding.right;
   }
 
+  for (i = 0; i < num_glyphs; i++) {
+    glyphs[i].x += pos_x;
+    glyphs[i].y += *pos_y;
+  }
+
   cairo_move_to (cr, pos_x, *pos_y);
-  cairo_show_text (cr, text);
+  cairo_show_glyphs (cr, glyphs, num_glyphs);
+
+  g_free (glyphs);
 
   *pos_y += LINE_SPACING / 2;
 }
@@ -113,29 +233,20 @@
                          const gchar *text)
 {
   gunichar *string;
-  glong len, idx, map;
-  FT_CharMap charmap;
-  gboolean retval = FALSE;
+  glong len, idx;
+  gboolean retval = TRUE;
 
   string = g_utf8_to_ucs4_fast (text, -1, &len);
 
-  for (map = 0; map < face->num_charmaps; map++) {
-    charmap = face->charmaps[map];
-    FT_Set_Charmap (face, charmap);
-
-    retval = TRUE;
+  FT_Select_Charmap (face, FT_ENCODING_UNICODE);
 
-    for (idx = 0; idx < len; idx++) {
-      gunichar c = string[idx];
+  for (idx = 0; idx < len; idx++) {
+    gunichar c = string[idx];
 
-      if (!FT_Get_Char_Index (face, c)) {
-        retval = FALSE;
-        break;
-      }
-    }
-
-    if (retval)
+    if (!FT_Get_Char_Index (face, c)) {
+      retval = FALSE;
       break;
+    }
   }
 
   g_free (string);
@@ -371,7 +482,7 @@
   if (self->priv->font_name != NULL) {
       cairo_set_font_size (cr, title_size);
       cairo_font_extents (cr, &font_extents);
-      cairo_text_extents (cr, self->priv->font_name, &extents);
+      text_extents (cr, self->priv->font_name, &extents);
       pixmap_height += font_extents.ascent + font_extents.descent +
         extents.y_advance + LINE_SPACING;
       pixmap_width = MAX (pixmap_width, extents.width + padding.left + 
padding.right);
@@ -382,21 +493,21 @@
   cairo_font_extents (cr, &font_extents);
 
   if (self->priv->lowercase_text != NULL) {
-    cairo_text_extents (cr, self->priv->lowercase_text, &extents);
+    text_extents (cr, self->priv->lowercase_text, &extents);
     pixmap_height += font_extents.ascent + font_extents.descent + 
       extents.y_advance + LINE_SPACING;
     pixmap_width = MAX (pixmap_width, extents.width + padding.left + 
padding.right);
   }
 
   if (self->priv->uppercase_text != NULL) {
-    cairo_text_extents (cr, self->priv->uppercase_text, &extents);
+    text_extents (cr, self->priv->uppercase_text, &extents);
     pixmap_height += font_extents.ascent + font_extents.descent +
       extents.y_advance + LINE_SPACING;
     pixmap_width = MAX (pixmap_width, extents.width + padding.left + 
padding.right);
   }
 
   if (self->priv->punctuation_text != NULL) {
-    cairo_text_extents (cr, self->priv->punctuation_text, &extents);
+    text_extents (cr, self->priv->punctuation_text, &extents);
     pixmap_height += font_extents.ascent + font_extents.descent +
       extents.y_advance + LINE_SPACING;
     pixmap_width = MAX (pixmap_width, extents.width + padding.left + 
padding.right);
@@ -408,7 +519,7 @@
     for (i = 0; i < n_sizes; i++) {
       cairo_set_font_size (cr, sizes[i]);
       cairo_font_extents (cr, &font_extents);
-      cairo_text_extents (cr, self->priv->sample_string, &extents);
+      text_extents (cr, self->priv->sample_string, &extents);
       pixmap_height += font_extents.ascent + font_extents.descent +
         extents.y_advance + LINE_SPACING;
       pixmap_width = MAX (pixmap_width, extents.width + padding.left + 
padding.right);
@@ -529,7 +640,8 @@
 
   for (i = 0; i < n_sizes; i++) {
     cairo_set_font_size (cr, sizes[i]);
-    draw_string (self, cr, padding, self->priv->sample_string, &pos_y);
+    if (self->priv->sample_string !=  NULL)
+      draw_string (self, cr, padding, self->priv->sample_string, &pos_y);
     if (pos_y > allocated_height)
       break;
   }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/sushi-3.18.0/src/libsushi/sushi-font-widget.h 
new/sushi-3.19.90/src/libsushi/sushi-font-widget.h
--- old/sushi-3.18.0/src/libsushi/sushi-font-widget.h   2014-11-20 
18:17:19.000000000 +0100
+++ new/sushi-3.19.90/src/libsushi/sushi-font-widget.h  2015-11-21 
23:51:36.000000000 +0100
@@ -29,6 +29,7 @@
 #include <glib-object.h>
 #include <gtk/gtk.h>
 #include <cairo/cairo-ft.h>
+#include <hb-ft.h>
 
 G_BEGIN_DECLS
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/sushi-3.18.0/src/libsushi/sushi-pdf-loader.c 
new/sushi-3.19.90/src/libsushi/sushi-pdf-loader.c
--- old/sushi-3.18.0/src/libsushi/sushi-pdf-loader.c    2014-11-20 
18:17:19.000000000 +0100
+++ new/sushi-3.19.90/src/libsushi/sushi-pdf-loader.c   2015-11-14 
20:05:55.000000000 +0100
@@ -90,8 +90,6 @@
 
   g_dbus_connection_call_finish (G_DBUS_CONNECTION (source), res, &error);
   if (error != NULL) {
-    GError *local_error;
-
     /* can't install unoconv with packagekit - nothing else we can do */
     /* FIXME: error reporting! */
     g_warning ("unoconv not found, and PackageKit failed to install it with 
error %s",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/sushi-3.18.0/src/libsushi/sushi-text-loader.c 
new/sushi-3.19.90/src/libsushi/sushi-text-loader.c
--- old/sushi-3.18.0/src/libsushi/sushi-text-loader.c   2015-06-26 
02:40:08.000000000 +0200
+++ new/sushi-3.19.90/src/libsushi/sushi-text-loader.c  2015-11-14 
20:06:14.000000000 +0100
@@ -205,8 +205,6 @@
 sushi_text_loader_set_uri (SushiTextLoader *self,
                           const gchar *uri)
 {
-  GFile *location;
-
   if (g_strcmp0 (uri, self->priv->uri) != 0) {
     g_free (self->priv->uri);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/sushi-3.18.0/src/libsushi/sushi-utils.c 
new/sushi-3.19.90/src/libsushi/sushi-utils.c
--- old/sushi-3.18.0/src/libsushi/sushi-utils.c 2015-07-19 19:41:51.000000000 
+0200
+++ new/sushi-3.19.90/src/libsushi/sushi-utils.c        2015-11-14 
20:04:15.000000000 +0100
@@ -25,7 +25,11 @@
 
 #include "sushi-utils.h"
 
+#include <gtk/gtk.h>
+
+#ifdef GDK_WINDOWING_X11
 #include <gdk/gdkx.h>
+#endif
 
 /**
  * sushi_create_foreign_window:
@@ -36,10 +40,12 @@
 GdkWindow *
 sushi_create_foreign_window (guint xid)
 {
-  GdkWindow *retval;
+  GdkWindow *retval = NULL;
 
-  retval = gdk_x11_window_foreign_new_for_display (gdk_display_get_default (),
-                                                   xid);
+#ifdef GDK_WINDOWING_X11
+  if (GDK_IS_X11_DISPLAY (gdk_display_get_default ()))
+    retval = gdk_x11_window_foreign_new_for_display (gdk_display_get_default 
(), xid);
+#endif
 
   return retval;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/sushi-3.18.0/src/resources/gtk-style.css 
new/sushi-3.19.90/src/resources/gtk-style.css
--- old/sushi-3.18.0/src/resources/gtk-style.css        2015-07-22 
21:38:50.000000000 +0200
+++ new/sushi-3.19.90/src/resources/gtk-style.css       2016-03-03 
22:56:51.000000000 +0100
@@ -15,13 +15,13 @@
     background-color: shade (@np_bg_color, 1.30);
 }
 
-.scrollbar.button:prelight,
-.scrollbar.slider:prelight {
+.scrollbar.button:hover,
+.scrollbar.slider:hover {
     background-color: shade (@np_bg_color, 1.45);
 }
 
-.scrollbar.button:prelight:active,
-.scrollbar.slider:prelight:active {
+.scrollbar.button:hover:active,
+.scrollbar.slider:hover:active {
     background-color: shade (@np_bg_color, 1.70);
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/sushi-3.18.0/src/sushi-resources.c new/sushi-3.19.90/src/sushi-resources.c
--- old/sushi-3.18.0/src/sushi-resources.c      2015-07-22 22:52:21.000000000 
+0200
+++ new/sushi-3.19.90/src/sushi-resources.c     2016-03-03 22:56:58.000000000 
+0100
@@ -6,7 +6,7 @@
 # define SECTION
 #endif
 
-static const SECTION union { const guint8 data[1900]; const double alignment; 
void * const ptr;}  sushi_resource_data = { {
+static const SECTION union { const guint8 data[1888]; const double alignment; 
void * const ptr;}  sushi_resource_data = { {
   0x47, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
   0x18, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 
@@ -25,16 +25,16 @@
   0xc8, 0x00, 0x00, 0x00, 0x86, 0x91, 0x82, 0x58, 
   0x02, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 
   0x0d, 0x00, 0x76, 0x00, 0xd8, 0x00, 0x00, 0x00, 
-  0x60, 0x07, 0x00, 0x00, 0xb0, 0xb7, 0x24, 0x30, 
-  0x01, 0x00, 0x00, 0x00, 0x60, 0x07, 0x00, 0x00, 
-  0x06, 0x00, 0x4c, 0x00, 0x68, 0x07, 0x00, 0x00, 
-  0x6c, 0x07, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 
+  0x54, 0x07, 0x00, 0x00, 0xb0, 0xb7, 0x24, 0x30, 
+  0x01, 0x00, 0x00, 0x00, 0x54, 0x07, 0x00, 0x00, 
+  0x06, 0x00, 0x4c, 0x00, 0x5c, 0x07, 0x00, 0x00, 
+  0x60, 0x07, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 
   0x01, 0x00, 0x00, 0x00, 0x6f, 0x72, 0x67, 0x2f, 
   0x04, 0x00, 0x00, 0x00, 0x53, 0x75, 0x73, 0x68, 
   0x69, 0x2f, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 
   0x67, 0x74, 0x6b, 0x2d, 0x73, 0x74, 0x79, 0x6c, 
   0x65, 0x2e, 0x63, 0x73, 0x73, 0x00, 0x00, 0x00, 
-  0x78, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x6c, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
   0x40, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x2d, 
   0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x6e, 0x70, 
   0x5f, 0x66, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 
@@ -73,178 +73,176 @@
   0x72, 0x2c, 0x20, 0x31, 0x2e, 0x33, 0x30, 0x29, 
   0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x2e, 0x73, 0x63, 
   0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x72, 0x2e, 
-  0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x3a, 0x70, 
-  0x72, 0x65, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x2c, 
-  0x0a, 0x2e, 0x73, 0x63, 0x72, 0x6f, 0x6c, 0x6c, 
-  0x62, 0x61, 0x72, 0x2e, 0x73, 0x6c, 0x69, 0x64, 
-  0x65, 0x72, 0x3a, 0x70, 0x72, 0x65, 0x6c, 0x69, 
-  0x67, 0x68, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 
+  0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x3a, 0x68, 
+  0x6f, 0x76, 0x65, 0x72, 0x2c, 0x0a, 0x2e, 0x73, 
+  0x63, 0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x72, 
+  0x2e, 0x73, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x3a, 
+  0x68, 0x6f, 0x76, 0x65, 0x72, 0x20, 0x7b, 0x0a, 
+  0x20, 0x20, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6b, 
+  0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, 
+  0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x20, 0x73, 0x68, 
+  0x61, 0x64, 0x65, 0x20, 0x28, 0x40, 0x6e, 0x70, 
+  0x5f, 0x62, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 
+  0x72, 0x2c, 0x20, 0x31, 0x2e, 0x34, 0x35, 0x29, 
+  0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x2e, 0x73, 0x63, 
+  0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x72, 0x2e, 
+  0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x3a, 0x68, 
+  0x6f, 0x76, 0x65, 0x72, 0x3a, 0x61, 0x63, 0x74, 
+  0x69, 0x76, 0x65, 0x2c, 0x0a, 0x2e, 0x73, 0x63, 
+  0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x72, 0x2e, 
+  0x73, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x3a, 0x68, 
+  0x6f, 0x76, 0x65, 0x72, 0x3a, 0x61, 0x63, 0x74, 
+  0x69, 0x76, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 
   0x20, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 
   0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f, 0x6c, 
   0x6f, 0x72, 0x3a, 0x20, 0x73, 0x68, 0x61, 0x64, 
   0x65, 0x20, 0x28, 0x40, 0x6e, 0x70, 0x5f, 0x62, 
   0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 
-  0x20, 0x31, 0x2e, 0x34, 0x35, 0x29, 0x3b, 0x0a, 
-  0x7d, 0x0a, 0x0a, 0x2e, 0x73, 0x63, 0x72, 0x6f, 
-  0x6c, 0x6c, 0x62, 0x61, 0x72, 0x2e, 0x62, 0x75, 
-  0x74, 0x74, 0x6f, 0x6e, 0x3a, 0x70, 0x72, 0x65, 
-  0x6c, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x61, 0x63, 
-  0x74, 0x69, 0x76, 0x65, 0x2c, 0x0a, 0x2e, 0x73, 
-  0x63, 0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x72, 
-  0x2e, 0x73, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x3a, 
-  0x70, 0x72, 0x65, 0x6c, 0x69, 0x67, 0x68, 0x74, 
-  0x3a, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 
-  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x62, 0x61, 
-  0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 
-  0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x20, 
-  0x73, 0x68, 0x61, 0x64, 0x65, 0x20, 0x28, 0x40, 
-  0x6e, 0x70, 0x5f, 0x62, 0x67, 0x5f, 0x63, 0x6f, 
-  0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x31, 0x2e, 0x37, 
-  0x30, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x2e, 
-  0x74, 0x69, 0x74, 0x6c, 0x65, 0x62, 0x61, 0x72, 
-  0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x62, 
-  0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 
-  0x64, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 
-  0x20, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x3b, 0x0a, 
-  0x20, 0x20, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6b, 
-  0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x69, 
+  0x20, 0x31, 0x2e, 0x37, 0x30, 0x29, 0x3b, 0x0a, 
+  0x7d, 0x0a, 0x0a, 0x2e, 0x74, 0x69, 0x74, 0x6c, 
+  0x65, 0x62, 0x61, 0x72, 0x20, 0x7b, 0x0a, 0x20, 
+  0x20, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x67, 
+  0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f, 
+  0x6c, 0x6f, 0x72, 0x3a, 0x20, 0x62, 0x6c, 0x61, 
+  0x63, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 
+  0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 
+  0x6e, 0x64, 0x2d, 0x69, 0x6d, 0x61, 0x67, 0x65, 
+  0x3a, 0x20, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x0a, 
+  0x20, 0x20, 0x20, 0x20, 0x62, 0x6f, 0x78, 0x2d, 
+  0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x3a, 0x20, 
+  0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x0a, 0x20, 0x20, 
+  0x20, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 
+  0x3a, 0x20, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x0a, 
+  0x7d, 0x0a, 0x0a, 0x2e, 0x74, 0x69, 0x74, 0x6c, 
+  0x65, 0x62, 0x61, 0x72, 0x20, 0x2e, 0x62, 0x75, 
+  0x74, 0x74, 0x6f, 0x6e, 0x20, 0x7b, 0x0a, 0x20, 
+  0x20, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x67, 
+  0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x69, 0x6d, 
+  0x61, 0x67, 0x65, 0x3a, 0x20, 0x6e, 0x6f, 0x6e, 
+  0x65, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 
+  0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2d, 0x69, 
   0x6d, 0x61, 0x67, 0x65, 0x3a, 0x20, 0x6e, 0x6f, 
   0x6e, 0x65, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 
-  0x62, 0x6f, 0x78, 0x2d, 0x73, 0x68, 0x61, 0x64, 
-  0x6f, 0x77, 0x3a, 0x20, 0x6e, 0x6f, 0x6e, 0x65, 
+  0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2d, 0x73, 
+  0x74, 0x79, 0x6c, 0x65, 0x3a, 0x20, 0x6e, 0x6f, 
+  0x6e, 0x65, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 
+  0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2d, 0x72, 
+  0x61, 0x64, 0x69, 0x75, 0x73, 0x3a, 0x20, 0x30, 
   0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6f, 
-  0x72, 0x64, 0x65, 0x72, 0x3a, 0x20, 0x6e, 0x6f, 
-  0x6e, 0x65, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x2e, 
-  0x74, 0x69, 0x74, 0x6c, 0x65, 0x62, 0x61, 0x72, 
-  0x20, 0x2e, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 
-  0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x62, 
-  0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 
-  0x64, 0x2d, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x3a, 
-  0x20, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x0a, 0x0a, 
-  0x20, 0x20, 0x20, 0x20, 0x62, 0x6f, 0x72, 0x64, 
-  0x65, 0x72, 0x2d, 0x69, 0x6d, 0x61, 0x67, 0x65, 
-  0x3a, 0x20, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x0a, 
-  0x20, 0x20, 0x20, 0x20, 0x62, 0x6f, 0x72, 0x64, 
-  0x65, 0x72, 0x2d, 0x73, 0x74, 0x79, 0x6c, 0x65, 
+  0x72, 0x64, 0x65, 0x72, 0x2d, 0x77, 0x69, 0x64, 
+  0x74, 0x68, 0x3a, 0x20, 0x30, 0x3b, 0x0a, 0x20, 
+  0x20, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x67, 
+  0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f, 
+  0x6c, 0x6f, 0x72, 0x3a, 0x20, 0x74, 0x72, 0x61, 
+  0x6e, 0x73, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 
+  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6f, 
+  0x78, 0x2d, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 
   0x3a, 0x20, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x0a, 
-  0x20, 0x20, 0x20, 0x20, 0x62, 0x6f, 0x72, 0x64, 
-  0x65, 0x72, 0x2d, 0x72, 0x61, 0x64, 0x69, 0x75, 
-  0x73, 0x3a, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 
-  0x20, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 
-  0x2d, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x20, 
-  0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x62, 
-  0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 
-  0x64, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 
-  0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x61, 
-  0x72, 0x65, 0x6e, 0x74, 0x3b, 0x0a, 0x20, 0x20, 
-  0x20, 0x20, 0x62, 0x6f, 0x78, 0x2d, 0x73, 0x68, 
-  0x61, 0x64, 0x6f, 0x77, 0x3a, 0x20, 0x6e, 0x6f, 
-  0x6e, 0x65, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x2e, 
-  0x74, 0x69, 0x74, 0x6c, 0x65, 0x62, 0x61, 0x72, 
-  0x20, 0x2e, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 
-  0x3a, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x20, 0x7b, 
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x62, 0x61, 0x63, 
-  0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 
-  0x69, 0x6d, 0x61, 0x67, 0x65, 0x3a, 0x20, 0x2d, 
-  0x67, 0x74, 0x6b, 0x2d, 0x67, 0x72, 0x61, 0x64, 
-  0x69, 0x65, 0x6e, 0x74, 0x28, 0x6c, 0x69, 0x6e, 
-  0x65, 0x61, 0x72, 0x2c, 0x0a, 0x20, 0x20, 0x20, 
+  0x7d, 0x0a, 0x0a, 0x2e, 0x74, 0x69, 0x74, 0x6c, 
+  0x65, 0x62, 0x61, 0x72, 0x20, 0x2e, 0x62, 0x75, 
+  0x74, 0x74, 0x6f, 0x6e, 0x3a, 0x68, 0x6f, 0x76, 
+  0x65, 0x72, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 
+  0x20, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 
+  0x75, 0x6e, 0x64, 0x2d, 0x69, 0x6d, 0x61, 0x67, 
+  0x65, 0x3a, 0x20, 0x2d, 0x67, 0x74, 0x6b, 0x2d, 
+  0x67, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 
+  0x28, 0x6c, 0x69, 0x6e, 0x65, 0x61, 0x72, 0x2c, 
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x65, 0x66, 
+  0x74, 0x20, 0x74, 0x6f, 0x70, 0x2c, 0x0a, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-  0x20, 0x6c, 0x65, 0x66, 0x74, 0x20, 0x74, 0x6f, 
-  0x70, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 
-  0x65, 0x66, 0x74, 0x20, 0x62, 0x6f, 0x74, 0x74, 
-  0x6f, 0x6d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 
+  0x20, 0x20, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x20, 
+  0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x2c, 0x0a, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-  0x66, 0x72, 0x6f, 0x6d, 0x28, 0x61, 0x6c, 0x70, 
-  0x68, 0x61, 0x28, 0x40, 0x6e, 0x70, 0x5f, 0x62, 
-  0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 
-  0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x2c, 0x0a, 
+  0x20, 0x20, 0x20, 0x20, 0x66, 0x72, 0x6f, 0x6d, 
+  0x28, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x28, 0x40, 
+  0x6e, 0x70, 0x5f, 0x62, 0x67, 0x5f, 0x63, 0x6f, 
+  0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x30, 0x2e, 0x30, 
+  0x29, 0x29, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-  0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 
-  0x72, 0x2d, 0x73, 0x74, 0x6f, 0x70, 0x28, 0x30, 
-  0x2e, 0x35, 0x30, 0x2c, 0x20, 0x61, 0x6c, 0x70, 
-  0x68, 0x61, 0x28, 0x40, 0x6e, 0x70, 0x5f, 0x62, 
-  0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 
-  0x20, 0x30, 0x2e, 0x36, 0x36, 0x29, 0x29, 0x2c, 
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+  0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2d, 0x73, 0x74, 
+  0x6f, 0x70, 0x28, 0x30, 0x2e, 0x35, 0x30, 0x2c, 
+  0x20, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x28, 0x40, 
+  0x6e, 0x70, 0x5f, 0x62, 0x67, 0x5f, 0x63, 0x6f, 
+  0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x30, 0x2e, 0x36, 
+  0x36, 0x29, 0x29, 0x2c, 0x0a, 0x20, 0x20, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6f, 0x28, 
-  0x61, 0x6c, 0x70, 0x68, 0x61, 0x28, 0x40, 0x6e, 
-  0x70, 0x5f, 0x62, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 
-  0x6f, 0x72, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 
-  0x29, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x2e, 
-  0x74, 0x69, 0x74, 0x6c, 0x65, 0x62, 0x61, 0x72, 
-  0x20, 0x2e, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 
-  0x3a, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x3a, 0x61, 
-  0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 0x7b, 0x0a, 
-  0x20, 0x20, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6b, 
-  0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x69, 
-  0x6d, 0x61, 0x67, 0x65, 0x3a, 0x20, 0x2d, 0x67, 
-  0x74, 0x6b, 0x2d, 0x67, 0x72, 0x61, 0x64, 0x69, 
-  0x65, 0x6e, 0x74, 0x28, 0x6c, 0x69, 0x6e, 0x65, 
-  0x61, 0x72, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+  0x20, 0x74, 0x6f, 0x28, 0x61, 0x6c, 0x70, 0x68, 
+  0x61, 0x28, 0x40, 0x6e, 0x70, 0x5f, 0x62, 0x67, 
+  0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 
+  0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x3b, 0x0a, 
+  0x7d, 0x0a, 0x0a, 0x2e, 0x74, 0x69, 0x74, 0x6c, 
+  0x65, 0x62, 0x61, 0x72, 0x20, 0x2e, 0x62, 0x75, 
+  0x74, 0x74, 0x6f, 0x6e, 0x3a, 0x68, 0x6f, 0x76, 
+  0x65, 0x72, 0x3a, 0x61, 0x63, 0x74, 0x69, 0x76, 
+  0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 
+  0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 
+  0x6e, 0x64, 0x2d, 0x69, 0x6d, 0x61, 0x67, 0x65, 
+  0x3a, 0x20, 0x2d, 0x67, 0x74, 0x6b, 0x2d, 0x67, 
+  0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x28, 
+  0x6c, 0x69, 0x6e, 0x65, 0x61, 0x72, 0x2c, 0x0a, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-  0x6c, 0x65, 0x66, 0x74, 0x20, 0x74, 0x6f, 0x70, 
-  0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+  0x20, 0x20, 0x20, 0x20, 0x6c, 0x65, 0x66, 0x74, 
+  0x20, 0x74, 0x6f, 0x70, 0x2c, 0x0a, 0x20, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x65, 
-  0x66, 0x74, 0x20, 0x62, 0x6f, 0x74, 0x74, 0x6f, 
-  0x6d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 
-  0x72, 0x6f, 0x6d, 0x28, 0x61, 0x6c, 0x70, 0x68, 
-  0x61, 0x28, 0x40, 0x6e, 0x70, 0x5f, 0x62, 0x67, 
-  0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 
-  0x30, 0x2e, 0x30, 0x29, 0x29, 0x2c, 0x0a, 0x20, 
+  0x20, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x20, 0x62, 
+  0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x2c, 0x0a, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-  0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 
-  0x2d, 0x73, 0x74, 0x6f, 0x70, 0x28, 0x30, 0x2e, 
-  0x35, 0x30, 0x2c, 0x20, 0x40, 0x6e, 0x70, 0x5f, 
-  0x62, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 
+  0x20, 0x20, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x28, 
+  0x61, 0x6c, 0x70, 0x68, 0x61, 0x28, 0x40, 0x6e, 
+  0x70, 0x5f, 0x62, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 
+  0x6f, 0x72, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 
   0x29, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
   0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 
-  0x6f, 0x28, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x28, 
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 
+  0x6f, 0x6c, 0x6f, 0x72, 0x2d, 0x73, 0x74, 0x6f, 
+  0x70, 0x28, 0x30, 0x2e, 0x35, 0x30, 0x2c, 0x20, 
   0x40, 0x6e, 0x70, 0x5f, 0x62, 0x67, 0x5f, 0x63, 
-  0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x30, 0x2e, 
-  0x30, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 
-  0x0a, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 
-  0x2d, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x20, 0x7b, 
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6f, 0x78, 
-  0x2d, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x3a, 
-  0x20, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x0a, 0x20, 
-  0x20, 0x20, 0x20, 0x6d, 0x61, 0x72, 0x67, 0x69, 
-  0x6e, 0x3a, 0x20, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 
-  0x00, 0x00, 0x28, 0x75, 0x75, 0x61, 0x79, 0x29, 
-  0x67, 0x6e, 0x6f, 0x6d, 0x65, 0x2f, 0x00, 0x00, 
-  0x02, 0x00, 0x00, 0x00
+  0x6f, 0x6c, 0x6f, 0x72, 0x29, 0x2c, 0x0a, 0x20, 
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+  0x20, 0x20, 0x20, 0x74, 0x6f, 0x28, 0x61, 0x6c, 
+  0x70, 0x68, 0x61, 0x28, 0x40, 0x6e, 0x70, 0x5f, 
+  0x62, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 
+  0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 
+  0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x2e, 0x77, 0x69, 
+  0x6e, 0x64, 0x6f, 0x77, 0x2d, 0x66, 0x72, 0x61, 
+  0x6d, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 
+  0x20, 0x62, 0x6f, 0x78, 0x2d, 0x73, 0x68, 0x61, 
+  0x64, 0x6f, 0x77, 0x3a, 0x20, 0x6e, 0x6f, 0x6e, 
+  0x65, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6d, 
+  0x61, 0x72, 0x67, 0x69, 0x6e, 0x3a, 0x20, 0x30, 
+  0x3b, 0x0a, 0x7d, 0x0a, 0x00, 0x00, 0x28, 0x75, 
+  0x75, 0x61, 0x79, 0x29, 0x67, 0x6e, 0x6f, 0x6d, 
+  0x65, 0x2f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
 } };
 
 static GStaticResource static_resource = { sushi_resource_data.data, sizeof 
(sushi_resource_data.data), NULL, NULL, NULL };
@@ -285,17 +283,43 @@
 
 #define G_HAS_CONSTRUCTORS 1
 
-#define G_DEFINE_CONSTRUCTOR(_func) \
+/* We do some weird things to avoid the constructors being optimized
+ * away on VS2015 if WholeProgramOptimization is enabled. First we
+ * make a reference to the array from the wrapper to make sure its
+ * references. Then we use a pragma to make sure the wrapper function
+ * symbol is always included at the link stage. Also, the symbols
+ * need to be extern (but not dllexport), even though they are not
+ * really used from another object file.
+ */
+
+/* We need to account for differences between the mangling of symbols
+ * for Win32 (x86) and x64 programs, as symbols on Win32 are prefixed
+ * with an underscore but symbols on x64 are not.
+ */
+#ifdef _WIN64
+#define G_MSVC_SYMBOL_PREFIX ""
+#else
+#define G_MSVC_SYMBOL_PREFIX "_"
+#endif
+
+#define G_DEFINE_CONSTRUCTOR(_func) G_MSVC_CTOR (_func, G_MSVC_SYMBOL_PREFIX)
+#define G_DEFINE_DESTRUCTOR(_func) G_MSVC_DTOR (_func, G_MSVC_SYMBOL_PREFIX)
+
+#define G_MSVC_CTOR(_func,_sym_prefix) \
   static void _func(void); \
-  static int _func ## _wrapper(void) { _func(); return 0; } \
+  extern int (* _array ## _func)(void);              \
+  int _func ## _wrapper(void) { _func(); g_slist_find (NULL,  _array ## 
_func); return 0; } \
+  __pragma(comment(linker,"/include:" _sym_prefix # _func "_wrapper")) \
   __pragma(section(".CRT$XCU",read)) \
-  __declspec(allocate(".CRT$XCU")) static int (* _array ## _func)(void) = 
_func ## _wrapper;
+  __declspec(allocate(".CRT$XCU")) int (* _array ## _func)(void) = _func ## 
_wrapper;
 
-#define G_DEFINE_DESTRUCTOR(_func) \
+#define G_MSVC_DTOR(_func,_sym_prefix) \
   static void _func(void); \
-  static int _func ## _constructor(void) { atexit (_func); return 0; } \
+  extern int (* _array ## _func)(void);              \
+  int _func ## _constructor(void) { atexit (_func); g_slist_find (NULL,  
_array ## _func); return 0; } \
+   __pragma(comment(linker,"/include:" _sym_prefix # _func "_constructor")) \
   __pragma(section(".CRT$XCU",read)) \
-  __declspec(allocate(".CRT$XCU")) static int (* _array ## _func)(void) = 
_func ## _constructor;
+  __declspec(allocate(".CRT$XCU")) int (* _array ## _func)(void) = _func ## 
_constructor;
 
 #elif defined (_MSC_VER)
 


Reply via email to