]> git.alsa-project.org Git - alsa-gobject.git/commitdiff
seq: queue-timer-common: add common interface for queue timer
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Wed, 1 Jun 2022 02:35:44 +0000 (11:35 +0900)
committer坂本 貴史 <o-takashi@sakamocchi.jp>
Thu, 2 Jun 2022 09:33:12 +0000 (18:33 +0900)
In UAPI of ALSA Sequencer, queue timer is expressed by union to support
several types of backend timer.

This commit adds common interface for the timer. It should implements
two properties; the identifier of queue and the type of timer.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
src/seq/alsaseq.h
src/seq/alsaseq.map
src/seq/meson.build
src/seq/privates.h
src/seq/queue-timer-common.c [new file with mode: 0644]
src/seq/queue-timer-common.h [new file with mode: 0644]

index e70a7686794eacc2efcb9d360bf72bfd789e5191..148cbc33a1e91d2c9b9f1bc644c4f0f3a539b154 100644 (file)
@@ -19,6 +19,8 @@
 #include <event-data-result.h>
 #include <remove-filter.h>
 
+#include <queue-timer-common.h>
+
 #include <system-info.h>
 #include <client-info.h>
 #include <client-pool.h>
index fbd02b0c8122e6f3663d48a5228d8d0f747ff0b4..3a1fd30d012f8dae53992fdde4413c9357584088 100644 (file)
@@ -224,4 +224,6 @@ ALSA_GOBJECT_0_3_0 {
     "alsaseq_event_cntr_set_connect_data";
     "alsaseq_event_cntr_get_result_data";
     "alsaseq_event_cntr_set_result_data";
+
+    "alsaseq_queue_timer_common_get_type";
 } ALSA_GOBJECT_0_2_0;
index ee3b241f7f5ea4b2e5c298114866cfea777d66e8..bec7739536455436c3aa57cb461194c89a76abb5 100644 (file)
@@ -30,6 +30,7 @@ sources = files(
   'queue-timer-data-alsa.c',
   'remove-filter.c',
   'event-cntr.c',
+  'queue-timer-common.c',
 )
 
 headers = files(
@@ -54,6 +55,7 @@ headers = files(
   'queue-timer-data-alsa.h',
   'remove-filter.h',
   'event-cntr.h',
+  'queue-timer-common.h',
 )
 
 privates = files(
index 37b17af0557a8d16c8e8a9121f8551748853b0d3..37d3542cf33df823c655daae04f9aa6a8ef22d48 100644 (file)
@@ -39,6 +39,9 @@ void seq_event_cntr_set_buf(ALSASeqEventCntr *self, guint8 *buf,
 void seq_event_cntr_get_buf(ALSASeqEventCntr *self, gsize count,
                               const guint8 **buf, gsize *length);
 
+#define QUEUE_ID_PROP_NAME          "queue-id"
+#define TIMER_TYPE_PROP_NAME        "timer-type"
+
 G_END_DECLS
 
 #endif
diff --git a/src/seq/queue-timer-common.c b/src/seq/queue-timer-common.c
new file mode 100644 (file)
index 0000000..cf13b19
--- /dev/null
@@ -0,0 +1,46 @@
+// SPDX-License-Identifier: LGPL-3.0-or-later
+#include "privates.h"
+
+/**
+ * ALSASeqQueueTimerCommon:
+ * An interface to express common features of queue timer.
+ *
+ * A [iface@QueueTimerCommon] should be implemented by any type of queue timer.
+ *
+ * The object wraps `struct snd_seq_queue_timer` in UAPI of Linux sound subsystem.
+ *
+ * Since: 0.3.
+ */
+
+static void alsaseq_queue_timer_common_default_init(ALSASeqQueueTimerCommonInterface *iface);
+
+G_DEFINE_INTERFACE(ALSASeqQueueTimerCommon, alsaseq_queue_timer_common, G_TYPE_OBJECT)
+
+static void alsaseq_queue_timer_common_default_init(ALSASeqQueueTimerCommonInterface *iface)
+{
+    /**
+     * ALSASeqQueueTimerCommon:queue-id:
+     *
+     * The numeric identifier of queue, including one of [enum@SpecificClientId].
+     *
+     * Since: 0.3.
+     */
+    g_object_interface_install_property(iface,
+        g_param_spec_uchar(QUEUE_ID_PROP_NAME, QUEUE_ID_PROP_NAME,
+                           "The numeric identifier of queue including ALSASeqSpecificClientId.",
+                           0, G_MAXUINT8, 0,
+                           G_PARAM_READABLE));
+
+    /**
+     * ALSASeqQueueTimerCommon:timer-type:
+     *
+     * The type of timer for the queue, one of [enum@QueueTimerType].
+     *
+     * Since: 0.3.
+     */
+    g_object_interface_install_property(iface,
+        g_param_spec_enum(TIMER_TYPE_PROP_NAME, TIMER_TYPE_PROP_NAME,
+                          "The type of timer for the queue, one of ALSASeqQueueTimerType.",
+                          ALSASEQ_TYPE_QUEUE_TIMER_TYPE, ALSASEQ_QUEUE_TIMER_TYPE_ALSA,
+                          G_PARAM_READABLE));
+}
diff --git a/src/seq/queue-timer-common.h b/src/seq/queue-timer-common.h
new file mode 100644 (file)
index 0000000..47372ad
--- /dev/null
@@ -0,0 +1,20 @@
+// SPDX-License-Identifier: LGPL-3.0-or-later
+#ifndef __ALSA_GOBJECT_ALSASEQ_QUEUE_TIMER_COMMON_H__
+#define __ALSA_GOBJECT_ALSASEQ_QUEUE_TIMER_COMMON_H__
+
+#include <alsaseq.h>
+
+G_BEGIN_DECLS
+
+#define ALSASEQ_TYPE_QUEUE_TIMER_COMMON     (alsaseq_queue_timer_common_get_type())
+
+G_DECLARE_INTERFACE(ALSASeqQueueTimerCommon, alsaseq_queue_timer_common, ALSASEQ,
+                    QUEUE_TIMER_COMMON, GObject)
+
+struct _ALSASeqQueueTimerCommonInterface {
+    GTypeInterface parent_iface;
+};
+
+G_END_DECLS
+
+#endif