[mutter/gnome-3-12] background: Do not assume GLSL is available
- From: Adel Gadllah <agadllah src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/gnome-3-12] background: Do not assume GLSL is available
- Date: Thu, 24 Jul 2014 14:57:47 +0000 (UTC)
commit f72f431a99a584fd666916d7ea9bc5ff1935580b
Author: Adel Gadllah <adel gadllah gmail com>
Date: Thu Jul 24 15:39:26 2014 +0200
background: Do not assume GLSL is available
Some hardware does not support it causing crashes in cogl during paint.
https://bugzilla.gnome.org/show_bug.cgi?id=733623
src/compositor/meta-background.c | 17 ++++++++++++++++-
1 files changed, 16 insertions(+), 1 deletions(-)
---
diff --git a/src/compositor/meta-background.c b/src/compositor/meta-background.c
index 4337f70..6c58e76 100644
--- a/src/compositor/meta-background.c
+++ b/src/compositor/meta-background.c
@@ -500,7 +500,8 @@ set_brightness (MetaBackground *self,
priv->brightness = brightness;
- if (priv->effects & META_BACKGROUND_EFFECTS_VIGNETTE)
+ if (clutter_feature_available (CLUTTER_FEATURE_SHADERS_GLSL) &&
+ priv->effects & META_BACKGROUND_EFFECTS_VIGNETTE)
{
ensure_pipeline (self);
cogl_pipeline_set_uniform_1f (priv->pipeline,
@@ -508,6 +509,14 @@ set_brightness (MetaBackground *self,
"brightness"),
priv->brightness);
}
+ else
+ {
+ ensure_pipeline (self);
+ CoglColor blend_color;
+ cogl_color_init_from_4f (&blend_color, brightness, brightness, brightness, 1.0);
+ cogl_pipeline_set_layer_combine (priv->pipeline, 1, "RGB=MODULATE(PREVIOUS, CONSTANT)
A=REPLACE(PREVIOUS)", NULL);
+ cogl_pipeline_set_layer_combine_constant (priv->pipeline, 1, &blend_color);
+ }
clutter_content_invalidate (CLUTTER_CONTENT (self));
@@ -525,6 +534,9 @@ set_vignette_sharpness (MetaBackground *self,
priv->vignette_sharpness = sharpness;
+ if (!clutter_feature_available (CLUTTER_FEATURE_SHADERS_GLSL))
+ return;
+
if (priv->effects & META_BACKGROUND_EFFECTS_VIGNETTE)
{
ensure_pipeline (self);
@@ -545,6 +557,9 @@ add_vignette (MetaBackground *self)
MetaBackgroundPrivate *priv = self->priv;
static CoglSnippet *snippet = NULL;
+ if (!clutter_feature_available (CLUTTER_FEATURE_SHADERS_GLSL))
+ return;
+
ensure_pipeline (self);
/* Cogl automatically caches pipelines with no eviction policy,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]