Hi, It looks to me that this behavior can be achieved with "timer_mod_anticipate()" function instead of a separate check.
On Sun, Feb 12, 2017 at 9:04 PM, Pavel Dovgalyuk <dovga...@ispras.ru> wrote: > Ping? > > Pavel Dovgalyuk > > > > -----Original Message----- > > From: Pavel Dovgalyuk [mailto:pavel.dovga...@ispras.ru] > > Sent: Tuesday, January 31, 2017 2:59 PM > > To: qemu-devel@nongnu.org > > Cc: pbonz...@redhat.com; dovga...@ispras.ru; kra...@redhat.com > > Subject: [PATCH] audio: make audio poll timer deterministic > > > > This patch changes resetting strategy of the audio polling timer. > > It does not change expiration time if the timer is already set. > > > > Signed-off-by: Pavel Dovgalyuk <pavel.dovga...@ispras.ru> > > --- > > audio/audio.c | 6 ++++-- > > 1 file changed, 4 insertions(+), 2 deletions(-) > > > > diff --git a/audio/audio.c b/audio/audio.c > > index c845a44..1ee95a5 100644 > > --- a/audio/audio.c > > +++ b/audio/audio.c > > @@ -1112,8 +1112,10 @@ static int audio_is_timer_needed (void) > > static void audio_reset_timer (AudioState *s) > > { > > if (audio_is_timer_needed ()) { > > - timer_mod (s->ts, > > - qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + conf.period.ticks); > > + if (!timer_pending(s->ts)) { > > + timer_mod (s->ts, > > + qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + > conf.period.ticks); > > + } > > } > > else { > > timer_del (s->ts); > > > > -- Thanks, Yurii