Hello community,

here is the log from the commit of package gnome-shell for openSUSE:Factory 
checked in at 2016-05-20 11:55:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gnome-shell (Old)
 and      /work/SRC/openSUSE:Factory/.gnome-shell.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gnome-shell"

Changes:
--------
--- /work/SRC/openSUSE:Factory/gnome-shell/gnome-shell.changes  2016-04-15 
19:05:53.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.gnome-shell.new/gnome-shell.changes     
2016-05-20 11:55:35.000000000 +0200
@@ -1,0 +2,21 @@
+Wed May 11 08:29:31 UTC 2016 - zai...@opensuse.org
+
+- Add gnome-shell-cogl-nvidia-fixes.patch: Init framebuffer early
+  to fix gnome-shell crash on NVIDIA drivers (boo#976871,
+  bgo#764898).
+
+-------------------------------------------------------------------
+Wed May 11 08:29:30 UTC 2016 - zai...@opensuse.org
+
+- Update to version 3.20.2:
+  + Save screencasts in HOME if XDG_VIDEO_DIR doesn't exist
+    (bgo#765015).
+  + Don't show orientation lock when g-s-d won't rotate
+    (bgo#765267).
+  + Misc. bug fixes: bgo#722752, bgo#765061, bgo#763068,
+    bgo#765607, bgo#757676.
+  + Updated translations.
+- Conditionally apply translations-update-upstream BuildRequires
+  and macro for non-openSUSE only.
+
+-------------------------------------------------------------------

Old:
----
  gnome-shell-3.20.1.tar.xz

New:
----
  gnome-shell-3.20.2.tar.xz
  gnome-shell-cogl-nvidia-fixes.patch

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

Other differences:
------------------
++++++ gnome-shell.spec ++++++
--- /var/tmp/diff_new_pack.9SJEnV/_old  2016-05-20 11:55:36.000000000 +0200
+++ /var/tmp/diff_new_pack.9SJEnV/_new  2016-05-20 11:55:36.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           gnome-shell
-Version:        3.20.1
+Version:        3.20.2
 Release:        0
 Summary:        GNOME Shell
 License:        GPL-2.0+
@@ -26,10 +26,14 @@
 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 dims...@opensuse.org -- create private connections if the user is 
not authorized
 Patch1:         gnome-shell-private-connection.patch
+# PATCH-FIX-UPSTREAM gnome-shell-cogl-nvidia-fixes.patch boo#976871 bgo#764898 
zai...@opensuse.org -- Init framebuffer early to fix gnome-shell crash on 
NVIDIA drivers
+Patch2:         gnome-shell-cogl-nvidia-fixes.patch
 BuildRequires:  docbook-xsl-stylesheets
 BuildRequires:  gcc-c++
 BuildRequires:  intltool
+%if !0%{?is_opensuse}
 BuildRequires:  translation-update-upstream
+%endif
 BuildRequires:  update-desktop-files
 BuildRequires:  xsltproc
 BuildRequires:  python(abi) >= 3
@@ -146,7 +150,10 @@
 %prep
 %setup -q
 %patch1 -p1
+%patch2 -p1
+%if !0%{?is_opensuse}
 translation-update-upstream
+%endif
 
 %build
 export BROWSER_PLUGIN_DIR=%{_libdir}/browser-plugins

++++++ gnome-shell-3.20.1.tar.xz -> gnome-shell-3.20.2.tar.xz ++++++
++++ 4365 lines of diff (skipped)

++++++ gnome-shell-cogl-nvidia-fixes.patch ++++++
>From 5226d8b0864fa894f180b8584e837aaf565578b2 Mon Sep 17 00:00:00 2001
From: Martin Szulecki <martin.szule...@libimobiledevice.org>
Date: Tue, 17 May 2016 15:00:04 +0200
Subject: [PATCH] st: Init framebuffer early to fix gnome-shell crash on NVIDIA
 drivers

Checking offscreen for COGL_INVALID_HANDLE is not sufficient,
as cogl_offscreen_new_with_texture doesn't initialize framebuffer
objects but lets Cogl solve this the lazy way.
cogl_offscreen_new_with_texture will never return COGL_INVALID_HANDLE
anyways.

https://bugzilla.gnome.org/show_bug.cgi?id=764898
---
 src/st/st-theme-node-drawing.c    | 18 ++++++++++++------
 src/st/st-theme-node-transition.c | 25 ++++++++++++++++++++-----
 2 files changed, 32 insertions(+), 11 deletions(-)

diff --git a/src/st/st-theme-node-drawing.c b/src/st/st-theme-node-drawing.c
index 85feb20..8942966 100644
--- a/src/st/st-theme-node-drawing.c
+++ b/src/st/st-theme-node-drawing.c
@@ -2224,6 +2224,7 @@ st_theme_node_prerender_shadow (StThemeNodePaintState 
*state)
   int max_borders[4];
   int center_radius, corner_id;
   CoglHandle buffer, offscreen = COGL_INVALID_HANDLE;
+  CoglError *error = NULL;
 
   /* Get infos from the node */
   if (state->alloc_width < node->box_shadow_min_width ||
@@ -2264,10 +2265,12 @@ st_theme_node_prerender_shadow (StThemeNodePaintState 
*state)
                                        state->box_shadow_height,
                                        COGL_TEXTURE_NO_SLICING,
                                        COGL_PIXEL_FORMAT_ANY);
-  if (buffer != COGL_INVALID_HANDLE)
-    offscreen = cogl_offscreen_new_with_texture (buffer);
+  if (buffer == NULL)
+    return;
 
-  if (offscreen != COGL_INVALID_HANDLE)
+  offscreen = cogl_offscreen_new_with_texture (buffer);
+
+  if (cogl_framebuffer_allocate (COGL_FRAMEBUFFER (offscreen), &error))
     {
       ClutterActorBox box = { 0, 0, state->box_shadow_width, 
state->box_shadow_height};
 
@@ -2277,14 +2280,17 @@ st_theme_node_prerender_shadow (StThemeNodePaintState 
*state)
       cogl_framebuffer_clear4f (offscreen, COGL_BUFFER_BIT_COLOR, 0, 0, 0, 0);
 
       st_theme_node_paint_borders (state, offscreen, &box, 0xFF);
-      cogl_handle_unref (offscreen);
 
       state->box_shadow_pipeline = _st_create_shadow_pipeline 
(st_theme_node_get_box_shadow (node),
                                                                buffer);
     }
+  else
+    {
+      cogl_error_free (error);
+    }
 
-  if (buffer != COGL_INVALID_HANDLE)
-    cogl_handle_unref (buffer);
+  cogl_handle_unref (offscreen);
+  cogl_handle_unref (buffer);
 }
 
 static void
diff --git a/src/st/st-theme-node-transition.c 
b/src/st/st-theme-node-transition.c
index 1eef17b..afde977 100644
--- a/src/st/st-theme-node-transition.c
+++ b/src/st/st-theme-node-transition.c
@@ -241,6 +241,7 @@ setup_framebuffers (StThemeNodeTransition *transition,
 {
   StThemeNodeTransitionPrivate *priv = transition->priv;
   guint width, height;
+  CoglError *catch_error = NULL;
 
   /* template material to avoid unnecessary shader compilation */
   static CoglHandle material_template = COGL_INVALID_HANDLE;
@@ -263,19 +264,33 @@ setup_framebuffers (StThemeNodeTransition *transition,
                                                   COGL_TEXTURE_NO_SLICING,
                                                   COGL_PIXEL_FORMAT_ANY);
 
-  g_return_val_if_fail (priv->old_texture != COGL_INVALID_HANDLE, FALSE);
-  g_return_val_if_fail (priv->new_texture != COGL_INVALID_HANDLE, FALSE);
+  if (priv->old_texture == COGL_INVALID_HANDLE)
+    return FALSE;
+
+  if (priv->new_texture == COGL_INVALID_HANDLE)
+    return FALSE;
 
   if (priv->old_offscreen)
     cogl_handle_unref (priv->old_offscreen);
   priv->old_offscreen = cogl_offscreen_new_with_texture (priv->old_texture);
+  if (!cogl_framebuffer_allocate (COGL_FRAMEBUFFER (priv->old_offscreen), 
&catch_error))
+    {
+      cogl_object_unref (priv->old_offscreen);
+      cogl_error_free (catch_error);
+      priv->old_offscreen = COGL_INVALID_HANDLE;
+      return FALSE;
+    }
 
   if (priv->new_offscreen)
     cogl_handle_unref (priv->new_offscreen);
   priv->new_offscreen = cogl_offscreen_new_with_texture (priv->new_texture);
-
-  g_return_val_if_fail (priv->old_offscreen != COGL_INVALID_HANDLE, FALSE);
-  g_return_val_if_fail (priv->new_offscreen != COGL_INVALID_HANDLE, FALSE);
+  if (!cogl_framebuffer_allocate (COGL_FRAMEBUFFER (priv->new_offscreen), 
&catch_error))
+    {
+      cogl_object_unref (priv->new_offscreen);
+      cogl_error_free (catch_error);
+      priv->new_offscreen = COGL_INVALID_HANDLE;
+      return FALSE;
+    }
 
   if (priv->material == NULL)
     {
-- 
2.8.2

Reply via email to