[mutter/gnome-3-28] clutter-offscreen-effect: Disable if no texture



commit 1b78ca8c5eef39831639a0bde8d613cd1bb024dc
Author: Daniel van Vugt <daniel van vugt canonical com>
Date:   Thu Oct 11 07:02:05 2018 +0000

    clutter-offscreen-effect: Disable if no texture
    
    If texture allocation fails (e.g. on an old GPU with size limit 2048)
    then `update_fbo` would return `FALSE` but leaves `priv->offscreen`
    as non-NULL. So the next paint will try to use the offscreen with a
    `NULL` texture and crashes. The solution is simply to ensure that
    `priv->offscreen` is NULL if there is no `priv->texture`, so the default
    (non-offscreen) paint path gets used instead.
    
    Bug reported and fix provided by Gert van de Kraats.
    
    https://launchpad.net/bugs/1795774
    
    
    (cherry picked from commit f31cf0c3ef99b27c0b2c0161fc9fc1eb82778b2e)

 clutter/clutter/clutter-offscreen-effect.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)
---
diff --git a/clutter/clutter/clutter-offscreen-effect.c b/clutter/clutter/clutter-offscreen-effect.c
index 1dbf29f60..5db40b79a 100644
--- a/clutter/clutter/clutter-offscreen-effect.c
+++ b/clutter/clutter/clutter-offscreen-effect.c
@@ -186,6 +186,12 @@ update_fbo (ClutterEffect *effect, int fbo_width, int fbo_height)
       priv->texture = NULL;
     }
 
+  if (priv->offscreen != NULL)
+    {
+      cogl_handle_unref (priv->offscreen);
+      priv->offscreen = NULL;
+    }
+
   priv->texture =
     clutter_offscreen_effect_create_texture (self, fbo_width, fbo_height);
   if (priv->texture == NULL)
@@ -196,9 +202,6 @@ update_fbo (ClutterEffect *effect, int fbo_width, int fbo_height)
   priv->fbo_width = fbo_width;
   priv->fbo_height = fbo_height;
 
-  if (priv->offscreen != NULL)
-    cogl_handle_unref (priv->offscreen);
-
   priv->offscreen = cogl_offscreen_new_to_texture (priv->texture);
   if (priv->offscreen == NULL)
     {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]