]> git.alsa-project.org Git - alsa-gobject.git/commitdiff
timer: event_data: add properties
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Sun, 9 Feb 2020 03:20:53 +0000 (12:20 +0900)
committer坂本 貴史 <o-takashi@sakamocchi.jp>
Tue, 11 Feb 2020 04:28:18 +0000 (13:28 +0900)
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
src/timer/event-data.c
src/timer/event-data.h
tests/alsatimer-event-data

index 4c2f61cec87441fbb5e93953ebfd32c257e426b7..296ad3db96ec115d77e4e547afb94cb3f1b47c9d 100644 (file)
@@ -1,11 +1,64 @@
 // SPDX-License-Identifier: LGPL-3.0-or-later
 #include "event-data.h"
 
-G_DEFINE_ABSTRACT_TYPE(ALSATimerEventData, alsatimer_event_data, G_TYPE_OBJECT)
+struct _ALSATimerEventDataPrivate {
+    ALSATimerEventDataType type;
+};
+G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE(ALSATimerEventData, alsatimer_event_data, G_TYPE_OBJECT)
+
+enum timer_event_data_prop_type{
+    TIMER_EVENT_DATA_PROP_EVENT_DATA_TYPE = 1,
+    TIMER_EVENT_DATA_PROP_COUNT,
+};
+static GParamSpec *timer_event_data_props[TIMER_EVENT_DATA_PROP_COUNT] = { NULL, };
+
+static void timer_event_data_set_property(GObject *obj, guint id,
+                                          const GValue *val, GParamSpec *spec)
+{
+    ALSATimerEventData *self = ALSATIMER_EVENT_DATA(obj);
+    ALSATimerEventDataPrivate *priv = alsatimer_event_data_get_instance_private(self);
+
+    switch (id) {
+    case TIMER_EVENT_DATA_PROP_EVENT_DATA_TYPE:
+       priv->type = g_value_get_enum(val);
+        break;
+    default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, id, spec);
+        break;
+    }
+}
+
+static void timer_event_data_get_property(GObject *obj, guint id, GValue *val, GParamSpec *spec)
+{
+    ALSATimerEventData *self = ALSATIMER_EVENT_DATA(obj);
+    ALSATimerEventDataPrivate *priv = alsatimer_event_data_get_instance_private(self);
+
+    switch (id) {
+    case TIMER_EVENT_DATA_PROP_EVENT_DATA_TYPE:
+        g_value_set_enum(val, priv->type);
+        break;
+    default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, id, spec);
+        break;
+    }
+}
 
 static void alsatimer_event_data_class_init(ALSATimerEventDataClass *klass)
 {
-    return;
+    GObjectClass *gobject_class = G_OBJECT_CLASS(klass);
+
+    gobject_class->set_property = timer_event_data_set_property;
+    gobject_class->get_property = timer_event_data_get_property;
+
+    timer_event_data_props[TIMER_EVENT_DATA_PROP_EVENT_DATA_TYPE] =
+        g_param_spec_enum("type", "type",
+                          "The type of event_data, one of ALSATimerEventDataType.",
+                          ALSATIMER_TYPE_EVENT_DATA_TYPE,
+                          ALSATIMER_EVENT_DATA_TYPE_TICK,
+                          G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
+
+    g_object_class_install_properties(gobject_class, TIMER_EVENT_DATA_PROP_COUNT,
+                                      timer_event_data_props);
 }
 
 static void alsatimer_event_data_init(ALSATimerEventData *self)
index 9e550fbdf3a4df327482f91797386ea3d2ccb0f1..ffda22c129f224c964e3408ceed0b8b1e96d0ebb 100644 (file)
@@ -5,35 +5,40 @@
 #include <glib.h>
 #include <glib-object.h>
 
+#include <timer/alsatimer-enums.h>
+
 G_BEGIN_DECLS
 
 #define ALSATIMER_TYPE_EVENT_DATA   (alsatimer_event_data_get_type())
 
-#define ALSATIMER_EVENT_DATA(obj)                               \
-    (G_TYPE_CHECK_INSTANCE_CAST((obj),                          \
-                                ALSATIMER_TYPE_EVENT_DATA,      \
+#define ALSATIMER_EVENT_DATA(obj)                           \
+    (G_TYPE_CHECK_INSTANCE_CAST((obj),                      \
+                                ALSATIMER_TYPE_EVENT_DATA,  \
                                 ALSATimerEventData))
-#define ALSATIMER_IS_EVENT_DATA(obj)                            \
-    (G_TYPE_CHECK_INSTANCE_TYPE((obj),                          \
+#define ALSATIMER_IS_EVENT_DATA(obj)                        \
+    (G_TYPE_CHECK_INSTANCE_TYPE((obj),                      \
                                 ALSATIMER_TYPE_EVENT_DATA))
 
-#define ALSATIMER_EVENT_DATA_CLASS(klass)                       \
-    (G_TYPE_CHECK_CLASS_CAST((klass),                           \
-                             ALSATIMER_TYPE_EVENT_DATA,         \
+#define ALSATIMER_EVENT_DATA_CLASS(klass)                   \
+    (G_TYPE_CHECK_CLASS_CAST((klass),                       \
+                             ALSATIMER_TYPE_EVENT_DATA,     \
                              ALSATimerEventDataClass))
-#define ALSATIMER_IS_EVENT_DATA_CLASS(klass)                    \
-    (G_TYPE_CHECK_CLASS_TYPE((klass),                           \
+#define ALSATIMER_IS_EVENT_DATA_CLASS(klass)                \
+    (G_TYPE_CHECK_CLASS_TYPE((klass),                       \
                              ALSATIMER_TYPE_EVENT_DATA))
-#define ALSATIMER_EVENT_DATA_GET_CLASS(obj)                     \
-    (G_TYPE_INSTANCE_GET_CLASS((obj),                           \
-                               ALSATIMER_TYPE_EVENT_DATA,       \
+#define ALSATIMER_EVENT_DATA_GET_CLASS(obj)                 \
+    (G_TYPE_INSTANCE_GET_CLASS((obj),                       \
+                               ALSATIMER_TYPE_EVENT_DATA,   \
                                ALSATimerEventDataClass))
 
 typedef struct _ALSATimerEventData          ALSATimerEventData;
 typedef struct _ALSATimerEventDataClass     ALSATimerEventDataClass;
+typedef struct _ALSATimerEventDataPrivate   ALSATimerEventDataPrivate;
 
 struct _ALSATimerEventData {
     GObject parent_instance;
+
+    ALSATimerEventDataPrivate *priv;
 };
 
 struct _ALSATimerEventDataClass {
index 26faf497508c5fb1e8a2ff4067e3226a643a4c29..3856d7f13a214f6cf5ebf7a2da24aa168fa821b8 100644 (file)
@@ -10,7 +10,9 @@ gi.require_version('ALSATimer', '0.0')
 from gi.repository import ALSATimer
 
 target = ALSATimer.EventData
-props = ()
+props = (
+    'type',
+)
 methods = ()
 signals = ()