mirror of
https://github.com/brl/mutter.git
synced 2024-11-28 02:50:41 -05:00
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
This commit is contained in:
parent
3d1d155561
commit
72ec20e48f
@ -501,7 +501,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,
|
||||
@ -509,6 +510,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));
|
||||
|
||||
@ -526,6 +535,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);
|
||||
@ -546,6 +558,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,
|
||||
|
Loading…
Reference in New Issue
Block a user