Commit a32f6674 authored by Clemens Ladisch's avatar Clemens Ladisch Committed by Jaroslav Kysela

sound: seq_timer: simplify snd_seq_timer_set_tick_resolution() parameters

As snd_seq_timer_set_tick_resolution() is always called with the same
three fields of struct snd_seq_timer, it suffices to give that as the
only parameter.
Signed-off-by: default avatarClemens Ladisch <clemens@ladisch.de>
Signed-off-by: default avatarJaroslav Kysela <perex@perex.cz>
parent ed69c6a8
...@@ -33,22 +33,21 @@ ...@@ -33,22 +33,21 @@
#define SKEW_BASE 0x10000 /* 16bit shift */ #define SKEW_BASE 0x10000 /* 16bit shift */
static void snd_seq_timer_set_tick_resolution(struct snd_seq_timer_tick *tick, static void snd_seq_timer_set_tick_resolution(struct snd_seq_timer *tmr)
int tempo, int ppq)
{ {
if (tempo < 1000000) if (tmr->tempo < 1000000)
tick->resolution = (tempo * 1000) / ppq; tmr->tick.resolution = (tmr->tempo * 1000) / tmr->ppq;
else { else {
/* might overflow.. */ /* might overflow.. */
unsigned int s; unsigned int s;
s = tempo % ppq; s = tmr->tempo % tmr->ppq;
s = (s * 1000) / ppq; s = (s * 1000) / tmr->ppq;
tick->resolution = (tempo / ppq) * 1000; tmr->tick.resolution = (tmr->tempo / tmr->ppq) * 1000;
tick->resolution += s; tmr->tick.resolution += s;
} }
if (tick->resolution <= 0) if (tmr->tick.resolution <= 0)
tick->resolution = 1; tmr->tick.resolution = 1;
snd_seq_timer_update_tick(tick, 0); snd_seq_timer_update_tick(&tmr->tick, 0);
} }
/* create new timer (constructor) */ /* create new timer (constructor) */
...@@ -96,7 +95,7 @@ void snd_seq_timer_defaults(struct snd_seq_timer * tmr) ...@@ -96,7 +95,7 @@ void snd_seq_timer_defaults(struct snd_seq_timer * tmr)
/* setup defaults */ /* setup defaults */
tmr->ppq = 96; /* 96 PPQ */ tmr->ppq = 96; /* 96 PPQ */
tmr->tempo = 500000; /* 120 BPM */ tmr->tempo = 500000; /* 120 BPM */
snd_seq_timer_set_tick_resolution(&tmr->tick, tmr->tempo, tmr->ppq); snd_seq_timer_set_tick_resolution(tmr);
tmr->running = 0; tmr->running = 0;
tmr->type = SNDRV_SEQ_TIMER_ALSA; tmr->type = SNDRV_SEQ_TIMER_ALSA;
...@@ -180,7 +179,7 @@ int snd_seq_timer_set_tempo(struct snd_seq_timer * tmr, int tempo) ...@@ -180,7 +179,7 @@ int snd_seq_timer_set_tempo(struct snd_seq_timer * tmr, int tempo)
spin_lock_irqsave(&tmr->lock, flags); spin_lock_irqsave(&tmr->lock, flags);
if ((unsigned int)tempo != tmr->tempo) { if ((unsigned int)tempo != tmr->tempo) {
tmr->tempo = tempo; tmr->tempo = tempo;
snd_seq_timer_set_tick_resolution(&tmr->tick, tmr->tempo, tmr->ppq); snd_seq_timer_set_tick_resolution(tmr);
} }
spin_unlock_irqrestore(&tmr->lock, flags); spin_unlock_irqrestore(&tmr->lock, flags);
return 0; return 0;
...@@ -205,7 +204,7 @@ int snd_seq_timer_set_ppq(struct snd_seq_timer * tmr, int ppq) ...@@ -205,7 +204,7 @@ int snd_seq_timer_set_ppq(struct snd_seq_timer * tmr, int ppq)
} }
tmr->ppq = ppq; tmr->ppq = ppq;
snd_seq_timer_set_tick_resolution(&tmr->tick, tmr->tempo, tmr->ppq); snd_seq_timer_set_tick_resolution(tmr);
spin_unlock_irqrestore(&tmr->lock, flags); spin_unlock_irqrestore(&tmr->lock, flags);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment