From: Takashi Sakamoto Date: Mon, 8 Jun 2020 14:10:10 +0000 (+0900) Subject: seq: event_cntr: add accesor APIs for the numerical ID of queue to deliver the event... X-Git-Tag: v0.1.0~125 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=b262f1cdc7d9305cc5fae5772c81fa2e3b3a14f9;p=alsa-gobject.git seq: event_cntr: add accesor APIs for the numerical ID of queue to deliver the event pointed by index Signed-off-by: Takashi Sakamoto --- diff --git a/src/seq/alsaseq.map b/src/seq/alsaseq.map index 88318a8..e7f5b26 100644 --- a/src/seq/alsaseq.map +++ b/src/seq/alsaseq.map @@ -186,6 +186,8 @@ ALSA_GOBJECT_0_0_0 { "alsaseq_event_cntr_set_priority_mode"; "alsaseq_event_cntr_get_tag"; "alsaseq_event_cntr_set_tag"; + "alsaseq_event_cntr_get_queue_id"; + "alsaseq_event_cntr_set_queue_id"; local: *; }; diff --git a/src/seq/event-cntr.c b/src/seq/event-cntr.c index b6bccbf..4b104bc 100644 --- a/src/seq/event-cntr.c +++ b/src/seq/event-cntr.c @@ -543,3 +543,65 @@ void alsaseq_event_cntr_set_tag(ALSASeqEventCntr *self, gsize index, ev->tag = tag; } + +/** + * alsaseq_event_cntr_get_queue_id: + * @self: A #ALSASeqEventCntr. + * @index: The index of event to set. + * @queue_id: (out): The numerical ID of queue to deliver the event. One of + * #ALSASeqSpecificQueueId is available as well. + * @error: A #GError. + * + * Get the numerical ID of queue to deliver the event. + */ +void alsaseq_event_cntr_get_queue_id(ALSASeqEventCntr *self, gsize index, + guint8 *queue_id, GError **error) +{ + ALSASeqEventCntrPrivate *priv; + struct event_iterator iter; + struct snd_seq_event *ev; + + g_return_if_fail(ALSASEQ_IS_EVENT_CNTR(self)); + priv = alsaseq_event_cntr_get_instance_private(self); + + event_iterator_init(&iter, priv->buf, priv->length, priv->allocated); + + ev = event_iterator_find(&iter, index); + if (ev == NULL) { + generate_error(error, ENOENT); + return; + } + + *queue_id = ev->queue; +} + +/** + * alsaseq_event_cntr_set_queue_id: + * @self: A #ALSASeqEventCntr. + * @index: The index of event to set. + * @queue_id: The numerical ID of queue to deliver the event. One of + * #ALSASeqSpecificQueueId is available as well. + * @error: A #GError. + * + * Set the numerical ID of queue to deliver the event. + */ +void alsaseq_event_cntr_set_queue_id(ALSASeqEventCntr *self, gsize index, + guint8 queue_id, GError **error) +{ + ALSASeqEventCntrPrivate *priv; + struct event_iterator iter; + struct snd_seq_event *ev; + + g_return_if_fail(ALSASEQ_IS_EVENT_CNTR(self)); + priv = alsaseq_event_cntr_get_instance_private(self); + + event_iterator_init(&iter, priv->buf, priv->length, priv->allocated); + + ev = event_iterator_find(&iter, index); + if (ev == NULL) { + generate_error(error, ENOENT); + return; + } + + ev->queue = queue_id; +} diff --git a/src/seq/event-cntr.h b/src/seq/event-cntr.h index 8ffbfd8..755e2e6 100644 --- a/src/seq/event-cntr.h +++ b/src/seq/event-cntr.h @@ -90,6 +90,11 @@ void alsaseq_event_cntr_get_tag(ALSASeqEventCntr *self, gsize index, void alsaseq_event_cntr_set_tag(ALSASeqEventCntr *self, gsize index, gint8 tag, GError **error); +void alsaseq_event_cntr_get_queue_id(ALSASeqEventCntr *self, gsize index, + guint8 *queue_id, GError **error); +void alsaseq_event_cntr_set_queue_id(ALSASeqEventCntr *self, gsize index, + guint8 queue_id, GError **error); + G_END_DECLS #endif diff --git a/tests/alsaseq-event-cntr b/tests/alsaseq-event-cntr index e5e5a9e..0b9b369 100644 --- a/tests/alsaseq-event-cntr +++ b/tests/alsaseq-event-cntr @@ -26,6 +26,8 @@ methods = ( 'set_priority_mode', 'get_tag', 'set_tag', + 'get_queue_id', + 'set_queue_id', ) signals = ()