From a910e3be0c8599e91c15281fe3f43994af4e55ae Mon Sep 17 00:00:00 2001 From: Takashi Sakamoto Date: Sun, 9 Feb 2020 12:20:53 +0900 Subject: [PATCH] timer: event_tick: add properties Signed-off-by: Takashi Sakamoto --- src/timer/event-data-tick.c | 51 +++++++++++++++++++++++++++++++-- src/timer/event-data-tick.h | 3 ++ tests/alsatimer-event-data-tick | 5 +++- 3 files changed, 56 insertions(+), 3 deletions(-) diff --git a/src/timer/event-data-tick.c b/src/timer/event-data-tick.c index 9a90538..f5ba1e9 100644 --- a/src/timer/event-data-tick.c +++ b/src/timer/event-data-tick.c @@ -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; } - diff --git a/src/timer/event-data-tick.h b/src/timer/event-data-tick.h index 887d016..4ff4a5f 100644 --- a/src/timer/event-data-tick.h +++ b/src/timer/event-data-tick.h @@ -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 { diff --git a/tests/alsatimer-event-data-tick b/tests/alsatimer-event-data-tick index cf4cc77..1a73f55 100644 --- a/tests/alsatimer-event-data-tick +++ b/tests/alsatimer-event-data-tick @@ -10,7 +10,10 @@ gi.require_version('ALSATimer', '0.0') from gi.repository import ALSATimer target = ALSATimer.EventDataTick() -props = () +props = ( + 'resolution', + 'ticks', +) methods = () signals = () -- 2.47.3