From 35bec4061e442b54189132c748ce87163c26ce53 Mon Sep 17 00:00:00 2001 From: Takashi Sakamoto Date: Wed, 10 Jun 2020 07:07:08 +0900 Subject: [PATCH] seq: queue_timer: add accessor APIs for data of queue timer in ALSATimer case Signed-off-by: Takashi Sakamoto --- src/seq/alsaseq.map | 2 ++ src/seq/queue-timer.c | 40 +++++++++++++++++++++++++++++++++++++++ src/seq/queue-timer.h | 7 ++++++- tests/alsaseq-queue-timer | 7 ++++++- 4 files changed, 54 insertions(+), 2 deletions(-) diff --git a/src/seq/alsaseq.map b/src/seq/alsaseq.map index da9ebaf..9117d89 100644 --- a/src/seq/alsaseq.map +++ b/src/seq/alsaseq.map @@ -145,6 +145,8 @@ ALSA_GOBJECT_0_0_0 { "alsaseq_queue_tempo_set_skew"; "alsaseq_queue_timer_get_type"; + "alsaseq_queue_timer_get_alsa_data"; + "alsaseq_queue_timer_set_alsa_data"; "alsaseq_queue_timer_alsa_get_type"; "alsaseq_queue_timer_alsa_new"; diff --git a/src/seq/queue-timer.c b/src/seq/queue-timer.c index 895851c..5921dac 100644 --- a/src/seq/queue-timer.c +++ b/src/seq/queue-timer.c @@ -79,6 +79,46 @@ static void alsaseq_queue_timer_init(ALSASeqQueueTimer *self) return; } +/** + * alsaseq_queue_timer_get_alsa_data: + * @self: A #ALSASeqQueueTimer. + * @data: (out)(transfer none): A #ALSASeqQueueTimerDataAlsa. + * + * Refer to the data of timer for queue in the case that the device in ALSATimer + * drives the timer. + */ +void alsaseq_queue_timer_get_alsa_data(ALSASeqQueueTimer *self, + const ALSASeqQueueTimerDataAlsa **data) +{ + ALSASeqQueueTimerPrivate *priv; + + g_return_if_fail(ALSASEQ_IS_QUEUE_TIMER(self)); + priv = alsaseq_queue_timer_get_instance_private(self); + + *data = (const ALSASeqQueueTimerDataAlsa *)&priv->timer.u.alsa; +} + +/** + * alsaseq_queue_timer_set_alsa_data: + * @self: A #ALSASeqQueueTimer. + * @data: A #ALSASeqQueueTimerDataAlsa. + * + * Set the data of timer for queue in the case that the device in ALSATimer + * drives the timer. + */ +void alsaseq_queue_timer_set_alsa_data(ALSASeqQueueTimer *self, + const ALSASeqQueueTimerDataAlsa *data) +{ + ALSASeqQueueTimerPrivate *priv; + + g_return_if_fail(ALSASEQ_IS_QUEUE_TIMER(self)); + priv = alsaseq_queue_timer_get_instance_private(self); + + priv->timer.type = SNDRV_SEQ_TIMER_ALSA; + priv->timer.u.alsa.id = data->device_id; + priv->timer.u.alsa.resolution = data->resolution; +} + void seq_queue_timer_refer_private(ALSASeqQueueTimer *self, struct snd_seq_queue_timer **timer) { diff --git a/src/seq/queue-timer.h b/src/seq/queue-timer.h index 0315e46..958c2ad 100644 --- a/src/seq/queue-timer.h +++ b/src/seq/queue-timer.h @@ -6,7 +6,7 @@ #include #include -#include +#include G_BEGIN_DECLS @@ -48,6 +48,11 @@ struct _ALSASeqQueueTimerClass { GType alsaseq_queue_timer_get_type() G_GNUC_CONST; +void alsaseq_queue_timer_get_alsa_data(ALSASeqQueueTimer *self, + const ALSASeqQueueTimerDataAlsa **data); +void alsaseq_queue_timer_set_alsa_data(ALSASeqQueueTimer *self, + const ALSASeqQueueTimerDataAlsa *data); + G_END_DECLS #endif diff --git a/tests/alsaseq-queue-timer b/tests/alsaseq-queue-timer index 62b8021..46d492c 100644 --- a/tests/alsaseq-queue-timer +++ b/tests/alsaseq-queue-timer @@ -14,7 +14,12 @@ props = ( 'queue-id', 'type', ) -methods = () + +methods = ( + 'get_alsa_data', + 'set_alsa_data', +) + signals = () if not test(target, props, methods, signals): -- 2.47.3