2020-06-20 04:24:16

by Tedd Ho-Jeong An

[permalink] [raw]
Subject: [PATCH V2 2/2] midi: Fix random empty timestamp_high value

From: Tedd Ho-Jeong An <[email protected]>

The timestamp_high value is assigned from the monotonic time but there
is a chance that the value becomes zero because it reads the value
between bit8 and bit13.

This patch makes sure the timestamp_high value get a non-zero value.
---
profiles/midi/libmidi.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/profiles/midi/libmidi.c b/profiles/midi/libmidi.c
index 7d57e7335..cb2787db1 100644
--- a/profiles/midi/libmidi.c
+++ b/profiles/midi/libmidi.c
@@ -77,8 +77,13 @@ inline static void append_timestamp_high_maybe(struct midi_write_parser *parser)
if (midi_write_has_data(parser))
return;

- parser->rtime = g_get_monotonic_time() / 1000; /* convert µs to ms */
- timestamp_high |= (parser->rtime & 0x1F80) >> 7;
+ /* Make sure timesampt_high is assigned a non-zero value */
+ do {
+ /* convert µs to ms */
+ parser->rtime = g_get_monotonic_time() / 1000;
+ timestamp_high |= (parser->rtime & 0x1F80) >> 7;
+ } while (timestamp_high == 0x80);
+
/* set timestampHigh */
buffer_append_byte(&parser->midi_stream, timestamp_high);
}
--
2.25.4