]> git.alsa-project.org Git - alsa-gobject.git/commitdiff
seq: queue_timer: add properties
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Wed, 20 Nov 2019 13:21:27 +0000 (22:21 +0900)
committer坂本 貴史 <o-takashi@sakamocchi.jp>
Tue, 7 Apr 2020 08:08:24 +0000 (17:08 +0900)
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
src/seq/queue-timer.c
src/seq/queue-timer.h
tests/alsaseq-queue-timer

index 763ca9ca268222b78cb266b0ab696c91d227f4c6..4e7eb4e20ecd1487ec7dcedb48ff54610ca2b16f 100644 (file)
@@ -1,11 +1,86 @@
 // SPDX-License-Identifier: LGPL-3.0-or-later
 #include "queue-timer.h"
 
-G_DEFINE_ABSTRACT_TYPE(ALSASeqQueueTimer, alsaseq_queue_timer, G_TYPE_OBJECT)
+#include <sound/asequencer.h>
+
+struct _ALSASeqQueueTimerPrivate {
+    struct snd_seq_queue_timer timer;
+};
+G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE(ALSASeqQueueTimer, alsaseq_queue_timer, G_TYPE_OBJECT)
+
+enum seq_queue_timer_prop_type {
+    SEQ_QUEUE_TIMER_PROP_QUEUE_ID = 1,
+    SEQ_QUEUE_TIMER_PROP_TIMER_TYPE,
+    SEQ_QUEUE_TIMER_PROP_COUNT,
+};
+static GParamSpec *seq_queue_timer_props[SEQ_QUEUE_TIMER_PROP_COUNT] = { NULL, };
+
+static void seq_queue_timer_set_property(GObject *obj, guint id,
+                                         const GValue *val, GParamSpec *spec)
+{
+    ALSASeqQueueTimer *self = ALSASEQ_QUEUE_TIMER(obj);
+    ALSASeqQueueTimerPrivate *priv =
+                                alsaseq_queue_timer_get_instance_private(self);
+
+    switch (id) {
+    case SEQ_QUEUE_TIMER_PROP_QUEUE_ID:
+        priv->timer.queue = g_value_get_int(val);
+        break;
+    case SEQ_QUEUE_TIMER_PROP_TIMER_TYPE:
+        priv->timer.type = (int)g_value_get_enum(val);
+        break;
+    default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, id, spec);
+        break;
+    }
+}
+
+static void seq_queue_timer_get_property(GObject *obj, guint id, GValue *val,
+                                         GParamSpec *spec)
+{
+    ALSASeqQueueTimer *self = ALSASEQ_QUEUE_TIMER(obj);
+    ALSASeqQueueTimerPrivate *priv =
+                                alsaseq_queue_timer_get_instance_private(self);
+
+    switch (id) {
+    case SEQ_QUEUE_TIMER_PROP_QUEUE_ID:
+        g_value_set_int(val, priv->timer.queue);
+        break;
+    case SEQ_QUEUE_TIMER_PROP_TIMER_TYPE:
+        g_value_set_enum(val, (ALSASeqQueueTimerType)priv->timer.type);
+        break;
+    default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, id, spec);
+        break;
+    }
+}
 
 static void alsaseq_queue_timer_class_init(ALSASeqQueueTimerClass *klass)
 {
-    return;
+    GObjectClass *gobject_class = G_OBJECT_CLASS(klass);
+
+    gobject_class->set_property = seq_queue_timer_set_property;
+    gobject_class->get_property = seq_queue_timer_get_property;
+
+    seq_queue_timer_props[SEQ_QUEUE_TIMER_PROP_QUEUE_ID] =
+        g_param_spec_int("queue-id", "queue-id",
+                         "The numerical ID of queue, except for one of "
+                         "ALSASeqSpecificClientId.",
+                         G_MININT, G_MAXINT,
+                         -1,
+                         G_PARAM_READWRITE);
+
+    seq_queue_timer_props[SEQ_QUEUE_TIMER_PROP_TIMER_TYPE] =
+        g_param_spec_enum("type", "type",
+                          "The type of timer for the queue, one of "
+                          "ALSASeqQueueTimerType.",
+                          ALSASEQ_TYPE_QUEUE_TIMER_TYPE,
+                          ALSASEQ_QUEUE_TIMER_TYPE_ALSA,
+                          G_PARAM_READWRITE);
+
+    g_object_class_install_properties(gobject_class,
+                                      SEQ_QUEUE_TIMER_PROP_COUNT,
+                                      seq_queue_timer_props);
 }
 
 static void alsaseq_queue_timer_init(ALSASeqQueueTimer *self)
index e7b82123c3d598059d427eff81b47769c9aae7a8..c6abc6f22f34f6141366ff9cbbf8505a50ffc982 100644 (file)
@@ -5,6 +5,8 @@
 #include <glib.h>
 #include <glib-object.h>
 
+#include <seq/alsaseq-enums.h>
+
 G_BEGIN_DECLS
 
 #define ALSASEQ_TYPE_QUEUE_TIMER     (alsaseq_queue_timer_get_type())
@@ -31,9 +33,12 @@ G_BEGIN_DECLS
 
 typedef struct _ALSASeqQueueTimer           ALSASeqQueueTimer;
 typedef struct _ALSASeqQueueTimerClass      ALSASeqQueueTimerClass;
+typedef struct _ALSASeqQueueTimerPrivate    ALSASeqQueueTimerPrivate;
 
 struct _ALSASeqQueueTimer {
     GObject parent_instance;
+
+    ALSASeqQueueTimerPrivate *priv;
 };
 
 struct _ALSASeqQueueTimerClass {
index 673c0dd418a8ae8873863e00c0471d8b6d54f0a0..62b80210fd4d0a91f3e3bea846d9cd533bc23d21 100644 (file)
@@ -10,7 +10,10 @@ gi.require_version('ALSASeq', '0.0')
 from gi.repository import ALSASeq
 
 target = ALSASeq.QueueTimer
-props = ()
+props = (
+    'queue-id',
+    'type',
+)
 methods = ()
 signals = ()