[clutter] Deprecate ClutterShader
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [clutter] Deprecate ClutterShader
- Date: Tue, 7 Jun 2011 13:16:34 +0000 (UTC)
commit 835fc2381c94fc46d5b6f6eef7f9d17db7e97411
Author: Emmanuele Bassi <ebassi linux intel com>
Date: Wed May 25 16:23:08 2011 +0100
Deprecate ClutterShader
With the instantiatable ClutterShaderEffect, the only reason for
ClutterShader to exist is to make the ClutterActor::paint implementation
miserable.
Yes, ClutterShader doesn't use a FBO, so it's "more efficient" on
ClutterTextures. It's also generally wrong unless you know *exactly* how
the actor's pipeline is set up â?? something we cannot even guarantee
internally unless we start doing lame type checks.
clutter/clutter-actor.c | 11 +++++++++
clutter/clutter-actor.h | 2 +
clutter/clutter-shader-types.h | 1 -
clutter/clutter-shader.c | 46 ++++++++++++++++++++++++++++++++++++--
clutter/clutter-shader.h | 13 +++++++++++
clutter/clutter-types.h | 2 +
tests/interactive/test-shader.c | 2 +
7 files changed, 73 insertions(+), 4 deletions(-)
---
diff --git a/clutter/clutter-actor.c b/clutter/clutter-actor.c
index fe97b75..6218277 100644
--- a/clutter/clutter-actor.c
+++ b/clutter/clutter-actor.c
@@ -9959,6 +9959,8 @@ destroy_shader_data (gpointer data)
* or %NULL if no shader is set.
*
* Since: 0.6
+ *
+ * Deprecated: 1.8: Use clutter_actor_get_effect() instead.
*/
ClutterShader *
clutter_actor_get_shader (ClutterActor *self)
@@ -9991,6 +9993,9 @@ clutter_actor_get_shader (ClutterActor *self)
* or removed
*
* Since: 0.6
+ *
+ * Deprecated: 1.8: Use #ClutterShaderEffect and
+ * clutter_actor_add_effect() instead.
*/
gboolean
clutter_actor_set_shader (ClutterActor *self,
@@ -10111,6 +10116,8 @@ clutter_actor_shader_post_paint (ClutterActor *actor)
* to @actor.
*
* Since: 1.0
+ *
+ * Deprecated: 1.8: Use clutter_shader_effect_set_uniform_value() instead
*/
void
clutter_actor_set_shader_param (ClutterActor *self,
@@ -10150,6 +10157,8 @@ clutter_actor_set_shader_param (ClutterActor *self,
* to @actor.
*
* Since: 0.8
+ *
+ * Deprecated: 1.8: Use clutter_shader_effect_set_uniform() instead
*/
void
clutter_actor_set_shader_param_float (ClutterActor *self,
@@ -10176,6 +10185,8 @@ clutter_actor_set_shader_param_float (ClutterActor *self,
* @actor.
*
* Since: 0.8
+ *
+ * Deprecated: 1.8: Use clutter_shader_effect_set_uniform() instead
*/
void
clutter_actor_set_shader_param_int (ClutterActor *self,
diff --git a/clutter/clutter-actor.h b/clutter/clutter-actor.h
index 68a5e0f..9e3aa90 100644
--- a/clutter/clutter-actor.h
+++ b/clutter/clutter-actor.h
@@ -537,6 +537,7 @@ gboolean clutter_actor_event (ClutterActor
ClutterActor * clutter_get_actor_by_gid (guint32 id_);
#endif
+#if !defined(CLUTTER_DISABLE_DEPRECATED) || defined(CLUTTER_COMPILATION)
gboolean clutter_actor_set_shader (ClutterActor *self,
ClutterShader *shader);
ClutterShader * clutter_actor_get_shader (ClutterActor *self);
@@ -549,6 +550,7 @@ void clutter_actor_set_shader_param_int (ClutterActor
void clutter_actor_set_shader_param_float (ClutterActor *self,
const gchar *param,
gfloat value);
+#endif /* CLUTTER_DISABLE_DEPRECATED */
void clutter_actor_set_anchor_point (ClutterActor *self,
gfloat anchor_x,
diff --git a/clutter/clutter-shader-types.h b/clutter/clutter-shader-types.h
index 1b48426..de81487 100644
--- a/clutter/clutter-shader-types.h
+++ b/clutter/clutter-shader-types.h
@@ -29,7 +29,6 @@
#define __CLUTTER_SHADER_TYPES_H__
#include <glib-object.h>
-#include <cogl/cogl.h>
G_BEGIN_DECLS
diff --git a/clutter/clutter-shader.c b/clutter/clutter-shader.c
index 59be19d..c66cb84 100644
--- a/clutter/clutter-shader.c
+++ b/clutter/clutter-shader.c
@@ -35,7 +35,10 @@
* possible to override the drawing pipeline by using small programs
* also known as "shaders".
*
- * #ClutterShader is available since Clutter 0.6
+ * #ClutterShader is available since Clutter 0.6.
+ *
+ * #ClutterShader is deprecated since Clutter 1.8; use #ClutterShaderEffect
+ * in newly written code.
*/
#ifdef HAVE_CONFIG_H
@@ -52,11 +55,12 @@
#include <glib.h>
#include <glib/gi18n-lib.h>
-#include "cogl/cogl.h"
+#include <cogl/cogl.h>
+
+#include "clutter-shader.h"
#include "clutter-debug.h"
#include "clutter-private.h"
-#include "clutter-shader.h"
/* global list of shaders */
static GList *clutter_shaders_list = NULL;
@@ -244,6 +248,8 @@ clutter_shader_class_init (ClutterShaderClass *klass)
* program, if any
*
* Since: 0.6
+ *
+ * Deprecated: 1.8: Use #ClutterShaderEffect instead.
*/
pspec = g_param_spec_string ("vertex-source",
P_("Vertex Source"),
@@ -259,6 +265,8 @@ clutter_shader_class_init (ClutterShaderClass *klass)
* GLSL source code for the fragment shader part of the shader program.
*
* Since: 0.6
+ *
+ * Deprecated: 1.8: Use #ClutterShaderEffect instead.
*/
pspec = g_param_spec_string ("fragment-source",
P_("Fragment Source"),
@@ -275,6 +283,8 @@ clutter_shader_class_init (ClutterShaderClass *klass)
* in the GL context.
*
* Since: 0.8
+ *
+ * Deprecated: 1.8: Use #ClutterShaderEffect instead.
*/
pspec = g_param_spec_boolean ("compiled",
P_("Compiled"),
@@ -290,6 +300,8 @@ clutter_shader_class_init (ClutterShaderClass *klass)
* Whether the shader is currently used in the GL rendering pipeline.
*
* Since: 0.6
+ *
+ * Deprecated: 1.8: Use #ClutterShaderEffect instead.
*/
pspec = g_param_spec_boolean ("enabled",
P_("Enabled"),
@@ -325,6 +337,8 @@ clutter_shader_init (ClutterShader *self)
* Return value: a new #ClutterShader.
*
* Since: 0.6
+ *
+ * Deprecated: 1.8: Use #ClutterShaderEffect instead.
*/
ClutterShader *
clutter_shader_new (void)
@@ -392,6 +406,8 @@ clutter_shader_set_source (ClutterShader *shader,
* program.
*
* Since: 0.6
+ *
+ * Deprecated: 1.8: Use #ClutterShaderEffect instead.
*/
void
clutter_shader_set_fragment_source (ClutterShader *shader,
@@ -414,6 +430,8 @@ clutter_shader_set_fragment_source (ClutterShader *shader,
* program.
*
* Since: 0.6
+ *
+ * Deprecated: 1.8: Use #ClutterShaderEffect instead.
*/
void
clutter_shader_set_vertex_source (ClutterShader *shader,
@@ -566,6 +584,8 @@ bind_glsl_shader (ClutterShader *self,
* Return value: returns TRUE if the shader was succesfully compiled.
*
* Since: 0.8
+ *
+ * Deprecated: 1.8: Use #ClutterShaderEffect instead.
*/
gboolean
clutter_shader_compile (ClutterShader *shader,
@@ -614,6 +634,8 @@ clutter_shader_compile (ClutterShader *shader,
* Frees up any GL context resources held by the shader.
*
* Since: 0.6
+ *
+ * Deprecated: 1.8: Use #ClutterShaderEffect instead.
*/
void
clutter_shader_release (ClutterShader *shader)
@@ -635,6 +657,8 @@ clutter_shader_release (ClutterShader *shader)
* Return value: %TRUE if the shader is compiled, linked and ready for use.
*
* Since: 0.8
+ *
+ * Deprecated: 1.8: Use #ClutterShaderEffect instead.
*/
gboolean
clutter_shader_is_compiled (ClutterShader *shader)
@@ -656,6 +680,8 @@ clutter_shader_is_compiled (ClutterShader *shader)
* used instead.
*
* Since: 0.6
+ *
+ * Deprecated: 1.8: Use #ClutterShaderEffect instead.
*/
void
clutter_shader_set_is_enabled (ClutterShader *shader,
@@ -703,6 +729,8 @@ clutter_shader_set_is_enabled (ClutterShader *shader,
* Return value: %TRUE if the shader is enabled.
*
* Since: 0.6
+ *
+ * Deprecated: 1.8: Use #ClutterShaderEffect instead.
*/
gboolean
clutter_shader_get_is_enabled (ClutterShader *shader)
@@ -723,6 +751,8 @@ clutter_shader_get_is_enabled (ClutterShader *shader)
* a #ClutterShader.
*
* Since: 1.0
+ *
+ * Deprecated: 1.8: Use #ClutterShaderEffect instead.
*/
void
clutter_shader_set_uniform (ClutterShader *shader,
@@ -814,6 +844,8 @@ _clutter_shader_release_all (void)
* shader object and should never be modified or freed
*
* Since: 0.6
+ *
+ * Deprecated: 1.8: Use #ClutterShaderEffect instead.
*/
G_CONST_RETURN gchar *
clutter_shader_get_fragment_source (ClutterShader *shader)
@@ -834,6 +866,8 @@ clutter_shader_get_fragment_source (ClutterShader *shader)
* shader object and should never be modified or freed
*
* Since: 0.6
+ *
+ * Deprecated: 1.8: Use #ClutterShaderEffect instead.
*/
G_CONST_RETURN gchar *
clutter_shader_get_vertex_source (ClutterShader *shader)
@@ -854,6 +888,8 @@ clutter_shader_get_vertex_source (ClutterShader *shader)
* not be unreferenced
*
* Since: 1.0
+ *
+ * Deprecated: 1.8: Use #ClutterShaderEffect instead.
*/
CoglHandle
clutter_shader_get_cogl_program (ClutterShader *shader)
@@ -874,6 +910,8 @@ clutter_shader_get_cogl_program (ClutterShader *shader)
* and it should not be unreferenced
*
* Since: 1.0
+ *
+ * Deprecated: 1.8: Use #ClutterShaderEffect instead.
*/
CoglHandle
clutter_shader_get_cogl_fragment_shader (ClutterShader *shader)
@@ -894,6 +932,8 @@ clutter_shader_get_cogl_fragment_shader (ClutterShader *shader)
* and it should not be unreferenced
*
* Since: 1.0
+ *
+ * Deprecated: 1.8: Use #ClutterShaderEffect instead.
*/
CoglHandle
clutter_shader_get_cogl_vertex_shader (ClutterShader *shader)
diff --git a/clutter/clutter-shader.h b/clutter/clutter-shader.h
index ef72192..4492e1d 100644
--- a/clutter/clutter-shader.h
+++ b/clutter/clutter-shader.h
@@ -29,10 +29,13 @@
#ifndef __CLUTTER_SHADER_H__
#define __CLUTTER_SHADER_H__
+#include <clutter/clutter-types.h>
#include <clutter/clutter-shader-types.h>
G_BEGIN_DECLS
+#if !defined(CLUTTER_DISABLE_DEPRECATED) || defined(CLUTTER_COMPILATION)
+
#define CLUTTER_TYPE_SHADER (clutter_shader_get_type ())
#define CLUTTER_SHADER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), CLUTTER_TYPE_SHADER, ClutterShader))
#define CLUTTER_SHADER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), CLUTTER_TYPE_SHADER, ClutterShaderClass))
@@ -46,6 +49,8 @@ G_BEGIN_DECLS
* Error domain for #ClutterShader errors
*
* Since: 0.6
+ *
+ * Deprecated: 1.8
*/
#define CLUTTER_SHADER_ERROR (clutter_shader_error_quark ())
@@ -58,6 +63,8 @@ G_BEGIN_DECLS
* #ClutterShader error enumeration
*
* Since: 0.6
+ *
+ * Deprecated: 1.8
*/
typedef enum {
CLUTTER_SHADER_ERROR_NO_ASM,
@@ -75,6 +82,8 @@ typedef struct _ClutterShaderClass ClutterShaderClass;
* and should be accessed using the provided API
*
* Since: 0.6
+ *
+ * Deprecated: 1.8: Use #ClutterShaderEffect instead
*/
struct _ClutterShader
{
@@ -89,6 +98,8 @@ struct _ClutterShader
* The #ClutterShaderClass structure contains only private data
*
* Since: 0.6
+ *
+ * Deprecated: 1.8: Use #ClutterShaderEffectClass instead
*/
struct _ClutterShaderClass
{
@@ -131,6 +142,8 @@ CoglHandle clutter_shader_get_cogl_vertex_shader (ClutterShader
/* private */
void _clutter_shader_release_all (void);
+#endif /* CLUTTER_DISABLE_DEPRECATED */
+
G_END_DECLS
#endif /* __CLUTTER_SHADER_H__ */
diff --git a/clutter/clutter-types.h b/clutter/clutter-types.h
index 8ad7261..3fd970d 100644
--- a/clutter/clutter-types.h
+++ b/clutter/clutter-types.h
@@ -53,7 +53,9 @@ typedef struct _ClutterAction ClutterAction;
typedef struct _ClutterConstraint ClutterConstraint;
typedef struct _ClutterEffect ClutterEffect;
+#if !defined(CLUTTER_DISABLE_DEPRECATED) || defined(CLUTTER_COMPILATION)
typedef struct _ClutterShader ClutterShader;
+#endif
typedef struct _ClutterColor ClutterColor;
diff --git a/tests/interactive/test-shader.c b/tests/interactive/test-shader.c
index 4b95d5c..79a014b 100644
--- a/tests/interactive/test-shader.c
+++ b/tests/interactive/test-shader.c
@@ -1,5 +1,7 @@
/*#define TEST_GROUP */
+#undef CLUTTER_DISABLE_DEPRECATED
+
#include <clutter/clutter.h>
#include <errno.h>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]