ALSA: seq: Process queue tempo/ppq change in a shot
authorTakashi Iwai <tiwai@suse.de>
Mon, 15 Jan 2018 15:48:36 +0000 (16:48 +0100)
committerTakashi Iwai <tiwai@suse.de>
Mon, 15 Jan 2018 15:48:36 +0000 (16:48 +0100)
commit671ec859e5ee06ab0bf968e639a25576b18865ad
tree43385603e1e54f05587ec7f6fe0eb63bba9498a9
parent4ea5553a51e55664f86bed29e62e67ecb45bedd8
ALSA: seq: Process queue tempo/ppq change in a shot

The SNDRV_SEQ_IOCTL_SET_QUEUE_TEMPO ioctl sets the tempo and the ppq
in a single call, while the current implementation updates each value
one by one.  This is a bit racy, and also suboptimal from the
performance POV, as each call does re-acquire the lock and invokes
the update of ALSA timer resolution.

This patch reorganizes the code slightly so that we change both the
tempo and the ppq in a shot.  The skew value can be put into the same
lock, but this is rather a rarely used feature and completely
independent from the temp/ppq (it's evaluated only in the interrupt),
so it's left as it was.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/core/seq/seq_queue.c
sound/core/seq/seq_timer.c
sound/core/seq/seq_timer.h