diff options
Diffstat (limited to 'sound/core/seq/seq_queue.c')
-rw-r--r-- | sound/core/seq/seq_queue.c | 28 |
1 files changed, 9 insertions, 19 deletions
diff --git a/sound/core/seq/seq_queue.c b/sound/core/seq/seq_queue.c index 0428e9061b47..b377f5048352 100644 --- a/sound/core/seq/seq_queue.c +++ b/sound/core/seq/seq_queue.c | |||
@@ -277,30 +277,20 @@ void snd_seq_check_queue(struct snd_seq_queue *q, int atomic, int hop) | |||
277 | 277 | ||
278 | __again: | 278 | __again: |
279 | /* Process tick queue... */ | 279 | /* Process tick queue... */ |
280 | while ((cell = snd_seq_prioq_cell_peek(q->tickq)) != NULL) { | 280 | for (;;) { |
281 | if (snd_seq_compare_tick_time(&q->timer->tick.cur_tick, | 281 | cell = snd_seq_prioq_cell_out(q->tickq, |
282 | &cell->event.time.tick)) { | 282 | &q->timer->tick.cur_tick); |
283 | cell = snd_seq_prioq_cell_out(q->tickq); | 283 | if (!cell) |
284 | if (cell) | ||
285 | snd_seq_dispatch_event(cell, atomic, hop); | ||
286 | } else { | ||
287 | /* event remains in the queue */ | ||
288 | break; | 284 | break; |
289 | } | 285 | snd_seq_dispatch_event(cell, atomic, hop); |
290 | } | 286 | } |
291 | 287 | ||
292 | |||
293 | /* Process time queue... */ | 288 | /* Process time queue... */ |
294 | while ((cell = snd_seq_prioq_cell_peek(q->timeq)) != NULL) { | 289 | for (;;) { |
295 | if (snd_seq_compare_real_time(&q->timer->cur_time, | 290 | cell = snd_seq_prioq_cell_out(q->timeq, &q->timer->cur_time); |
296 | &cell->event.time.time)) { | 291 | if (!cell) |
297 | cell = snd_seq_prioq_cell_out(q->timeq); | ||
298 | if (cell) | ||
299 | snd_seq_dispatch_event(cell, atomic, hop); | ||
300 | } else { | ||
301 | /* event remains in the queue */ | ||
302 | break; | 292 | break; |
303 | } | 293 | snd_seq_dispatch_event(cell, atomic, hop); |
304 | } | 294 | } |
305 | 295 | ||
306 | /* free lock */ | 296 | /* free lock */ |