]> git.alsa-project.org Git - alsa-gobject.git/commitdiff
timer: event_tick: 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-tick.c
src/timer/event-data-tick.h
tests/alsatimer-event-data-tick

index 9a90538db5e4c53eae5939bbfc046c5eb0c4094a..f5ba1e96fc8b02ff45f09573008d3c8c017b126c 100644 (file)
@@ -1,14 +1,61 @@
 // SPDX-License-Identifier: LGPL-3.0-or-later
 #include "event-data-tick.h"
 
-G_DEFINE_TYPE(ALSATimerEventDataTick, alsatimer_event_data_tick, ALSATIMER_TYPE_EVENT_DATA)
+struct _ALSATimerEventDataTickPrivate {
+    struct snd_timer_read event;
+};
+G_DEFINE_TYPE_WITH_PRIVATE(ALSATimerEventDataTick, alsatimer_event_data_tick, ALSATIMER_TYPE_EVENT_DATA)
+
+enum timer_event_data_tick_prop_type{
+    TIMER_EVENT_DATA_TICK_PROP_RESOLUTION = 1,
+    TIMER_EVENT_DATA_TICK_PROP_TICKS,
+    TIMER_EVENT_DATA_TICK_PROP_COUNT,
+};
+static GParamSpec *timer_event_data_tick_props[TIMER_EVENT_DATA_TICK_PROP_COUNT] = { NULL, };
+
+static void timer_event_data_tick_get_property(GObject *obj, guint id, GValue *val, GParamSpec *spec)
+{
+    ALSATimerEventDataTick *self = ALSATIMER_EVENT_DATA_TICK(obj);
+    ALSATimerEventDataTickPrivate *priv = alsatimer_event_data_tick_get_instance_private(self);
+
+    switch (id) {
+    case TIMER_EVENT_DATA_TICK_PROP_RESOLUTION:
+        g_value_set_uint(val, priv->event.resolution);
+        break;
+    case TIMER_EVENT_DATA_TICK_PROP_TICKS:
+        g_value_set_uint(val, priv->event.ticks);
+        break;
+    default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, id, spec);
+        break;
+    }
+}
 
 static void alsatimer_event_data_tick_class_init(ALSATimerEventDataTickClass *klass)
 {
+    GObjectClass *gobject_class = G_OBJECT_CLASS(klass);
+
+    gobject_class->get_property = timer_event_data_tick_get_property;
+
+    timer_event_data_tick_props[TIMER_EVENT_DATA_TICK_PROP_RESOLUTION] =
+        g_param_spec_uint("resolution", "resolution",
+                          "The resolution of tick.",
+                          0, G_MAXUINT,
+                          0,
+                          G_PARAM_READABLE);
+
+    timer_event_data_tick_props[TIMER_EVENT_DATA_TICK_PROP_TICKS] =
+        g_param_spec_uint("ticks", "ticks",
+                          "The ticks since the latest event.",
+                          0, G_MAXUINT,
+                          0,
+                          G_PARAM_READABLE);
+
+    g_object_class_install_properties(gobject_class, TIMER_EVENT_DATA_TICK_PROP_COUNT,
+                                      timer_event_data_tick_props);
 }
 
 static void alsatimer_event_data_tick_init(ALSATimerEventDataTick *self)
 {
     return;
 }
-
index 887d016730bbb81850f3a197de3c33a331045fe4..4ff4a5f38a358c7c63b2613be9ec324d54425f83 100644 (file)
@@ -33,9 +33,12 @@ G_BEGIN_DECLS
 
 typedef struct _ALSATimerEventDataTick          ALSATimerEventDataTick;
 typedef struct _ALSATimerEventDataTickClass     ALSATimerEventDataTickClass;
+typedef struct _ALSATimerEventDataTickPrivate   ALSATimerEventDataTickPrivate;
 
 struct _ALSATimerEventDataTick {
     ALSATimerEventData parent_instance;
+
+    ALSATimerEventDataTickPrivate *priv;
 };
 
 struct _ALSATimerEventDataTickClass {
index cf4cc77862620b5baa88e5088e2b0c9358d0c566..1a73f559f4dda2ba2b1dc862b24c042b4c54aeee 100644 (file)
@@ -10,7 +10,10 @@ gi.require_version('ALSATimer', '0.0')
 from gi.repository import ALSATimer
 
 target = ALSATimer.EventDataTick()
-props = ()
+props = (
+    'resolution',
+    'ticks',
+)
 methods = ()
 signals = ()