]> git.alsa-project.org Git - alsa-gobject.git/commitdiff
seq: event_cntr: add accesor APIs for the length mode 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 e807cae6165346eb989e68cc726f3387a19ad354..66dd8f8e881776af634f6b11bd2b1c3319dd47e0 100644 (file)
@@ -180,6 +180,8 @@ ALSA_GOBJECT_0_0_0 {
     "alsaseq_event_cntr_set_tstamp_mode";
     "alsaseq_event_cntr_get_time_mode";
     "alsaseq_event_cntr_set_time_mode";
+    "alsaseq_event_cntr_get_length_mode";
+    "alsaseq_event_cntr_set_length_mode";
   local:
     *;
 };
index 289859caecf7331438dbe69aba3a30bb227d83d2..64e5cc267940087ff4acaa8d0c77cafdb094fcf7 100644 (file)
@@ -389,3 +389,34 @@ void alsaseq_event_cntr_set_time_mode(ALSASeqEventCntr *self, gsize index,
     ev->flags &= ~SNDRV_SEQ_TIME_MODE_MASK;
     ev->flags |= (unsigned char)mode;
 }
+
+/**
+ * alsaseq_event_cntr_get_length_mode:
+ * @self: A #ALSASeqEventCntr.
+ * @index: The index of event to set.
+ * @mode: (out): The mode of length, one of #ALSASeqEventLengthMode.
+ * @error: A #GError.
+ *
+ * Get the mode of length for the event pointed by the index.
+ */
+void alsaseq_event_cntr_get_length_mode(ALSASeqEventCntr *self, gsize index,
+                                          ALSASeqEventLengthMode *mode,
+                                          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;
+    }
+
+    *mode = (ALSASeqEventLengthMode)(ev->flags & SNDRV_SEQ_EVENT_LENGTH_MASK);
+}
index 39aa2b5259c564afc0427b44a7a8fc557cf5725c..7dc36211a8fbb14d90f8b1955230cdb7fc42e526 100644 (file)
@@ -74,6 +74,10 @@ void alsaseq_event_cntr_set_time_mode(ALSASeqEventCntr *self, gsize index,
                                         ALSASeqEventTimeMode mode,
                                         GError **error);
 
+void alsaseq_event_cntr_get_length_mode(ALSASeqEventCntr *self, gsize index,
+                                          ALSASeqEventLengthMode *mode,
+                                          GError **error);
+
 G_END_DECLS
 
 #endif
index efba7965bce56994859b66d3241ade740d5d7834..b32a67dbc594a69a3da0d67972d1294a1bdbea91 100644 (file)
@@ -21,6 +21,7 @@ methods = (
     'set_tstamp_mode',
     'get_time_mode',
     'set_time_mode',
+    'get_length_mode',
 )
 signals = ()