[clutter] Deprecate ClutterShader



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]