From: Takashi Sakamoto Date: Wed, 1 Apr 2020 09:13:28 +0000 (+0900) Subject: seq: tstamp: add accessor methods X-Git-Tag: v0.1.0~284 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=55d19e6bdfdfe67ebf0246a697d7358c920af54c;p=alsa-gobject.git seq: tstamp: add accessor methods Signed-off-by: Takashi Sakamoto --- diff --git a/src/seq/alsaseq.map b/src/seq/alsaseq.map index b10a425..80fd9d8 100644 --- a/src/seq/alsaseq.map +++ b/src/seq/alsaseq.map @@ -54,6 +54,10 @@ ALSA_GOBJECT_0_0_0 { "alsaseq_client_pool_get_type"; "alsaseq_tstamp_get_type"; + "alsaseq_tstamp_get_tick_time"; + "alsaseq_tstamp_set_tick_time"; + "alsaseq_tstamp_get_real_time"; + "alsaseq_tstamp_set_real_time"; local: *; }; diff --git a/src/seq/tstamp.c b/src/seq/tstamp.c index bf0d1f6..5c9077c 100644 --- a/src/seq/tstamp.c +++ b/src/seq/tstamp.c @@ -7,3 +7,58 @@ ALSASeqTstamp *seq_tstamp_copy(const ALSASeqTstamp *self) } G_DEFINE_BOXED_TYPE(ALSASeqTstamp, alsaseq_tstamp, seq_tstamp_copy, g_free) + +/** + * alsaseq_tstamp_get_tick_time: + * @self: A #ALSASeqTstamp. + * @tick_time: (out): The number of MIDI ticks. + * + * Get time as MIDI ticks. + */ +void alsaseq_tstamp_get_tick_time(ALSASeqTstamp *self, guint32 *tick_time) +{ + *tick_time = self->tick; +} + +/** + * alsaseq_tstamp_set_tick_time: + * @self: A #ALSASeqTstamp. + * @tick_time: The number of MIDI ticks. + * + * Set time as MIDI ticks. + */ +void alsaseq_tstamp_set_tick_time(ALSASeqTstamp *self, const guint32 tick_time) +{ + self->tick = tick_time; +} + +/** + * alsaseq_tstamp_get_real_time: + * @self: A #ALSASeqTstamp. + * + * Refer to the time as wall-clock time. + * + * Returns: (array fixed-size=2)(transfer none): The array with two elements + * for sec part and nsec part of real time. + */ +const guint32 *alsaseq_tstamp_get_real_time(ALSASeqTstamp *self) +{ + // MEMO: I wish 32-bit storage size is aligned to 32 bit offset in all of + // supported ABIs. + return (guint32 *)&self->time; +} + + +/** + * alsaseq_tstamp_set_real_time: + * @self: A #ALSASeqTstamp. + * @tstamp: (array fixed-size=2)(transfer none): The array with two elements for + * sec part and nsec part of real time. + * + * Copy the time as wall-clock time. + */ +void alsaseq_tstamp_set_real_time(ALSASeqTstamp *self, const guint32 tstamp[2]) +{ + self->time.tv_sec = tstamp[0]; + self->time.tv_nsec = tstamp[1]; +} diff --git a/src/seq/tstamp.h b/src/seq/tstamp.h index 191ffd7..30e10e4 100644 --- a/src/seq/tstamp.h +++ b/src/seq/tstamp.h @@ -15,6 +15,12 @@ typedef union snd_seq_timestamp ALSASeqTstamp; GType alsaseq_tstamp_get_type() G_GNUC_CONST; +void alsaseq_tstamp_get_tick_time(ALSASeqTstamp *self, guint32 *tick_time); +void alsaseq_tstamp_set_tick_time(ALSASeqTstamp *self, const guint32 tick_time); + +const guint32 *alsaseq_tstamp_get_real_time(ALSASeqTstamp *self); +void alsaseq_tstamp_set_real_time(ALSASeqTstamp *self, const guint32 tstamp[2]); + G_END_DECLS #endif