From: Takashi Sakamoto Date: Wed, 1 Apr 2020 09:13:28 +0000 (+0900) Subject: seq: event_fixed: add API to refer to quadlet data of event X-Git-Tag: v0.1.0~255 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=1b71f2015d06d9c9db0ab3a3b78c3a8ae95a8ee8;p=alsa-gobject.git seq: event_fixed: add API to refer to quadlet data of event Signed-off-by: Takashi Sakamoto --- diff --git a/src/seq/alsaseq.map b/src/seq/alsaseq.map index b754402..014f2c4 100644 --- a/src/seq/alsaseq.map +++ b/src/seq/alsaseq.map @@ -67,6 +67,8 @@ ALSA_GOBJECT_0_0_0 { "alsaseq_event_fixed_new"; "alsaseq_event_fixed_get_byte_data"; "alsaseq_event_fixed_set_byte_data"; + "alsaseq_event_fixed_get_quadlet_data"; + "alsaseq_event_fixed_set_quadlet_data"; "alsaseq_event_variable_get_type"; "alsaseq_event_variable_new"; diff --git a/src/seq/event-fixed.c b/src/seq/event-fixed.c index ef34c37..9813eec 100644 --- a/src/seq/event-fixed.c +++ b/src/seq/event-fixed.c @@ -235,3 +235,44 @@ void alsaseq_event_fixed_set_byte_data(ALSASeqEventFixed *self, memcpy(ev->data.raw8.d, data, sizeof(ev->data.raw8.d)); } + +/** + * alsaseq_event_fixed_get_quadlet_data: + * @self: A #ALSASeqEventFixed. + * + * Get the 3 quadlet data for the event. + * + * Returns: (array fixed-size=3)(transfer none): The 3 quadlet data for the + * event. The lifetime of the object is the same as the event itself. + */ +const guint32 *alsaseq_event_fixed_get_quadlet_data(ALSASeqEventFixed *self) +{ + ALSASeqEvent *parent; + struct snd_seq_event *ev; + + g_return_val_if_fail(ALSASEQ_IS_EVENT_FIXED(self), NULL); + parent = ALSASEQ_EVENT(self); + seq_event_refer_private(parent, &ev); + + return ev->data.raw32.d; +} + +/** + * alsaseq_event_fixed_set_quadlet_data: + * @self: A #ALSASeqEventFixed. + * @data: (array fixed-size=3)(transfer none): The 3 quadlet data for the event. + * + * Copy the 3 quadlet data for the event. + */ +void alsaseq_event_fixed_set_quadlet_data(ALSASeqEventFixed *self, + const guint32 data[3]) +{ + ALSASeqEvent *parent; + struct snd_seq_event *ev; + + g_return_if_fail(ALSASEQ_IS_EVENT_FIXED(self)); + parent = ALSASEQ_EVENT(self); + seq_event_refer_private(parent, &ev); + + memcpy(ev->data.raw32.d, data, sizeof(ev->data.raw32.d)); +} diff --git a/src/seq/event-fixed.h b/src/seq/event-fixed.h index 4546059..97cd6df 100644 --- a/src/seq/event-fixed.h +++ b/src/seq/event-fixed.h @@ -56,6 +56,10 @@ const guint8 *alsaseq_event_fixed_get_byte_data(ALSASeqEventFixed *self); void alsaseq_event_fixed_set_byte_data(ALSASeqEventFixed *self, const guint8 data[12]); +const guint32 *alsaseq_event_fixed_get_quadlet_data(ALSASeqEventFixed *self); +void alsaseq_event_fixed_set_quadlet_data(ALSASeqEventFixed *self, + const guint32 data[3]); + G_END_DECLS #endif diff --git a/tests/alsaseq-event-fixed b/tests/alsaseq-event-fixed index 1f4d9f9..7f4a6f6 100644 --- a/tests/alsaseq-event-fixed +++ b/tests/alsaseq-event-fixed @@ -22,6 +22,8 @@ methods = ( 'new', 'get_byte_data', 'set_byte_data', + 'get_quadlet_data', + 'set_quadlet_data', ) signals = ()