]> git.alsa-project.org Git - alsa-gobject.git/commitdiff
seq: event_cntr: add accesor APIs for the tag of event pointed by index
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Mon, 8 Jun 2020 14:10:10 +0000 (23:10 +0900)
committer坂本 貴史 <o-takashi@sakamocchi.jp>
Tue, 9 Jun 2020 00:16:09 +0000 (09:16 +0900)
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
src/seq/alsaseq.map
src/seq/event-cntr.c
src/seq/event-cntr.h
tests/alsaseq-event-cntr

index 93729dd4e98762cddb15918097c1598cddf19fbf..88318a868fe5ea0aa13ef8903d39d9fa7c9e8966 100644 (file)
@@ -184,6 +184,8 @@ ALSA_GOBJECT_0_0_0 {
     "alsaseq_event_cntr_set_length_mode";
     "alsaseq_event_cntr_get_priority_mode";
     "alsaseq_event_cntr_set_priority_mode";
+    "alsaseq_event_cntr_get_tag";
+    "alsaseq_event_cntr_set_tag";
   local:
     *;
 };
index ca8ef3c722491ad38cbb2268dd641bd2f983d170..b6bccbf217ae774b2203025f2bd0a65724f00e8a 100644 (file)
@@ -483,3 +483,63 @@ void alsaseq_event_cntr_set_priority_mode(
     ev->flags &= ~SNDRV_SEQ_PRIORITY_MASK;
     ev->flags |= (unsigned char)mode;
 }
+
+/**
+ * alsaseq_event_cntr_get_tag:
+ * @self: A #ALSASeqEventCntr.
+ * @index: The index of event to set.
+ * @tag: (out): The tag assigned to the event.
+ * @error: A #GError.
+ *
+ * Get the tag assignd to the event pointed by the index.
+ */
+void alsaseq_event_cntr_get_tag(ALSASeqEventCntr *self, gsize index,
+                                  gint8 *tag, 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;
+    }
+
+    *tag = ev->tag;
+}
+
+/**
+ * alsaseq_event_cntr_set_tag:
+ * @self: A #ALSASeqEventCntr.
+ * @index: The index of event to set.
+ * @tag: The tag going to be assignd to the event.
+ * @error: A #GError.
+ *
+ * Get the tag assignd to the event pointed by the index.
+ */
+void alsaseq_event_cntr_set_tag(ALSASeqEventCntr *self, gsize index,
+                                  gint8 tag, 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->tag = tag;
+}
index 283754351cee5f9e72656e4195068875b6a18743..8ffbfd8d79ec99ba10eaa9f8944be027374ad1ad 100644 (file)
@@ -85,6 +85,11 @@ void alsaseq_event_cntr_set_priority_mode(
                                 ALSASeqEventCntr *self, gsize index,
                                 ALSASeqEventPriorityMode mode, GError **error);
 
+void alsaseq_event_cntr_get_tag(ALSASeqEventCntr *self, gsize index,
+                                  gint8 *tag, GError **error);
+void alsaseq_event_cntr_set_tag(ALSASeqEventCntr *self, gsize index,
+                                  gint8 tag, GError **error);
+
 G_END_DECLS
 
 #endif
index 0f4f01830b2e41fd8410dd69465046b930b9a93d..e5e5a9e5f3777adc3f42fb7381c11ecee93ff6a3 100644 (file)
@@ -24,6 +24,8 @@ methods = (
     'get_length_mode',
     'get_priority_mode',
     'set_priority_mode',
+    'get_tag',
+    'set_tag',
 )
 signals = ()