From a0f907fb8d215381732a1a502b7110af21f0b434 Mon Sep 17 00:00:00 2001 From: Takashi Sakamoto Date: Wed, 1 Apr 2020 18:13:28 +0900 Subject: [PATCH] seq: event_fixed: add constructor Signed-off-by: Takashi Sakamoto --- src/seq/alsaseq.map | 1 + src/seq/event-fixed.c | 34 ++++++++++++++++++++++++++++++++++ src/seq/event-fixed.h | 3 +++ tests/alsaseq-event-fixed | 4 +++- 4 files changed, 41 insertions(+), 1 deletion(-) diff --git a/src/seq/alsaseq.map b/src/seq/alsaseq.map index 2ca157f..92dd9d9 100644 --- a/src/seq/alsaseq.map +++ b/src/seq/alsaseq.map @@ -62,6 +62,7 @@ ALSA_GOBJECT_0_0_0 { "alsaseq_event_get_type"; "alsaseq_event_fixed_get_type"; + "alsaseq_event_fixed_new"; local: *; }; diff --git a/src/seq/event-fixed.c b/src/seq/event-fixed.c index 105c361..a7f875d 100644 --- a/src/seq/event-fixed.c +++ b/src/seq/event-fixed.c @@ -1,5 +1,8 @@ // SPDX-License-Identifier: LGPL-3.0-or-later #include "event-fixed.h" +#include "privates.h" + +#include G_DEFINE_TYPE(ALSASeqEventFixed, alsaseq_event_fixed, ALSASEQ_TYPE_EVENT) @@ -12,3 +15,34 @@ static void alsaseq_event_fixed_init(ALSASeqEventFixed *self) { return; } + +/** + * alsaseq_event_fixed_new: + * @event_type: A #ALSASeqEventType. + * @error: A #GError. + * + * Allocate and returns an instance of #ALSASeqEventFixed class. + * + * Returns: (transfer full): A #ALSASeqEventFixed. + */ +ALSASeqEventFixed *alsaseq_event_fixed_new(ALSASeqEventType event_type, + GError **error) +{ + switch (event_type) { + case ALSASEQ_EVENT_TYPE_BOUNCE: + case ALSASEQ_EVENT_TYPE_USR_VAR0: + case ALSASEQ_EVENT_TYPE_USR_VAR1: + case ALSASEQ_EVENT_TYPE_USR_VAR2: + case ALSASEQ_EVENT_TYPE_USR_VAR3: + case ALSASEQ_EVENT_TYPE_USR_VAR4: + generate_error(error, EINVAL); + return NULL; + default: + break; + } + + return g_object_new(ALSASEQ_TYPE_EVENT_FIXED, + "type", event_type, + "length-mode", ALSASEQ_EVENT_LENGTH_MODE_FIXED, + NULL); +} diff --git a/src/seq/event-fixed.h b/src/seq/event-fixed.h index aabc7e6..6c7adc8 100644 --- a/src/seq/event-fixed.h +++ b/src/seq/event-fixed.h @@ -44,6 +44,9 @@ struct _ALSASeqEventFixedClass { GType alsaseq_event_fixed_get_type() G_GNUC_CONST; +ALSASeqEventFixed *alsaseq_event_fixed_new(ALSASeqEventType event_type, + GError **error); + G_END_DECLS #endif diff --git a/tests/alsaseq-event-fixed b/tests/alsaseq-event-fixed index e1aa9d0..edc9649 100644 --- a/tests/alsaseq-event-fixed +++ b/tests/alsaseq-event-fixed @@ -11,7 +11,9 @@ from gi.repository import ALSASeq target = ALSASeq.EventFixed() props = () -methods = () +methods = ( + 'new', +) signals = () if not test(target, props, methods, signals): -- 2.47.3