property-transition: Use macros for subclassing boilerplate

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3387>
This commit is contained in:
Bilal Elmoussaoui 2023-11-10 17:05:48 +01:00
parent 57fbc304f5
commit 6e3223a0cc
3 changed files with 28 additions and 33 deletions

View File

@ -46,7 +46,6 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterInterval, g_object_unref)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterKeyframeTransition, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterKeyframeTransition, g_object_unref)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterOffscreenEffect, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterOffscreenEffect, g_object_unref)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterPageTurnEffect, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterPageTurnEffect, g_object_unref)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterPropertyTransition, g_object_unref)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterScrollActor, 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 (ClutterShaderEffect, g_object_unref)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterStage, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterStage, g_object_unref)

View File

@ -38,12 +38,12 @@
#include "clutter/clutter-private.h" #include "clutter/clutter-private.h"
#include "clutter/clutter-transition.h" #include "clutter/clutter-transition.h"
struct _ClutterPropertyTransitionPrivate typedef struct _ClutterPropertyTransitionPrivate
{ {
char *property_name; char *property_name;
GParamSpec *pspec; GParamSpec *pspec;
}; } ClutterPropertyTransitionPrivate;
enum enum
{ {
@ -63,7 +63,8 @@ clutter_property_transition_ensure_interval (ClutterPropertyTransition *transiti
ClutterAnimatable *animatable, ClutterAnimatable *animatable,
ClutterInterval *interval) ClutterInterval *interval)
{ {
ClutterPropertyTransitionPrivate *priv = transition->priv; ClutterPropertyTransitionPrivate *priv =
clutter_property_transition_get_instance_private (transition);
GValue *value_p; GValue *value_p;
if (clutter_interval_is_valid (interval)) if (clutter_interval_is_valid (interval))
@ -95,7 +96,8 @@ clutter_property_transition_attached (ClutterTransition *transition,
ClutterAnimatable *animatable) ClutterAnimatable *animatable)
{ {
ClutterPropertyTransition *self = CLUTTER_PROPERTY_TRANSITION (transition); ClutterPropertyTransition *self = CLUTTER_PROPERTY_TRANSITION (transition);
ClutterPropertyTransitionPrivate *priv = self->priv; ClutterPropertyTransitionPrivate *priv =
clutter_property_transition_get_instance_private (self);
ClutterInterval *interval; ClutterInterval *interval;
if (priv->property_name == NULL) if (priv->property_name == NULL)
@ -119,7 +121,8 @@ clutter_property_transition_detached (ClutterTransition *transition,
ClutterAnimatable *animatable) ClutterAnimatable *animatable)
{ {
ClutterPropertyTransition *self = CLUTTER_PROPERTY_TRANSITION (transition); ClutterPropertyTransition *self = CLUTTER_PROPERTY_TRANSITION (transition);
ClutterPropertyTransitionPrivate *priv = self->priv; ClutterPropertyTransitionPrivate *priv =
clutter_property_transition_get_instance_private (self);
priv->pspec = NULL; priv->pspec = NULL;
} }
@ -131,7 +134,8 @@ clutter_property_transition_compute_value (ClutterTransition *transition,
gdouble progress) gdouble progress)
{ {
ClutterPropertyTransition *self = CLUTTER_PROPERTY_TRANSITION (transition); ClutterPropertyTransition *self = CLUTTER_PROPERTY_TRANSITION (transition);
ClutterPropertyTransitionPrivate *priv = self->priv; ClutterPropertyTransitionPrivate *priv =
clutter_property_transition_get_instance_private (self);
GValue value = G_VALUE_INIT; GValue value = G_VALUE_INIT;
GType p_type, i_type; GType p_type, i_type;
gboolean res; gboolean res;
@ -214,7 +218,9 @@ clutter_property_transition_get_property (GObject *gobject,
GValue *value, GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
ClutterPropertyTransitionPrivate *priv = CLUTTER_PROPERTY_TRANSITION (gobject)->priv; ClutterPropertyTransition *self = CLUTTER_PROPERTY_TRANSITION (gobject);
ClutterPropertyTransitionPrivate *priv =
clutter_property_transition_get_instance_private (self);
switch (prop_id) switch (prop_id)
{ {
@ -230,9 +236,9 @@ clutter_property_transition_get_property (GObject *gobject,
static void static void
clutter_property_transition_finalize (GObject *gobject) clutter_property_transition_finalize (GObject *gobject)
{ {
ClutterPropertyTransitionPrivate *priv; ClutterPropertyTransition *self = CLUTTER_PROPERTY_TRANSITION (gobject);
ClutterPropertyTransitionPrivate *priv =
priv = CLUTTER_PROPERTY_TRANSITION (gobject)->priv; clutter_property_transition_get_instance_private (self);
g_free (priv->property_name); g_free (priv->property_name);
@ -269,7 +275,6 @@ clutter_property_transition_class_init (ClutterPropertyTransitionClass *klass)
static void static void
clutter_property_transition_init (ClutterPropertyTransition *self) clutter_property_transition_init (ClutterPropertyTransition *self)
{ {
self->priv = clutter_property_transition_get_instance_private (self);
} }
/** /**
@ -325,7 +330,7 @@ clutter_property_transition_set_property_name (ClutterPropertyTransition *transi
g_return_if_fail (CLUTTER_IS_PROPERTY_TRANSITION (transition)); g_return_if_fail (CLUTTER_IS_PROPERTY_TRANSITION (transition));
priv = transition->priv; priv = clutter_property_transition_get_instance_private (transition);
if (g_strcmp0 (priv->property_name, property_name) == 0) if (g_strcmp0 (priv->property_name, property_name) == 0)
return; return;
@ -360,7 +365,10 @@ clutter_property_transition_set_property_name (ClutterPropertyTransition *transi
const char * const char *
clutter_property_transition_get_property_name (ClutterPropertyTransition *transition) clutter_property_transition_get_property_name (ClutterPropertyTransition *transition)
{ {
ClutterPropertyTransitionPrivate *priv;
g_return_val_if_fail (CLUTTER_IS_PROPERTY_TRANSITION (transition), NULL); g_return_val_if_fail (CLUTTER_IS_PROPERTY_TRANSITION (transition), NULL);
return transition->priv->property_name; priv = clutter_property_transition_get_instance_private (transition);
return priv->property_name;
} }

View File

@ -33,22 +33,13 @@
G_BEGIN_DECLS G_BEGIN_DECLS
#define CLUTTER_TYPE_PROPERTY_TRANSITION (clutter_property_transition_get_type ()) #define CLUTTER_TYPE_PROPERTY_TRANSITION (clutter_property_transition_get_type ())
#define CLUTTER_PROPERTY_TRANSITION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CLUTTER_TYPE_PROPERTY_TRANSITION, ClutterPropertyTransition))
#define CLUTTER_IS_PROPERTY_TRANSITION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CLUTTER_TYPE_PROPERTY_TRANSITION))
#define CLUTTER_PROPERTY_TRANSITION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CLUTTER_TYPE_PROPERTY_TRANSITION, ClutterPropertyTransitionClass))
#define CLUTTER_IS_PROPERTY_TRANSITION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CLUTTER_TYPE_PROPERTY_TRANSITION))
#define CLUTTER_PROPERTY_TRANSITION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_PROPERTY_TRANSITION, ClutterPropertyTransitionClass))
typedef struct _ClutterPropertyTransitionPrivate ClutterPropertyTransitionPrivate; CLUTTER_EXPORT
typedef struct _ClutterPropertyTransitionClass ClutterPropertyTransitionClass; G_DECLARE_DERIVABLE_TYPE (ClutterPropertyTransition,
clutter_property_transition,
struct _ClutterPropertyTransition CLUTTER,
{ PROPERTY_TRANSITION,
/*< private >*/ ClutterTransition)
ClutterTransition parent_instance;
ClutterPropertyTransitionPrivate *priv;
};
/** /**
* ClutterPropertyTransitionClass: * ClutterPropertyTransitionClass:
@ -62,9 +53,6 @@ struct _ClutterPropertyTransitionClass
ClutterTransitionClass parent_class; ClutterTransitionClass parent_class;
}; };
CLUTTER_EXPORT
GType clutter_property_transition_get_type (void) G_GNUC_CONST;
CLUTTER_EXPORT CLUTTER_EXPORT
ClutterTransition * clutter_property_transition_new_for_actor (ClutterActor *actor, ClutterTransition * clutter_property_transition_new_for_actor (ClutterActor *actor,
const char *property_name); const char *property_name);