Rebased and tweaked OBS-URL: https://build.opensuse.org/request/show/677986 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/mutter?expand=0&rev=310
55 lines
1.9 KiB
Diff
55 lines
1.9 KiB
Diff
From c6223ffea87831f9bd51d11c50e953f0318459e0 Mon Sep 17 00:00:00 2001
|
|
From: Daniel van Vugt <daniel.van.vugt@canonical.com>
|
|
Date: Thu, 11 Oct 2018 07:02:05 +0000
|
|
Subject: [PATCH] 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)
|
|
|
|
(cherry picked from commit 1b78ca8c5eef39831639a0bde8d613cd1bb024dc)
|
|
---
|
|
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)
|
|
{
|
|
--
|
|
2.18.1
|
|
|