]> git.alsa-project.org Git - alsa-gobject.git/commitdiff
seq: queue_timer: add accessor APIs for data of queue timer in ALSATimer case
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Tue, 9 Jun 2020 22:07:08 +0000 (07:07 +0900)
committer坂本 貴史 <o-takashi@sakamocchi.jp>
Thu, 11 Jun 2020 09:25:19 +0000 (18:25 +0900)
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
src/seq/alsaseq.map
src/seq/queue-timer.c
src/seq/queue-timer.h
tests/alsaseq-queue-timer

index da9ebaf4d2c82395b9cc17ef1cd0eed7c5a9a0ce..9117d89ff8fe5ebf261ec24918bdcf62598a30e5 100644 (file)
@@ -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";
index 895851c6b0cdf000dddcc698946401e5747fa27c..5921dac1c6d5e141dd7ca90e7d4752258e54e25a 100644 (file)
@@ -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)
 {
index 0315e460a70cd5da340bd931ef337aabd034817d..958c2ad23f050a274900ec219dd22fb35d5540a4 100644 (file)
@@ -6,7 +6,7 @@
 #include <glib-object.h>
 
 #include <seq/alsaseq-enums.h>
-#include <timer/device-id.h>
+#include <seq/queue-timer-data-alsa.h>
 
 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
index 62b80210fd4d0a91f3e3bea846d9cd533bc23d21..46d492cf0c7be2de5ab1d4ac88457079c2f85070 100644 (file)
@@ -14,7 +14,12 @@ props = (
     'queue-id',
     'type',
 )
-methods = ()
+
+methods = (
+    'get_alsa_data',
+    'set_alsa_data',
+)
+
 signals = ()
 
 if not test(target, props, methods, signals):