summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--clutter/clutter-blur-effect.c14
-rw-r--r--clutter/clutter-colorize-effect.c10
-rw-r--r--clutter/clutter-desaturate-effect.c10
-rw-r--r--clutter/clutter-shader-effect.c31
4 files changed, 34 insertions, 31 deletions
diff --git a/clutter/clutter-blur-effect.c b/clutter/clutter-blur-effect.c
index 34e9a8099..7ac2622d0 100644
--- a/clutter/clutter-blur-effect.c
+++ b/clutter/clutter-blur-effect.c
@@ -221,18 +221,18 @@ clutter_blur_effect_paint_target (ClutterOffscreenEffect *effect)
if (self->program == COGL_INVALID_HANDLE)
goto out;
- cogl_program_use (self->program);
-
if (self->tex_uniform > -1)
- cogl_program_uniform_1i (self->tex_uniform, 0);
+ cogl_program_set_uniform_1i (self->program, self->tex_uniform, 0);
if (self->x_step_uniform > -1)
- cogl_program_uniform_1f (self->x_step_uniform, self->x_step);
+ cogl_program_set_uniform_1f (self->program,
+ self->x_step_uniform,
+ self->x_step);
if (self->y_step_uniform > -1)
- cogl_program_uniform_1f (self->y_step_uniform, self->y_step);
-
- cogl_program_use (COGL_INVALID_HANDLE);
+ cogl_program_set_uniform_1f (self->program,
+ self->y_step_uniform,
+ self->y_step);
material = clutter_offscreen_effect_get_target (effect);
cogl_material_set_user_program (material, self->program);
diff --git a/clutter/clutter-colorize-effect.c b/clutter/clutter-colorize-effect.c
index 7168a67cf..bf04941cc 100644
--- a/clutter/clutter-colorize-effect.c
+++ b/clutter/clutter-colorize-effect.c
@@ -200,10 +200,8 @@ clutter_colorize_effect_paint_target (ClutterOffscreenEffect *effect)
if (self->program == COGL_INVALID_HANDLE)
goto out;
- cogl_program_use (self->program);
-
if (self->tex_uniform > -1)
- cogl_program_uniform_1i (self->tex_uniform, 0);
+ cogl_program_set_uniform_1i (self->program, self->tex_uniform, 0);
if (self->tint_uniform > -1)
{
@@ -213,11 +211,11 @@ clutter_colorize_effect_paint_target (ClutterOffscreenEffect *effect)
self->tint.blue / 255.0
};
- cogl_program_uniform_float (self->tint_uniform, 3, 1, tint);
+ cogl_program_set_uniform_float (self->program, self->tint_uniform,
+ 3, 1,
+ tint);
}
- cogl_program_use (COGL_INVALID_HANDLE);
-
material = clutter_offscreen_effect_get_target (effect);
cogl_material_set_user_program (material, self->program);
diff --git a/clutter/clutter-desaturate-effect.c b/clutter/clutter-desaturate-effect.c
index 59be9eae3..6018b1918 100644
--- a/clutter/clutter-desaturate-effect.c
+++ b/clutter/clutter-desaturate-effect.c
@@ -209,15 +209,13 @@ clutter_desaturate_effect_paint_target (ClutterOffscreenEffect *effect)
if (self->program == COGL_INVALID_HANDLE)
goto out;
- cogl_program_use (self->program);
-
if (self->tex_uniform > -1)
- cogl_program_uniform_1i (self->tex_uniform, 0);
+ cogl_program_set_uniform_1i (self->program, self->tex_uniform, 0);
if (self->factor_uniform > -1)
- cogl_program_uniform_1f (self->factor_uniform, self->factor);
-
- cogl_program_use (COGL_INVALID_HANDLE);
+ cogl_program_set_uniform_1f (self->program,
+ self->factor_uniform,
+ self->factor);
material = clutter_offscreen_effect_get_target (effect);
cogl_material_set_user_program (material, self->program);
diff --git a/clutter/clutter-shader-effect.c b/clutter/clutter-shader-effect.c
index fa8b6f564..8b0de595c 100644
--- a/clutter/clutter-shader-effect.c
+++ b/clutter/clutter-shader-effect.c
@@ -211,13 +211,11 @@ clutter_shader_effect_update_uniforms (ClutterShaderEffect *effect)
gpointer key, value;
gsize size;
- if (priv->uniforms == NULL)
+ if (priv->program == COGL_INVALID_HANDLE)
return;
- /* XXX - we need to do this dance here because the cogl_program_uniform*
- * family of functions do not take the program as a parameter
- */
- cogl_program_use (priv->program);
+ if (priv->uniforms == NULL)
+ return;
key = value = NULL;
g_hash_table_iter_init (&iter, priv->uniforms);
@@ -234,41 +232,50 @@ clutter_shader_effect_update_uniforms (ClutterShaderEffect *effect)
const GLfloat *floats;
floats = clutter_value_get_shader_float (&uniform->value, &size);
- cogl_program_uniform_float (uniform->location, size, 1, floats);
+ cogl_program_set_uniform_float (priv->program, uniform->location,
+ size, 1,
+ floats);
}
else if (CLUTTER_VALUE_HOLDS_SHADER_INT (&uniform->value))
{
const GLint *ints;
ints = clutter_value_get_shader_int (&uniform->value, &size);
- cogl_program_uniform_int (uniform->location, size, 1, ints);
+ cogl_program_set_uniform_int (priv->program, uniform->location,
+ size, 1,
+ ints);
}
else if (CLUTTER_VALUE_HOLDS_SHADER_MATRIX (&uniform->value))
{
const GLfloat *matrix;
matrix = clutter_value_get_shader_matrix (&uniform->value, &size);
- cogl_program_uniform_matrix (uniform->location, size, 1, FALSE, matrix);
+ cogl_program_set_uniform_matrix (priv->program, uniform->location,
+ size, 1,
+ FALSE,
+ matrix);
}
else if (G_VALUE_HOLDS_FLOAT (&uniform->value))
{
const GLfloat float_val = g_value_get_float (&uniform->value);
- cogl_program_uniform_float (uniform->location, 1, 1, &float_val);
+ cogl_program_set_uniform_float (priv->program, uniform->location,
+ 1, 1,
+ &float_val);
}
else if (G_VALUE_HOLDS_INT (&uniform->value))
{
const GLint int_val = g_value_get_int (&uniform->value);
- cogl_program_uniform_int (uniform->location, 1, 1, &int_val);
+ cogl_program_set_uniform_int (priv->program, uniform->location,
+ 1, 1,
+ &int_val);
}
else
g_warning ("Invalid uniform of type '%s' for name '%s'",
g_type_name (G_VALUE_TYPE (&uniform->value)),
uniform->name);
}
-
- cogl_program_use (COGL_INVALID_HANDLE);
}
static void