From 1b71f2015d06d9c9db0ab3a3b78c3a8ae95a8ee8 Mon Sep 17 00:00:00 2001 From: Takashi Sakamoto Date: Wed, 1 Apr 2020 18:13:28 +0900 Subject: [PATCH] seq: event_fixed: add API to refer to quadlet data of event Signed-off-by: Takashi Sakamoto --- src/seq/alsaseq.map | 2 ++ src/seq/event-fixed.c | 41 +++++++++++++++++++++++++++++++++++++++ src/seq/event-fixed.h | 4 ++++ tests/alsaseq-event-fixed | 2 ++ 4 files changed, 49 insertions(+) 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 = () -- 2.47.3