From: Takashi Sakamoto Date: Wed, 20 Nov 2019 13:21:27 +0000 (+0900) Subject: seq: queue_timer: add properties X-Git-Tag: v0.1.0~216 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=d794f015170f5989dc364debc487380332975069;p=alsa-gobject.git seq: queue_timer: add properties Signed-off-by: Takashi Sakamoto --- diff --git a/src/seq/queue-timer.c b/src/seq/queue-timer.c index 763ca9c..4e7eb4e 100644 --- a/src/seq/queue-timer.c +++ b/src/seq/queue-timer.c @@ -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 + +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) diff --git a/src/seq/queue-timer.h b/src/seq/queue-timer.h index e7b8212..c6abc6f 100644 --- a/src/seq/queue-timer.h +++ b/src/seq/queue-timer.h @@ -5,6 +5,8 @@ #include #include +#include + 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 { diff --git a/tests/alsaseq-queue-timer b/tests/alsaseq-queue-timer index 673c0dd..62b8021 100644 --- a/tests/alsaseq-queue-timer +++ b/tests/alsaseq-queue-timer @@ -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 = ()