diff --git a/clutter/clutter/clutter-autocleanups.h b/clutter/clutter/clutter-autocleanups.h index 9db2132c7..0f277ef47 100644 --- a/clutter/clutter/clutter-autocleanups.h +++ b/clutter/clutter/clutter-autocleanups.h @@ -44,7 +44,6 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterInputDevice, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterInterval, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterPageTurnEffect, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterScrollActor, g_object_unref) -G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterShaderEffect, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterStage, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterText, g_object_unref) diff --git a/clutter/clutter/clutter-shader-effect.c b/clutter/clutter/clutter-shader-effect.c index 16d0d94bb..9d83bfc3f 100644 --- a/clutter/clutter/clutter-shader-effect.c +++ b/clutter/clutter/clutter-shader-effect.c @@ -131,7 +131,7 @@ typedef struct _ShaderUniform int location; } ShaderUniform; -struct _ClutterShaderEffectPrivate +typedef struct _ClutterShaderEffectPrivate { ClutterActor *actor; @@ -141,7 +141,7 @@ struct _ClutterShaderEffectPrivate CoglShader *shader; GHashTable *uniforms; -}; +} ClutterShaderEffectPrivate; typedef struct _ClutterShaderEffectClassPrivate { @@ -175,7 +175,8 @@ static inline void clutter_shader_effect_clear (ClutterShaderEffect *self, gboolean reset_uniforms) { - ClutterShaderEffectPrivate *priv = self->priv; + ClutterShaderEffectPrivate *priv = + clutter_shader_effect_get_instance_private (self); g_clear_object (&priv->shader); g_clear_object (&priv->program); @@ -192,7 +193,8 @@ clutter_shader_effect_clear (ClutterShaderEffect *self, static void clutter_shader_effect_update_uniforms (ClutterShaderEffect *effect) { - ClutterShaderEffectPrivate *priv = effect->priv; + ClutterShaderEffectPrivate *priv = + clutter_shader_effect_get_instance_private (effect); GHashTableIter iter; gpointer key, value; gsize size; @@ -278,7 +280,8 @@ clutter_shader_effect_set_actor (ClutterActorMeta *meta, ClutterActor *actor) { ClutterShaderEffect *self = CLUTTER_SHADER_EFFECT (meta); - ClutterShaderEffectPrivate *priv = self->priv; + ClutterShaderEffectPrivate *priv = + clutter_shader_effect_get_instance_private (self); ClutterActorMetaClass *parent; parent = CLUTTER_ACTOR_META_CLASS (clutter_shader_effect_parent_class); @@ -296,7 +299,8 @@ clutter_shader_effect_set_actor (ClutterActorMeta *meta, static CoglShader* clutter_shader_effect_create_shader (ClutterShaderEffect *self) { - ClutterShaderEffectPrivate *priv = self->priv; + ClutterShaderEffectPrivate *priv = + clutter_shader_effect_get_instance_private (self); switch (priv->shader_type) { @@ -317,7 +321,8 @@ clutter_shader_effect_create_shader (ClutterShaderEffect *self) static void clutter_shader_effect_try_static_source (ClutterShaderEffect *self) { - ClutterShaderEffectPrivate *priv = self->priv; + ClutterShaderEffectPrivate *priv = + clutter_shader_effect_get_instance_private (self); ClutterShaderEffectClass *shader_effect_class = CLUTTER_SHADER_EFFECT_GET_CLASS (self); @@ -365,7 +370,8 @@ clutter_shader_effect_paint_target (ClutterOffscreenEffect *effect, ClutterPaintContext *paint_context) { ClutterShaderEffect *self = CLUTTER_SHADER_EFFECT (effect); - ClutterShaderEffectPrivate *priv = self->priv; + ClutterShaderEffectPrivate *priv = + clutter_shader_effect_get_instance_private (self); ClutterOffscreenEffectClass *parent; CoglPipeline *pipeline; @@ -402,7 +408,8 @@ clutter_shader_effect_set_property (GObject *gobject, const GValue *value, GParamSpec *pspec) { - ClutterShaderEffectPrivate *priv = CLUTTER_SHADER_EFFECT (gobject)->priv; + ClutterShaderEffectPrivate *priv = + clutter_shader_effect_get_instance_private (CLUTTER_SHADER_EFFECT (gobject)); switch (prop_id) { @@ -464,8 +471,10 @@ clutter_shader_effect_class_init (ClutterShaderEffectClass *klass) static void clutter_shader_effect_init (ClutterShaderEffect *effect) { - effect->priv = clutter_shader_effect_get_instance_private (effect); - effect->priv->shader_type = CLUTTER_FRAGMENT_SHADER; + ClutterShaderEffectPrivate *priv = + clutter_shader_effect_get_instance_private (effect); + + priv->shader_type = CLUTTER_FRAGMENT_SHADER; } /** @@ -502,10 +511,13 @@ clutter_shader_effect_new (ClutterShaderType shader_type) CoglShader* clutter_shader_effect_get_shader (ClutterShaderEffect *effect) { + ClutterShaderEffectPrivate *priv; + g_return_val_if_fail (CLUTTER_IS_SHADER_EFFECT (effect), NULL); - return effect->priv->shader; + priv = clutter_shader_effect_get_instance_private (effect); + return priv->shader; } /** @@ -520,10 +532,13 @@ clutter_shader_effect_get_shader (ClutterShaderEffect *effect) CoglProgram* clutter_shader_effect_get_program (ClutterShaderEffect *effect) { + ClutterShaderEffectPrivate *priv; + g_return_val_if_fail (CLUTTER_IS_SHADER_EFFECT (effect), NULL); - return effect->priv->program; + priv = clutter_shader_effect_get_instance_private (effect); + return priv->program; } static void @@ -572,7 +587,8 @@ clutter_shader_effect_add_uniform (ClutterShaderEffect *effect, const gchar *name, const GValue *value) { - ClutterShaderEffectPrivate *priv = effect->priv; + ClutterShaderEffectPrivate *priv = + clutter_shader_effect_get_instance_private (effect); ShaderUniform *uniform; if (priv->uniforms == NULL) @@ -846,7 +862,7 @@ clutter_shader_effect_set_shader_source (ClutterShaderEffect *effect, g_return_val_if_fail (CLUTTER_IS_SHADER_EFFECT (effect), FALSE); g_return_val_if_fail (source != NULL && *source != '\0', FALSE); - priv = effect->priv; + priv = clutter_shader_effect_get_instance_private (effect); if (priv->shader != NULL) return TRUE; diff --git a/clutter/clutter/clutter-shader-effect.h b/clutter/clutter/clutter-shader-effect.h index bc5900d48..201c447d7 100644 --- a/clutter/clutter/clutter-shader-effect.h +++ b/clutter/clutter/clutter-shader-effect.h @@ -33,23 +33,13 @@ G_BEGIN_DECLS #define CLUTTER_TYPE_SHADER_EFFECT (clutter_shader_effect_get_type ()) -#define CLUTTER_SHADER_EFFECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CLUTTER_TYPE_SHADER_EFFECT, ClutterShaderEffect)) -#define CLUTTER_IS_SHADER_EFFECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CLUTTER_TYPE_SHADER_EFFECT)) -#define CLUTTER_SHADER_EFFECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CLUTTER_TYPE_SHADER_EFFECT, ClutterShaderEffectClass)) -#define CLUTTER_IS_SHADER_EFFECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CLUTTER_TYPE_SHADER_EFFECT)) -#define CLUTTER_SHADER_EFFECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_SHADER_EFFECT, ClutterShaderEffectClass)) -typedef struct _ClutterShaderEffect ClutterShaderEffect; -typedef struct _ClutterShaderEffectPrivate ClutterShaderEffectPrivate; -typedef struct _ClutterShaderEffectClass ClutterShaderEffectClass; - -struct _ClutterShaderEffect -{ - /*< private >*/ - ClutterOffscreenEffect parent_instance; - - ClutterShaderEffectPrivate *priv; -}; +CLUTTER_EXPORT +G_DECLARE_DERIVABLE_TYPE (ClutterShaderEffect, + clutter_shader_effect, + CLUTTER, + SHADER_EFFECT, + ClutterOffscreenEffect) /** * ClutterShaderEffectClass: @@ -71,9 +61,6 @@ struct _ClutterShaderEffectClass gchar * (* get_static_shader_source) (ClutterShaderEffect *effect); }; -CLUTTER_EXPORT -GType clutter_shader_effect_get_type (void) G_GNUC_CONST; - CLUTTER_EXPORT ClutterEffect * clutter_shader_effect_new (ClutterShaderType shader_type);