"alsactl_card_replace_elems";
"alsactl_card_remove_elems";
"alsactl_card_create_source";
+ "alsactl_sigs_marshal_VOID__BOXED_FLAGS";
"alsactl_card_info_get_type";
};
static GParamSpec *ctl_card_props[CTL_CARD_PROP_COUNT] = { NULL, };
+enum ctl_card_sig_type {
+ CTL_CARD_SIG_HANDLE_ELEM_EVENT = 0,
+ CTL_CARD_SIG_COUNT,
+};
+static guint ctl_card_sigs[CTL_CARD_SIG_COUNT] = { 0 };
+
static void ctl_card_get_property(GObject *obj, guint id, GValue *val,
GParamSpec *spec)
{
g_object_class_install_properties(gobject_class, CTL_CARD_PROP_COUNT,
ctl_card_props);
+
+ /**
+ * ALSACtlCard::handle-elem-event:
+ * @self: A #ALSACtlCard.
+ * @elem_id: (transfer none): A #ALSACtlElemId.
+ * @events: A set of #ALSACtlEventMaskFlag.
+ *
+ * When event occurs for any element, this signal is emit.
+ */
+ ctl_card_sigs[CTL_CARD_SIG_HANDLE_ELEM_EVENT] =
+ g_signal_new("handle-elem-event",
+ G_OBJECT_CLASS_TYPE(klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ alsactl_sigs_marshal_VOID__BOXED_FLAGS,
+ G_TYPE_NONE, 2, ALSACTL_TYPE_ELEM_ID,
+ ALSACTL_TYPE_EVENT_MASK_FLAG);
}
static void alsactl_card_init(ALSACtlCard *self)
// TODO: handle the event.
len -= sizeof(*ev);
- ++ev;
+ ++ev;
}
// Just be sure to continue to process this source.
name = 'alsactl'
namespace = 'ALSACtl'
has_enumerations = true
-has_marshaller = false
+has_marshaller = true
sources = files(
'query.c',
sources: '@0@-sigs-marshal.list'.format(name),
stdinc: true,
install_header: true,
+ install_dir: join_paths(get_option('includedir'), meson.project_name(), path),
)
sources += signal_marshallers
endif