Lines Matching full:queue
3 * ALSA sequencer Timing queue handling
10 * - Owner of unlocked queue is kept unmodified even if it is
19 * - The queue is locked when struct snd_seq_queue pointer is returned via
49 /* assign queue id and insert to list */
58 q->queue = i; in queue_list_add()
87 /* create new queue (constructor) */
100 q->queue = -1; in queue_new()
120 /* delete queue (destructor) */
153 static void queue_use(struct snd_seq_queue *queue, int client, int use);
155 /* allocate a new queue -
156 * return pointer to new queue or ERR_PTR(-errno) for error
157 * The new queue's use_lock is set to 1. It is the caller's responsibility to
178 /* delete a queue - queue must be owned by the client */
194 /* return pointer to queue structure for specified id */
208 /* return the (first) queue matching with the specified name */
250 /* Process tick queue... */ in snd_seq_check_queue()
261 /* Process time queue... */ in snd_seq_check_queue()
285 /* enqueue a event to singe queue */
292 dest = cell->event.queue; /* destination queue */ in snd_seq_enqueue_event()
313 /* enqueue event in the real-time or midi queue */ in snd_seq_enqueue_event()
342 /* check if the client has permission to modify queue parameters.
343 * if it does, lock the queue
356 /* unlock the queue */
377 * change queue's owner and permission
409 struct snd_seq_queue *queue __free(snd_seq_queue) = in snd_seq_queue_timer_open()
412 if (queue == NULL) in snd_seq_queue_timer_open()
414 tmr = queue->timer; in snd_seq_queue_timer_open()
415 result = snd_seq_timer_open(queue); in snd_seq_queue_timer_open()
418 result = snd_seq_timer_open(queue); in snd_seq_queue_timer_open()
429 struct snd_seq_queue *queue __free(snd_seq_queue) = in snd_seq_queue_timer_close()
432 if (queue == NULL) in snd_seq_queue_timer_close()
434 snd_seq_timer_close(queue); in snd_seq_queue_timer_close()
438 /* change queue tempo and ppq */
459 /* use or unuse this queue */
460 static void queue_use(struct snd_seq_queue *queue, int client, int use) in queue_use() argument
463 if (!test_and_set_bit(client, queue->clients_bitmap)) in queue_use()
464 queue->clients++; in queue_use()
466 if (test_and_clear_bit(client, queue->clients_bitmap)) in queue_use()
467 queue->clients--; in queue_use()
469 if (queue->clients) { in queue_use()
470 if (use && queue->clients == 1) in queue_use()
471 snd_seq_timer_defaults(queue->timer); in queue_use()
472 snd_seq_timer_open(queue); in queue_use()
474 snd_seq_timer_close(queue); in queue_use()
478 /* use or unuse this queue -
484 struct snd_seq_queue *queue __free(snd_seq_queue) = in snd_seq_queue_use()
487 if (queue == NULL) in snd_seq_queue_use()
489 guard(mutex)(&queue->timer_mutex); in snd_seq_queue_use()
490 queue_use(queue, client, use); in snd_seq_queue_use()
495 * check if queue is used by the client
496 * return negative value if the queue is invalid.
505 return -EINVAL; /* invalid queue */ in snd_seq_queue_is_used()
513 * remove cells for no longer exist client (for non-owned queue)
514 * or delete this queue (for owned queue)
520 /* delete own queues from queue list */ in snd_seq_queue_client_leave()
537 snd_seq_queue_use(q->queue, client, 0); in snd_seq_queue_client_leave()
557 q->queue == info->queue)) { in snd_seq_queue_remove_cells()
578 sev.queue = q->queue; in queue_broadcast_event()
579 sev.data.queue.queue = q->queue; in queue_broadcast_event()
589 * process a received queue-control event.
615 snd_seq_timer_set_tempo(q->timer, ev->data.queue.param.value); in snd_seq_queue_process_event()
620 if (snd_seq_timer_set_position_tick(q->timer, ev->data.queue.param.time.tick) == 0) { in snd_seq_queue_process_event()
626 if (snd_seq_timer_set_position_time(q->timer, ev->data.queue.param.time.time) == 0) { in snd_seq_queue_process_event()
632 ev->data.queue.param.skew.value, in snd_seq_queue_process_event()
633 ev->data.queue.param.skew.base) == 0) { in snd_seq_queue_process_event()
642 * Queue control via timer control port:
651 queueptr(ev->data.queue.queue); in snd_seq_control_queue()
694 snd_iprintf(buffer, "queue %d: [%s]\n", q->queue, q->name); in snd_seq_info_queues_read()