diff --git a/gnome-shell-Fix-offscreen-leak.patch b/gnome-shell-Fix-offscreen-leak.patch new file mode 100644 index 0000000..bdc925c --- /dev/null +++ b/gnome-shell-Fix-offscreen-leak.patch @@ -0,0 +1,66 @@ +From 4a8b9d62c98539972cf553fa8101567ce37d73c4 Mon Sep 17 00:00:00 2001 +From: Aaron Plattner +Date: Fri, 18 Mar 2016 16:00:05 -0700 +Subject: [PATCH] st: Fix offscreen leak if cogl_framebuffer_allocate fails +X-NVConfidentiality: public + +If cogl_framebuffer_allocate fails in _st_create_shadow_pipeline_from_actor, the +CoglOffscreen* that was allocated earlier in the function is leaked. + +https://bugzilla.gnome.org/show_bug.cgi?id=735705 + +Signed-off-by: Aaron Plattner +--- + src/st/st-private.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/st/st-private.c b/src/st/st-private.c +index 559336c42d15..d40eceb86c78 100644 +--- a/src/st/st-private.c ++++ b/src/st/st-private.c +@@ -425,40 +425,41 @@ _st_create_shadow_pipeline_from_actor (StShadow *shadow_spec, + clutter_actor_get_allocation_box (actor, &box); + clutter_actor_box_get_size (&box, &width, &height); + + if (width == 0 || height == 0) + return NULL; + + buffer = cogl_texture_new_with_size (width, + height, + COGL_TEXTURE_NO_SLICING, + COGL_PIXEL_FORMAT_ANY); + + if (buffer == NULL) + return NULL; + + offscreen = cogl_offscreen_new_with_texture (buffer); + fb = COGL_FRAMEBUFFER (offscreen); + + if (!cogl_framebuffer_allocate (fb, &catch_error)) + { + cogl_error_free (catch_error); ++ cogl_object_unref (offscreen); + cogl_object_unref (buffer); + return NULL; + } + + cogl_color_init_from_4ub (&clear_color, 0, 0, 0, 0); + + /* XXX: There's no way to render a ClutterActor to an offscreen + * as it uses the implicit API. */ + G_GNUC_BEGIN_IGNORE_DEPRECATIONS; + cogl_push_framebuffer (fb); + G_GNUC_END_IGNORE_DEPRECATIONS; + + cogl_framebuffer_clear (fb, COGL_BUFFER_BIT_COLOR, &clear_color); + cogl_framebuffer_translate (fb, -box.x1, -box.y1, 0); + cogl_framebuffer_orthographic (fb, 0, 0, width, height, 0, 1.0); + + clutter_actor_set_opacity_override (actor, 255); + clutter_actor_paint (actor); + clutter_actor_set_opacity_override (actor, -1); + +-- +2.7.4 + + diff --git a/gnome-shell.changes b/gnome-shell.changes index 8b30892..da9b5d0 100644 --- a/gnome-shell.changes +++ b/gnome-shell.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Thu Mar 31 13:07:40 UTC 2016 - zaitor@opensuse.org + +- Add gnome-shell-Fix-offscreen-leak.patch: Fix offscreen leak if + cogl_framebuffer_allocate fails (bgo#735705). + ------------------------------------------------------------------- Wed Mar 23 08:16:13 UTC 2016 - dimstar@opensuse.org diff --git a/gnome-shell.spec b/gnome-shell.spec index 7363045..597dc3b 100644 --- a/gnome-shell.spec +++ b/gnome-shell.spec @@ -26,6 +26,8 @@ Url: http://live.gnome.org/GnomeShell Source: http://download.gnome.org/sources/gnome-shell/3.20/%{name}-%{version}.tar.xz # PATCH-FIX-UPSTREAM gnome-shell-private-connection.patch bnc#751211 bgo#646187 dimstar@opensuse.org -- create private connections if the user is not authorized Patch1: gnome-shell-private-connection.patch +# PATCH-FIX-UPSTREAM gnome-shell-Fix-offscreen-leak.patch bgo#735705 zaitor@opensuse.org -- Fix offscreen leak if cogl_framebuffer_allocate fails +Patch2: gnome-shell-Fix-offscreen-leak.patch BuildRequires: docbook-xsl-stylesheets BuildRequires: gcc-c++ BuildRequires: intltool @@ -146,6 +148,7 @@ into GNOME Shell calendar. %prep %setup -q %patch1 -p1 +%patch2 -p1 translation-update-upstream %build