]> git.alsa-project.org Git - alsa-gobject.git/commitdiff
seq: event_fixed: add a property for result data of event
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Wed, 1 Apr 2020 09:13:28 +0000 (18:13 +0900)
committer坂本 貴史 <o-takashi@sakamocchi.jp>
Fri, 3 Apr 2020 13:06:25 +0000 (22:06 +0900)
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
src/seq/event-fixed.c
src/seq/event-fixed.h
tests/alsaseq-event-fixed

index a7f875d55125881a65abff4586057f18fe7c90fd..2a1271a6dfc44dad30d3c9a204eb8ae84a0df393 100644 (file)
@@ -6,9 +6,67 @@
 
 G_DEFINE_TYPE(ALSASeqEventFixed, alsaseq_event_fixed, ALSASEQ_TYPE_EVENT)
 
+enum seq_event_fixed_prop_type {
+    SEQ_EVENT_FIXED_PROP_RESULT_DATA = 1,
+    SEQ_EVENT_FIXED_PROP_COUNT,
+};
+static GParamSpec *seq_event_fixed_props[SEQ_EVENT_FIXED_PROP_COUNT] = { NULL, };
+
+static void seq_event_fixed_set_property(GObject *obj, guint id,
+                                         const GValue *val, GParamSpec *spec)
+{
+    ALSASeqEvent *parent = ALSASEQ_EVENT(obj);
+    struct snd_seq_event *ev;
+    seq_event_refer_private(parent, &ev);
+
+    switch (id) {
+    case SEQ_EVENT_FIXED_PROP_RESULT_DATA:
+    {
+        ALSASeqEventDataResult *data = g_value_get_boxed(val);
+        if (data != NULL)
+            ev->data.result = *data;
+        break;
+    }
+    default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, id, spec);
+        break;
+    }
+}
+
+static void seq_event_fixed_get_property(GObject *obj, guint id, GValue *val,
+                                         GParamSpec *spec)
+{
+    ALSASeqEvent *parent = ALSASEQ_EVENT(obj);
+    struct snd_seq_event *ev;
+    seq_event_refer_private(parent, &ev);
+
+    switch (id) {
+    case SEQ_EVENT_FIXED_PROP_RESULT_DATA:
+        g_value_set_static_boxed(val, &ev->data.result);
+        break;
+    default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, id, spec);
+        break;
+    }
+}
+
 static void alsaseq_event_fixed_class_init(ALSASeqEventFixedClass *klass)
 {
-    return;
+    GObjectClass *gobject_class = G_OBJECT_CLASS(klass);
+
+    gobject_class->set_property = seq_event_fixed_set_property;
+    gobject_class->get_property = seq_event_fixed_get_property;
+
+    seq_event_fixed_props[SEQ_EVENT_FIXED_PROP_RESULT_DATA] =
+        g_param_spec_boxed("result-data", "result-data",
+                           "The data of result type. This shares the same "
+                           "storage between the other properties",
+                           ALSASEQ_TYPE_EVENT_DATA_RESULT,
+                           G_PARAM_READWRITE);
+
+    g_object_class_install_properties(gobject_class,
+                                      SEQ_EVENT_FIXED_PROP_COUNT,
+                                      seq_event_fixed_props);
 }
 
 static void alsaseq_event_fixed_init(ALSASeqEventFixed *self)
index 6c7adc81424de18734f044d5948233ec92043264..ce54c319a7b97b241fe2a7d1a401d6e81b66c418 100644 (file)
@@ -6,6 +6,7 @@
 #include <glib-object.h>
 
 #include <seq/event.h>
+#include <seq/event-data-result.h>
 
 G_BEGIN_DECLS
 
index edc9649b8df346aab5e6c14cd4f28dd82e404460..c42e19e747d7f3073b1f128bb7fe5f02f07ad769 100644 (file)
@@ -10,7 +10,9 @@ gi.require_version('ALSASeq', '0.0')
 from gi.repository import ALSASeq
 
 target = ALSASeq.EventFixed()
-props = ()
+props = (
+    'result-data',
+)
 methods = (
     'new',
 )