Commit 2ebfe048 authored by Ronald S. Bultje's avatar Ronald S. Bultje
Browse files

Move over from GstInterface to GstImplementsInterface. Also adds some signals to several interfaces

Original commit message from CVS:
Move over from GstInterface to GstImplementsInterface. Also adds some signals to several interfaces
parent b170a21e
......@@ -9,5 +9,23 @@ noinst_LTLIBRARIES = libgstcolorbalance.la
libgstcolorbalance_la_SOURCES = \
colorbalance.c \
colorbalancechannel.c
colorbalancechannel.c \
colorbalancemarshal.c
libgstcolorbalance_la_CFLAGS = $(GST_CFLAGS) $(GST_OPT_CFLAGS)
BUILT_SOURCES = \
colorbalancemarshal.c \
colorbalancemarshal.h
built_headers = \
colorbalancemarshal.h
EXTRA_DIST = colorbalancemarshal.list
colorbalancemarshal.h: colorbalancemarshal.list
glib-genmarshal --header --prefix=gst_color_balance_marshal $^ > colorbalancemarshal.h.tmp
mv colorbalancemarshal.h.tmp colorbalancemarshal.h
colorbalancemarshal.c: colorbalancemarshal.list
echo "#include \"colorbalancemarshal.h\"" >> colorbalancemarshal.c.tmp
glib-genmarshal --body --prefix=gst_color_balance_marshal $^ >> colorbalancemarshal.c.tmp
mv colorbalancemarshal.c.tmp colorbalancemarshal.c
......@@ -25,9 +25,17 @@
#endif
#include "colorbalance.h"
#include "colorbalancemarshal.h"
enum {
VALUE_CHANGED,
LAST_SIGNAL
};
static void gst_color_balance_class_init (GstColorBalanceClass *klass);
static guint gst_color_balance_signals[LAST_SIGNAL] = { 0 };
GType
gst_color_balance_get_type (void)
{
......@@ -50,7 +58,7 @@ gst_color_balance_get_type (void)
"GstColorBalance",
&gst_color_balance_info, 0);
g_type_interface_add_prerequisite (gst_color_balance_type,
GST_TYPE_INTERFACE);
GST_TYPE_IMPLEMENTS_INTERFACE);
}
return gst_color_balance_type;
......@@ -59,6 +67,21 @@ gst_color_balance_get_type (void)
static void
gst_color_balance_class_init (GstColorBalanceClass *klass)
{
static gboolean initialized = FALSE;
if (!initialized) {
gst_color_balance_signals[VALUE_CHANGED] =
g_signal_new ("value_changed",
GST_TYPE_COLOR_BALANCE, G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GstColorBalanceClass, value_changed),
NULL, NULL,
gst_color_balance_marshal_VOID__OBJECT_INT,
G_TYPE_NONE, 2,
GST_TYPE_COLOR_BALANCE_CHANNEL, G_TYPE_INT);
initialized = TRUE;
}
/* default virtual functions */
klass->list_channels = NULL;
klass->set_value = NULL;
......@@ -101,3 +124,15 @@ gst_color_balance_get_value (GstColorBalance *balance,
return channel->min_value;
}
void
gst_color_balance_value_changed (GstColorBalance *balance,
GstColorBalanceChannel *channel,
gint value)
{
g_signal_emit (G_OBJECT (balance),
gst_color_balance_signals[VALUE_CHANGED],
0, channel, value);
g_signal_emit_by_name (G_OBJECT (channel), "value_changed", value);
}
......@@ -30,13 +30,13 @@ G_BEGIN_DECLS
#define GST_TYPE_COLOR_BALANCE \
(gst_color_balance_get_type ())
#define GST_COLOR_BALANCE(obj) \
(GST_INTERFACE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_COLOR_BALANCE, \
GstColorBalance))
(GST_IMPLEMENTS_INTERFACE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_COLOR_BALANCE, \
GstColorBalance))
#define GST_COLOR_BALANCE_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_COLOR_BALANCE, \
GstColorBalanceClass))
#define GST_IS_COLOR_BALANCE(obj) \
(GST_INTERFACE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_COLOR_BALANCE))
(GST_IMPLEMENTS_INTERFACE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_COLOR_BALANCE))
#define GST_IS_COLOR_BALANCE_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_COLOR_BALANCE))
#define GST_COLOR_BALANCE_GET_CLASS(inst) \
......@@ -55,6 +55,13 @@ typedef struct _GstColorBalanceClass {
gint value);
gint (* get_value) (GstColorBalance *balance,
GstColorBalanceChannel *channel);
/* signals */
void (* value_changed) (GstColorBalance *balance,
GstColorBalanceChannel *channel,
gint value);
GST_CLASS_PADDING
} GstColorBalanceClass;
GType gst_color_balance_get_type (void);
......@@ -68,6 +75,11 @@ void gst_color_balance_set_value (GstColorBalance *balance,
gint gst_color_balance_get_value (GstColorBalance *balance,
GstColorBalanceChannel *channel);
/* trigger signal */
void gst_color_balance_value_changed (GstColorBalance *balance,
GstColorBalanceChannel *channel,
gint value);
G_END_DECLS
#endif /* __GST_COLOR_BALANCE_H__ */
......@@ -96,8 +96,7 @@ gst_color_balance_channel_dispose (GObject *object)
{
GstColorBalanceChannel *channel = GST_COLOR_BALANCE_CHANNEL (object);
if (channel->label)
g_free (channel->label);
g_free (channel->label);
if (parent_class->dispose)
parent_class->dispose (object);
......
......@@ -53,6 +53,8 @@ typedef struct _GstColorBalanceChannelClass {
/* signals */
void (* value_changed) (GstColorBalanceChannel *channel,
gint value);
GST_CLASS_PADDING
} GstColorBalanceChannelClass;
GType gst_color_balance_channel_get_type (void);
......
......@@ -25,9 +25,17 @@
#endif
#include "colorbalance.h"
#include "colorbalancemarshal.h"
enum {
VALUE_CHANGED,
LAST_SIGNAL
};
static void gst_color_balance_class_init (GstColorBalanceClass *klass);
static guint gst_color_balance_signals[LAST_SIGNAL] = { 0 };
GType
gst_color_balance_get_type (void)
{
......@@ -50,7 +58,7 @@ gst_color_balance_get_type (void)
"GstColorBalance",
&gst_color_balance_info, 0);
g_type_interface_add_prerequisite (gst_color_balance_type,
GST_TYPE_INTERFACE);
GST_TYPE_IMPLEMENTS_INTERFACE);
}
return gst_color_balance_type;
......@@ -59,6 +67,21 @@ gst_color_balance_get_type (void)
static void
gst_color_balance_class_init (GstColorBalanceClass *klass)
{
static gboolean initialized = FALSE;
if (!initialized) {
gst_color_balance_signals[VALUE_CHANGED] =
g_signal_new ("value_changed",
GST_TYPE_COLOR_BALANCE, G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GstColorBalanceClass, value_changed),
NULL, NULL,
gst_color_balance_marshal_VOID__OBJECT_INT,
G_TYPE_NONE, 2,
GST_TYPE_COLOR_BALANCE_CHANNEL, G_TYPE_INT);
initialized = TRUE;
}
/* default virtual functions */
klass->list_channels = NULL;
klass->set_value = NULL;
......@@ -101,3 +124,15 @@ gst_color_balance_get_value (GstColorBalance *balance,
return channel->min_value;
}
void
gst_color_balance_value_changed (GstColorBalance *balance,
GstColorBalanceChannel *channel,
gint value)
{
g_signal_emit (G_OBJECT (balance),
gst_color_balance_signals[VALUE_CHANGED],
0, channel, value);
g_signal_emit_by_name (G_OBJECT (channel), "value_changed", value);
}
......@@ -30,13 +30,13 @@ G_BEGIN_DECLS
#define GST_TYPE_COLOR_BALANCE \
(gst_color_balance_get_type ())
#define GST_COLOR_BALANCE(obj) \
(GST_INTERFACE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_COLOR_BALANCE, \
GstColorBalance))
(GST_IMPLEMENTS_INTERFACE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_COLOR_BALANCE, \
GstColorBalance))
#define GST_COLOR_BALANCE_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_COLOR_BALANCE, \
GstColorBalanceClass))
#define GST_IS_COLOR_BALANCE(obj) \
(GST_INTERFACE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_COLOR_BALANCE))
(GST_IMPLEMENTS_INTERFACE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_COLOR_BALANCE))
#define GST_IS_COLOR_BALANCE_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_COLOR_BALANCE))
#define GST_COLOR_BALANCE_GET_CLASS(inst) \
......@@ -55,6 +55,13 @@ typedef struct _GstColorBalanceClass {
gint value);
gint (* get_value) (GstColorBalance *balance,
GstColorBalanceChannel *channel);
/* signals */
void (* value_changed) (GstColorBalance *balance,
GstColorBalanceChannel *channel,
gint value);
GST_CLASS_PADDING
} GstColorBalanceClass;
GType gst_color_balance_get_type (void);
......@@ -68,6 +75,11 @@ void gst_color_balance_set_value (GstColorBalance *balance,
gint gst_color_balance_get_value (GstColorBalance *balance,
GstColorBalanceChannel *channel);
/* trigger signal */
void gst_color_balance_value_changed (GstColorBalance *balance,
GstColorBalanceChannel *channel,
gint value);
G_END_DECLS
#endif /* __GST_COLOR_BALANCE_H__ */
......@@ -96,8 +96,7 @@ gst_color_balance_channel_dispose (GObject *object)
{
GstColorBalanceChannel *channel = GST_COLOR_BALANCE_CHANNEL (object);
if (channel->label)
g_free (channel->label);
g_free (channel->label);
if (parent_class->dispose)
parent_class->dispose (object);
......
......@@ -53,6 +53,8 @@ typedef struct _GstColorBalanceChannelClass {
/* signals */
void (* value_changed) (GstColorBalanceChannel *channel,
gint value);
GST_CLASS_PADDING
} GstColorBalanceChannelClass;
GType gst_color_balance_channel_get_type (void);
......
......@@ -24,9 +24,19 @@
#endif
#include "mixer.h"
#include "mixermarshal.h"
enum {
MUTE_TOGGLED,
RECORD_TOGGLED,
VOLUME_CHANGED,
LAST_SIGNAL
};
static void gst_mixer_class_init (GstMixerClass *klass);
static guint gst_mixer_signals[LAST_SIGNAL] = { 0 };
GType
gst_mixer_get_type (void)
{
......@@ -49,7 +59,7 @@ gst_mixer_get_type (void)
"GstMixer",
&gst_mixer_info, 0);
g_type_interface_add_prerequisite (gst_mixer_type,
GST_TYPE_INTERFACE);
GST_TYPE_IMPLEMENTS_INTERFACE);
}
return gst_mixer_type;
......@@ -58,6 +68,34 @@ gst_mixer_get_type (void)
static void
gst_mixer_class_init (GstMixerClass *klass)
{
static gboolean initialized = FALSE;
if (!initialized) {
gst_mixer_signals[RECORD_TOGGLED] =
g_signal_new ("record_toggled",
GST_TYPE_MIXER, G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GstMixerClass, record_toggled),
NULL, NULL,
gst_mixer_marshal_VOID__OBJECT_BOOLEAN, G_TYPE_NONE, 1,
GST_TYPE_MIXER_TRACK, G_TYPE_BOOLEAN);
gst_mixer_signals[MUTE_TOGGLED] =
g_signal_new ("mute_toggled",
GST_TYPE_MIXER, G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GstMixerClass, mute_toggled),
NULL, NULL,
gst_mixer_marshal_VOID__OBJECT_BOOLEAN, G_TYPE_NONE, 1,
GST_TYPE_MIXER_TRACK, G_TYPE_BOOLEAN);
gst_mixer_signals[VOLUME_CHANGED] =
g_signal_new ("volume_changed",
GST_TYPE_MIXER, G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GstMixerClass, volume_changed),
NULL, NULL,
gst_mixer_marshal_VOID__OBJECT_POINTER, G_TYPE_NONE, 1,
GST_TYPE_MIXER_TRACK, G_TYPE_POINTER);
initialized = TRUE;
}
/* default virtual functions */
klass->list_tracks = NULL;
klass->set_volume = NULL;
......@@ -131,3 +169,45 @@ gst_mixer_set_record (GstMixer *mixer,
klass->set_record (mixer, track, record);
}
}
void
gst_mixer_mute_toggled (GstMixer *mixer,
GstMixerTrack *track,
gboolean mute)
{
g_signal_emit (G_OBJECT (mixer),
gst_mixer_signals[MUTE_TOGGLED], 0,
track, mute);
g_signal_emit_by_name (G_OBJECT (track),
"mute_toggled",
mute);
}
void
gst_mixer_record_toggled (GstMixer *mixer,
GstMixerTrack *track,
gboolean record)
{
g_signal_emit (G_OBJECT (mixer),
gst_mixer_signals[RECORD_TOGGLED], 0,
track, record);
g_signal_emit_by_name (G_OBJECT (track),
"record_toggled",
record);
}
void
gst_mixer_volume_changed (GstMixer *mixer,
GstMixerTrack *track,
gint *volumes)
{
g_signal_emit (G_OBJECT (mixer),
gst_mixer_signals[VOLUME_CHANGED], 0,
track, volumes);
g_signal_emit_by_name (G_OBJECT (track),
"volume_changed",
volumes);
}
......@@ -30,11 +30,11 @@ G_BEGIN_DECLS
#define GST_TYPE_MIXER \
(gst_mixer_get_type ())
#define GST_MIXER(obj) \
(GST_INTERFACE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_MIXER, GstMixer))
(GST_IMPLEMENTS_INTERFACE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_MIXER, GstMixer))
#define GST_MIXER_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_MIXER, GstMixerClass))
#define GST_IS_MIXER(obj) \
(GST_INTERFACE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_MIXER))
(GST_IMPLEMENTS_INTERFACE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_MIXER))
#define GST_IS_MIXER_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_MIXER))
#define GST_MIXER_GET_CLASS(inst) \
......@@ -62,25 +62,47 @@ typedef struct _GstMixerClass {
GstMixerTrack *track,
gboolean record);
/* signals */
void (* mute_toggled) (GstMixer *mixer,
GstMixerTrack *channel,
gboolean mute);
void (* record_toggled) (GstMixer *mixer,
GstMixerTrack *channel,
gboolean record);
void (* volume_changed) (GstMixer *mixer,
GstMixerTrack *channel,
gint *volumes);
GST_CLASS_PADDING
} GstMixerClass;
GType gst_mixer_get_type (void);
/* virtual class function wrappers */
const GList * gst_mixer_list_tracks (GstMixer *mixer);
void gst_mixer_set_volume (GstMixer *mixer,
GstMixerTrack *track,
gint *volumes);
void gst_mixer_get_volume (GstMixer *mixer,
GstMixerTrack *track,
gint *volumes);
void gst_mixer_set_mute (GstMixer *mixer,
GstMixerTrack *track,
gboolean mute);
void gst_mixer_set_record (GstMixer *mixer,
GstMixerTrack *track,
gboolean record);
const GList * gst_mixer_list_tracks (GstMixer *mixer);
void gst_mixer_set_volume (GstMixer *mixer,
GstMixerTrack *track,
gint *volumes);
void gst_mixer_get_volume (GstMixer *mixer,
GstMixerTrack *track,
gint *volumes);
void gst_mixer_set_mute (GstMixer *mixer,
GstMixerTrack *track,
gboolean mute);
void gst_mixer_set_record (GstMixer *mixer,
GstMixerTrack *track,
gboolean record);
/* trigger signals */
void gst_mixer_mute_toggled (GstMixer *mixer,
GstMixerTrack *track,
gboolean mute);
void gst_mixer_record_toggled (GstMixer *mixer,
GstMixerTrack *track,
gboolean record);
void gst_mixer_volume_changed (GstMixer *mixer,
GstMixerTrack *track,
gint *volumes);
G_END_DECLS
......
......@@ -71,12 +71,15 @@ typedef struct _GstMixerTrack {
typedef struct _GstMixerTrackClass {
GObjectClass parent;
/* signals */
void (* mute_toggled) (GstMixerTrack *channel,
gboolean on);
gboolean mute);
void (* record_toggled) (GstMixerTrack *channel,
gboolean on);
gboolean record);
void (* volume_changed) (GstMixerTrack *channel,
gint *volumes);
GST_CLASS_PADDING
} GstMixerTrackClass;
GType gst_mixer_track_get_type (void);
......
......@@ -24,9 +24,20 @@
#endif
#include "tuner.h"
#include "tunermarshal.h"
enum {
NORM_CHANGED,
CHANNEL_CHANGED,
FREQUENCY_CHANGED,
SIGNAL_CHANGED,
LAST_SIGNAL
};
static void gst_tuner_class_init (GstTunerClass *klass);
static guint gst_tuner_signals[LAST_SIGNAL] = { 0 };
GType
gst_tuner_get_type (void)
{
......@@ -49,7 +60,7 @@ gst_tuner_get_type (void)
"GstTuner",
&gst_tuner_info, 0);
g_type_interface_add_prerequisite (gst_tuner_type,
GST_TYPE_INTERFACE);
GST_TYPE_IMPLEMENTS_INTERFACE);
}
return gst_tuner_type;
......@@ -58,6 +69,41 @@ gst_tuner_get_type (void)
static void
gst_tuner_class_init (GstTunerClass *klass)
{
static gboolean initialized = FALSE;
if (!initialized) {
gst_tuner_signals[NORM_CHANGED] =
g_signal_new ("norm_changed",
GST_TYPE_TUNER, G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GstTunerClass, norm_changed),
NULL, NULL,
g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1,
GST_TYPE_TUNER_NORM);
gst_tuner_signals[CHANNEL_CHANGED] =
g_signal_new ("channel_changed",
GST_TYPE_TUNER, G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GstTunerClass, channel_changed),
NULL, NULL,
g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1,
GST_TYPE_TUNER_CHANNEL);
gst_tuner_signals[NORM_CHANGED] =
g_signal_new ("norm_changed",
GST_TYPE_TUNER, G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GstTunerClass, frequency_changed),
NULL, NULL,
gst_tuner_marshal_VOID__OBJECT_ULONG, G_TYPE_NONE, 2,
GST_TYPE_TUNER_CHANNEL, G_TYPE_ULONG);
gst_tuner_signals[NORM_CHANGED] =
g_signal_new ("norm_changed",
GST_TYPE_TUNER, G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GstTunerClass, signal_changed),
NULL, NULL,
gst_tuner_marshal_VOID__OBJECT_INT, G_TYPE_NONE, 2,
GST_TYPE_TUNER_CHANNEL, G_TYPE_INT);
initialized = TRUE;
}
/* default virtual functions */
klass->list_channels = NULL;
klass->set_channel = NULL;
......@@ -188,3 +234,49 @@ gst_tuner_signal_strength (GstTuner *tuner,
return 0;
}
void
gst_tuner_channel_changed (GstTuner *tuner,
GstTunerChannel *channel)
{
g_signal_emit (G_OBJECT (tuner),
gst_tuner_signals[CHANNEL_CHANGED], 0,
channel);
}
void
gst_tuner_norm_changed (GstTuner *tuner,
GstTunerNorm *norm)
{
g_signal_emit (G_OBJECT (tuner),
gst_tuner_signals[NORM_CHANGED], 0,
norm);
}
void
gst_tuner_frequency_changed (GstTuner *tuner,
GstTunerChannel *channel,
gulong frequency)
{
g_signal_emit (G_OBJECT (tuner),
gst_tuner_signals[FREQUENCY_CHANGED], 0,
channel, frequency);
g_signal_emit_by_name (G_OBJECT (channel),
"frequency_changed",
frequency);
}
void
gst_tuner_signal_changed (GstTuner *tuner,
GstTunerChannel *channel,
gint signal)
{
g_signal_emit (G_OBJECT (tuner),
gst_tuner_signals[SIGNAL_CHANGED], 0,
channel, signal);
g_signal_emit_by_name (G_OBJECT (channel),
"signal_changed",
signal);
}
......@@ -31,11 +31,11 @@ G_BEGIN_DECLS
#define GST_TYPE_TUNER \
(gst_tuner_get_type ())
#define GST_TUNER(obj) \
(GST_INTERFACE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_TUNER, GstTuner))
(GST_IMPLEMENTS_INTERFACE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_TUNER, GstTuner))
#define GST_TUNER_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_TUNER, GstTunerClass))
#define GST_IS_TUNER(obj) \
(GST_INTERFACE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_TUNER))
(GST_IMPLEMENTS_INTERFACE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_TUNER))
#define GST_IS_TUNER_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_TUNER))
#define GST_TUNER_GET_CLASS(inst) \
......@@ -66,6 +66,20 @@ typedef struct _GstTunerClass {
GstTunerChannel *channel);
gint (* signal_strength) (GstTuner *tuner,
GstTunerChannel *channel);
/* signals */
void (*channel_changed) (GstTuner *tuner,
GstTunerChannel *channel);