--- Begin Message ---
Package: release.debian.org
User: release.debian....@packages.debian.org
Usertags: unblock
Severity: normal
Please unblock package cinnamon
The latest upload includes fixes for 3 important bugs. The fixes are simple,
but the impact on the user experience is large.
The fixes all come from upstream. They are:
photoframe-desklet-fix-memory-leak.patch. (Closes: #761314)
-> This prevents a very bad memory leak. The upstream patch includes a
refactoring that makes the diff less readable, so I've modified it to be as
minimal as possible.
Upstream change:
https://github.com/linuxmint/Cinnamon/commit/2f15a99773302db75f8ad1a60a21e7954218f9c6
fix-theme-regressions-with-gtk-3.14.patch. (Closes: #770556)
-> This disables shadows on icons, because with the new GTK, the shadows for
SVG icons don't get properly scaled and appear huge in the screen, making some
particular screens (as the dropdown selector for opening a file with a program)
practically unusable.
fix-cinnamon2d-session.patch (Closes: #772145)
-> This is a very simple patch, but without it, it's not possible to use
cinnamon2d.
I'm including the full debdiff, plus the three patches on their own, to make it
easier to look at them.
unblock cinnamon/2.2.16-5
--
Thanks!
Marga
Description: Fix theme regressions with gtk 3.14
Author: leigh123linux
Origin: git of fedora packages
---
--- a/data/theme/cinnamon.css
+++ b/data/theme/cinnamon.css
@@ -1445,7 +1445,8 @@
.applet-icon:hover,
.applet-box:hover > .applet-icon {
color: #fff;
- icon-shadow: white 0px 0px 3px;
+/* Broken with GNOME 3.14 (icon-size is not honoured)
+ * icon-shadow: white 0px 0px 3px;*/
}
/* ===================================================================
--- a/files/usr/lib/cinnamon-settings/modules/cs_themes.py
+++ b/files/usr/lib/cinnamon-settings/modules/cs_themes.py
@@ -91,7 +91,7 @@
def _load_icon_themes(self):
dirs = ("/usr/share/icons", os.path.join(os.path.expanduser("~"), ".icons"))
- valid = walk_directories(dirs, lambda d: os.path.isdir(d) and not os.path.exists(os.path.join(d, "cursors")) and os.path.exists(os.path.join(d, "index.theme")))
+ valid = walk_directories(dirs, lambda d: os.path.isdir(d) and os.path.exists(os.path.join(d, "index.theme")))
valid.sort(lambda a,b: cmp(a.lower(), b.lower()))
res = []
for i in valid:
diff -Nru cinnamon-2.2.16/debian/changelog cinnamon-2.2.16/debian/changelog
--- cinnamon-2.2.16/debian/changelog 2014-10-25 20:00:57.000000000 +0200
+++ cinnamon-2.2.16/debian/changelog 2014-12-05 15:43:28.000000000 +0100
@@ -1,3 +1,12 @@
+cinnamon (2.2.16-5) unstable; urgency=medium
+
+ [ Fabio Fantoni ]
+ * New patch: photoframe-desklet-fix-memory-leak.patch. (Closes: #761314)
+ * New patch: fix-theme-regressions-with-gtk-3.14.patch. (Closes: #770556)
+ * New patch: fix-cinnamon2d-session.patch (Closes: #772145).
+
+ -- Margarita Manterola <ma...@debian.org> Fri, 05 Dec 2014 15:43:08 +0100
+
cinnamon (2.2.16-4) unstable; urgency=medium
[ Maximiliano Curia ]
diff -Nru cinnamon-2.2.16/debian/patches/fix-cinnamon2d-session.patch cinnamon-2.2.16/debian/patches/fix-cinnamon2d-session.patch
--- cinnamon-2.2.16/debian/patches/fix-cinnamon2d-session.patch 1970-01-01 01:00:00.000000000 +0100
+++ cinnamon-2.2.16/debian/patches/fix-cinnamon2d-session.patch 2014-12-05 15:43:28.000000000 +0100
@@ -0,0 +1,13 @@
+Description: Fix 2d session requirements.
+Author: Michael Webster <miketwebs...@gmail.com>
+Origin: upstream - e9c28b75626f180a67c8ed577ac284ea005e8a2d
+--- a/files/usr/share/cinnamon-session/sessions/cinnamon2d.session
++++ b/files/usr/share/cinnamon-session/sessions/cinnamon2d.session
+@@ -1,6 +1,6 @@
+ [Cinnamon Session]
+ Name=Cinnamon (Software Rendering)
+-RequiredComponents=cinnamon;cinnamon-polkit-gnome-authentication-agent-1;cinnamon-settings-daemon;cinnamon-screensaver;nemo-autostart;nm-applet;
++RequiredComponents=cinnamon2d;cinnamon-polkit-gnome-authentication-agent-1;cinnamon-settings-daemon;cinnamon-screensaver;nemo-autostart;nm-applet;
+ DesktopName=X-Cinnamon
+
+
diff -Nru cinnamon-2.2.16/debian/patches/fix-theme-regressions-with-gtk-3.14.patch cinnamon-2.2.16/debian/patches/fix-theme-regressions-with-gtk-3.14.patch
--- cinnamon-2.2.16/debian/patches/fix-theme-regressions-with-gtk-3.14.patch 1970-01-01 01:00:00.000000000 +0100
+++ cinnamon-2.2.16/debian/patches/fix-theme-regressions-with-gtk-3.14.patch 2014-12-05 15:43:28.000000000 +0100
@@ -0,0 +1,27 @@
+Description: Fix theme regressions with gtk 3.14
+Author: leigh123linux
+Origin: git of fedora packages
+---
+--- a/data/theme/cinnamon.css
++++ b/data/theme/cinnamon.css
+@@ -1445,7 +1445,8 @@
+ .applet-icon:hover,
+ .applet-box:hover > .applet-icon {
+ color: #fff;
+- icon-shadow: white 0px 0px 3px;
++/* Broken with GNOME 3.14 (icon-size is not honoured)
++ * icon-shadow: white 0px 0px 3px;*/
+ }
+
+ /* ===================================================================
+--- a/files/usr/lib/cinnamon-settings/modules/cs_themes.py
++++ b/files/usr/lib/cinnamon-settings/modules/cs_themes.py
+@@ -91,7 +91,7 @@
+
+ def _load_icon_themes(self):
+ dirs = ("/usr/share/icons", os.path.join(os.path.expanduser("~"), ".icons"))
+- valid = walk_directories(dirs, lambda d: os.path.isdir(d) and not os.path.exists(os.path.join(d, "cursors")) and os.path.exists(os.path.join(d, "index.theme")))
++ valid = walk_directories(dirs, lambda d: os.path.isdir(d) and os.path.exists(os.path.join(d, "index.theme")))
+ valid.sort(lambda a,b: cmp(a.lower(), b.lower()))
+ res = []
+ for i in valid:
diff -Nru cinnamon-2.2.16/debian/patches/photoframe-desklet-fix-memory-leak.patch cinnamon-2.2.16/debian/patches/photoframe-desklet-fix-memory-leak.patch
--- cinnamon-2.2.16/debian/patches/photoframe-desklet-fix-memory-leak.patch 1970-01-01 01:00:00.000000000 +0100
+++ cinnamon-2.2.16/debian/patches/photoframe-desklet-fix-memory-leak.patch 2014-12-05 15:43:28.000000000 +0100
@@ -0,0 +1,93 @@
+Description: photoframe desklet: fix mega leak, don't cache all images,
+ destroy old images.
+Author: Michael Webster <miketwebs...@gmail.com>
+Origin: upstream - 2f15a99773302db75f8ad1a60a21e7954218f9c6
+---
+ .../desklets/photofr...@cinnamon.org/desklet.js | 99 +++++++++++++---------
+ 1 file changed, 57 insertions(+), 42 deletions(-)
+
+Index: cinnamon/files/usr/share/cinnamon/desklets/photofr...@cinnamon.org/desklet.js
+===================================================================
+--- cinnamon.orig/files/usr/share/cinnamon/desklets/photofr...@cinnamon.org/desklet.js 2014-09-27 14:59:30.621794888 +0200
++++ cinnamon/files/usr/share/cinnamon/desklets/photofr...@cinnamon.org/desklet.js 2014-11-21 21:58:14.173417652 +0100
+@@ -92,6 +92,8 @@
+ Mainloop.source_remove(this.update_id);
+ this.update_id = null;
+ this._setup_dir_monitor();
++ if (this.currentPicture)
++ this.currentPicture.destroy();
+ this._photoFrame.destroy();
+ this.setup_display();
+ },
+@@ -142,12 +144,12 @@
+ }
+
+ if (this.dir_file.query_exists(null)) {
+- let fileEnum = this.dir_file.enumerate_children('standard::*', Gio.FileQueryInfoFlags.NONE, null);
++ let fileEnum = this.dir_file.enumerate_children('standard::type,standard::name', Gio.FileQueryInfoFlags.NONE, null);
+ let info;
+ while ((info = fileEnum.next_file(null)) != null) {
+ let fileType = info.get_file_type();
+ if (fileType != Gio.FileType.DIRECTORY) {
+- this._loadImage(this.dir + "/" + info.get_name());
++ this._images.push(this.dir + "/" + info.get_name());
+ }
+ }
+
+@@ -170,14 +172,21 @@
+ }
+ this.updateInProgress = true;
+ try {
+- let image;
++ let image_path;
+ if (!this.shuffle){
+- image = this._images.shift();
+- this._images.push(image);
++ image_path = this._images.shift();
++ this._images.push(image_path);
+ } else {
+- image = this._images[Math.floor(Math.random() * this._images.length)];
++ image_path = this._images[Math.floor(Math.random() * this._images.length)];
+ }
+
++ if (!image_path) {
++ this.updateInProgress = false;
++ return;
++ }
++
++ let image = this._loadImage(image_path);
++
+ if (image){
+ let height, width;
+ let imageRatio = image.width/image.height;
+@@ -193,6 +202,7 @@
+
+ image.set_size(width, height);
+
++ let old_pic = this.currentPicture;
+ this.currentPicture = image;
+ if (this.fade_delay > 0) {
+ Tweener.addTween(this._bin,
+@@ -211,7 +221,7 @@
+ } else {
+ this._bin.set_child(this.currentPicture);
+ }
+-
++ old_pic.destroy();
+ }
+ } catch (e) {
+ global.logError(e);
+@@ -241,10 +251,10 @@
+
+ let image = St.TextureCache.get_default().load_uri_async(uri, this.width, this.height);
+
+- image._path = filePath;
+- this._images.push(image);
++ return image;
+ } catch (x) {
+- // Do nothing. Probably a non-image is in the folder
++ // Probably a non-image is in the folder
++ return null;
+ }
+ },
+ }
diff -Nru cinnamon-2.2.16/debian/patches/series cinnamon-2.2.16/debian/patches/series
--- cinnamon-2.2.16/debian/patches/series 2014-10-25 20:00:57.000000000 +0200
+++ cinnamon-2.2.16/debian/patches/series 2014-12-05 15:43:28.000000000 +0100
@@ -20,3 +20,6 @@
calendar-applet-upower-support
make_nm_optional
add_capi_search_path
+photoframe-desklet-fix-memory-leak.patch
+fix-theme-regressions-with-gtk-3.14.patch
+fix-cinnamon2d-session.patch
Description: Fix 2d session requirements.
Author: Michael Webster <miketwebs...@gmail.com>
Origin: upstream - e9c28b75626f180a67c8ed577ac284ea005e8a2d
--- a/files/usr/share/cinnamon-session/sessions/cinnamon2d.session
+++ b/files/usr/share/cinnamon-session/sessions/cinnamon2d.session
@@ -1,6 +1,6 @@
[Cinnamon Session]
Name=Cinnamon (Software Rendering)
-RequiredComponents=cinnamon;cinnamon-polkit-gnome-authentication-agent-1;cinnamon-settings-daemon;cinnamon-screensaver;nemo-autostart;nm-applet;
+RequiredComponents=cinnamon2d;cinnamon-polkit-gnome-authentication-agent-1;cinnamon-settings-daemon;cinnamon-screensaver;nemo-autostart;nm-applet;
DesktopName=X-Cinnamon
Description: photoframe desklet: fix mega leak, don't cache all images,
destroy old images.
Author: Michael Webster <miketwebs...@gmail.com>
Origin: upstream - 2f15a99773302db75f8ad1a60a21e7954218f9c6
---
.../desklets/photofr...@cinnamon.org/desklet.js | 99 +++++++++++++---------
1 file changed, 57 insertions(+), 42 deletions(-)
Index: cinnamon/files/usr/share/cinnamon/desklets/photofr...@cinnamon.org/desklet.js
===================================================================
--- cinnamon.orig/files/usr/share/cinnamon/desklets/photofr...@cinnamon.org/desklet.js 2014-09-27 14:59:30.621794888 +0200
+++ cinnamon/files/usr/share/cinnamon/desklets/photofr...@cinnamon.org/desklet.js 2014-11-21 21:58:14.173417652 +0100
@@ -92,6 +92,8 @@
Mainloop.source_remove(this.update_id);
this.update_id = null;
this._setup_dir_monitor();
+ if (this.currentPicture)
+ this.currentPicture.destroy();
this._photoFrame.destroy();
this.setup_display();
},
@@ -142,12 +144,12 @@
}
if (this.dir_file.query_exists(null)) {
- let fileEnum = this.dir_file.enumerate_children('standard::*', Gio.FileQueryInfoFlags.NONE, null);
+ let fileEnum = this.dir_file.enumerate_children('standard::type,standard::name', Gio.FileQueryInfoFlags.NONE, null);
let info;
while ((info = fileEnum.next_file(null)) != null) {
let fileType = info.get_file_type();
if (fileType != Gio.FileType.DIRECTORY) {
- this._loadImage(this.dir + "/" + info.get_name());
+ this._images.push(this.dir + "/" + info.get_name());
}
}
@@ -170,14 +172,21 @@
}
this.updateInProgress = true;
try {
- let image;
+ let image_path;
if (!this.shuffle){
- image = this._images.shift();
- this._images.push(image);
+ image_path = this._images.shift();
+ this._images.push(image_path);
} else {
- image = this._images[Math.floor(Math.random() * this._images.length)];
+ image_path = this._images[Math.floor(Math.random() * this._images.length)];
}
+ if (!image_path) {
+ this.updateInProgress = false;
+ return;
+ }
+
+ let image = this._loadImage(image_path);
+
if (image){
let height, width;
let imageRatio = image.width/image.height;
@@ -193,6 +202,7 @@
image.set_size(width, height);
+ let old_pic = this.currentPicture;
this.currentPicture = image;
if (this.fade_delay > 0) {
Tweener.addTween(this._bin,
@@ -211,7 +221,7 @@
} else {
this._bin.set_child(this.currentPicture);
}
-
+ old_pic.destroy();
}
} catch (e) {
global.logError(e);
@@ -241,10 +251,10 @@
let image = St.TextureCache.get_default().load_uri_async(uri, this.width, this.height);
- image._path = filePath;
- this._images.push(image);
+ return image;
} catch (x) {
- // Do nothing. Probably a non-image is in the folder
+ // Probably a non-image is in the folder
+ return null;
}
},
}
--- End Message ---