Lines Matching refs:event

82 			      struct snd_seq_event *event,
85 struct snd_seq_event *event,
438 if (snd_seq_ev_is_variable(&cell->event)) { in snd_seq_read()
440 tmpev = cell->event; in snd_seq_read()
448 err = snd_seq_expand_var_event(&cell->event, count, in snd_seq_read()
457 if (copy_to_user(buf, &cell->event, sizeof(struct snd_seq_event))) { in snd_seq_read()
495 static struct snd_seq_client *get_event_dest_client(struct snd_seq_event *event, in get_event_dest_client() argument
500 dest = snd_seq_client_use_ptr(event->dest.client); in get_event_dest_client()
506 ! test_bit(event->type, dest->event_filter)) in get_event_dest_client()
530 struct snd_seq_event *event, in bounce_error_event() argument
549 bounce_ev.dest.port = event->source.port; in bounce_error_event()
550 bounce_ev.data.quote.origin = event->dest; in bounce_error_event()
551 bounce_ev.data.quote.event = event; in bounce_error_event()
568 static int update_timestamp_of_queue(struct snd_seq_event *event, in update_timestamp_of_queue() argument
576 event->queue = queue; in update_timestamp_of_queue()
577 event->flags &= ~SNDRV_SEQ_TIME_STAMP_MASK; in update_timestamp_of_queue()
579 event->time.time = snd_seq_timer_get_cur_time(q->timer); in update_timestamp_of_queue()
580 event->flags |= SNDRV_SEQ_TIME_STAMP_REAL; in update_timestamp_of_queue()
582 event->time.tick = snd_seq_timer_get_cur_tick(q->timer); in update_timestamp_of_queue()
583 event->flags |= SNDRV_SEQ_TIME_STAMP_TICK; in update_timestamp_of_queue()
598 struct snd_seq_event *event, in snd_seq_deliver_single_event() argument
606 direct = snd_seq_ev_is_direct(event); in snd_seq_deliver_single_event()
608 dest = get_event_dest_client(event, filter); in snd_seq_deliver_single_event()
611 dest_port = snd_seq_port_use_ptr(dest, event->dest.port); in snd_seq_deliver_single_event()
622 update_timestamp_of_queue(event, dest_port->time_queue, in snd_seq_deliver_single_event()
628 result = snd_seq_fifo_event_in(dest->data.user.fifo, event); in snd_seq_deliver_single_event()
634 result = dest_port->event_input(event, direct, in snd_seq_deliver_single_event()
649 result = bounce_error_event(client, event, result, atomic, hop); in snd_seq_deliver_single_event()
659 struct snd_seq_event *event, in deliver_to_subscribers() argument
668 src_port = snd_seq_port_use_ptr(client, event->source.port); in deliver_to_subscribers()
672 event_saved = *event; in deliver_to_subscribers()
684 event->dest = subs->info.dest; in deliver_to_subscribers()
687 update_timestamp_of_queue(event, subs->info.queue, in deliver_to_subscribers()
689 err = snd_seq_deliver_single_event(client, event, in deliver_to_subscribers()
699 *event = event_saved; in deliver_to_subscribers()
705 *event = event_saved; /* restore */ in deliver_to_subscribers()
716 struct snd_seq_event *event, in port_broadcast_event() argument
723 dest_client = get_event_dest_client(event, SNDRV_SEQ_FILTER_BROADCAST); in port_broadcast_event()
729 event->dest.port = port->addr.port; in port_broadcast_event()
731 err = snd_seq_deliver_single_event(NULL, event, in port_broadcast_event()
744 event->dest.port = SNDRV_SEQ_ADDRESS_BROADCAST; /* restore */ in port_broadcast_event()
753 struct snd_seq_event *event, int atomic, int hop) in broadcast_event() argument
759 addr = event->dest; /* save */ in broadcast_event()
765 event->dest.client = dest; in broadcast_event()
766 event->dest.port = addr.port; in broadcast_event()
768 err = port_broadcast_event(client, event, atomic, hop); in broadcast_event()
771 err = snd_seq_deliver_single_event(NULL, event, in broadcast_event()
782 event->dest = addr; /* restore */ in broadcast_event()
788 static int multicast_event(struct snd_seq_client *client, struct snd_seq_event *event, in multicast_event() argument
805 static int snd_seq_deliver_event(struct snd_seq_client *client, struct snd_seq_event *event, in snd_seq_deliver_event() argument
813 event->source.client, event->source.port, in snd_seq_deliver_event()
814 event->dest.client, event->dest.port); in snd_seq_deliver_event()
818 if (event->queue == SNDRV_SEQ_ADDRESS_SUBSCRIBERS || in snd_seq_deliver_event()
819 event->dest.client == SNDRV_SEQ_ADDRESS_SUBSCRIBERS) in snd_seq_deliver_event()
820 result = deliver_to_subscribers(client, event, atomic, hop); in snd_seq_deliver_event()
822 else if (event->queue == SNDRV_SEQ_ADDRESS_BROADCAST || in snd_seq_deliver_event()
823 event->dest.client == SNDRV_SEQ_ADDRESS_BROADCAST) in snd_seq_deliver_event()
824 result = broadcast_event(client, event, atomic, hop); in snd_seq_deliver_event()
825 else if (event->dest.client >= SNDRV_SEQ_MAX_CLIENTS) in snd_seq_deliver_event()
826 result = multicast_event(client, event, atomic, hop); in snd_seq_deliver_event()
827 else if (event->dest.port == SNDRV_SEQ_ADDRESS_BROADCAST) in snd_seq_deliver_event()
828 result = port_broadcast_event(client, event, atomic, hop); in snd_seq_deliver_event()
831 result = snd_seq_deliver_single_event(client, event, 0, atomic, hop); in snd_seq_deliver_event()
854 client = snd_seq_client_use_ptr(cell->event.source.client); in snd_seq_dispatch_event()
860 if (cell->event.type == SNDRV_SEQ_EVENT_NOTE) { in snd_seq_dispatch_event()
868 tmpev = cell->event; in snd_seq_dispatch_event()
877 ev = &cell->event; in snd_seq_dispatch_event()
905 result = snd_seq_deliver_event(client, &cell->event, atomic, hop); in snd_seq_dispatch_event()
919 struct snd_seq_event *event, in snd_seq_client_enqueue_event() argument
927 if (event->queue == SNDRV_SEQ_ADDRESS_SUBSCRIBERS) { in snd_seq_client_enqueue_event()
928 event->dest.client = SNDRV_SEQ_ADDRESS_SUBSCRIBERS; in snd_seq_client_enqueue_event()
929 event->queue = SNDRV_SEQ_QUEUE_DIRECT; in snd_seq_client_enqueue_event()
932 if (event->queue == SNDRV_SEQ_ADDRESS_BROADCAST) { in snd_seq_client_enqueue_event()
933 event->dest.client = SNDRV_SEQ_ADDRESS_BROADCAST; in snd_seq_client_enqueue_event()
934 event->queue = SNDRV_SEQ_QUEUE_DIRECT; in snd_seq_client_enqueue_event()
937 if (event->dest.client == SNDRV_SEQ_ADDRESS_SUBSCRIBERS) { in snd_seq_client_enqueue_event()
939 struct snd_seq_client_port *src_port = snd_seq_port_use_ptr(client, event->source.port); in snd_seq_client_enqueue_event()
946 if (snd_seq_ev_is_direct(event)) { in snd_seq_client_enqueue_event()
947 if (event->type == SNDRV_SEQ_EVENT_NOTE) in snd_seq_client_enqueue_event()
949 return snd_seq_deliver_event(client, event, atomic, hop); in snd_seq_client_enqueue_event()
953 if (snd_seq_queue_is_used(event->queue, client->number) <= 0) in snd_seq_client_enqueue_event()
959 err = snd_seq_event_dup(client->pool, event, &cell, !blocking || atomic, file); in snd_seq_client_enqueue_event()
1015 struct snd_seq_event event; in snd_seq_write() local
1036 len = sizeof(event); in snd_seq_write()
1037 if (copy_from_user(&event, buf, len)) { in snd_seq_write()
1041 event.source.client = client->number; /* fill in client number */ in snd_seq_write()
1043 if (check_event_type_and_length(&event)) { in snd_seq_write()
1049 if (event.type == SNDRV_SEQ_EVENT_NONE) in snd_seq_write()
1051 else if (snd_seq_ev_is_reserved(&event)) { in snd_seq_write()
1056 if (snd_seq_ev_is_variable(&event)) { in snd_seq_write()
1057 int extlen = event.data.ext.len & ~SNDRV_SEQ_EXT_MASK; in snd_seq_write()
1064 event.data.ext.len = extlen | SNDRV_SEQ_EXT_USRPTR; in snd_seq_write()
1065 event.data.ext.ptr = (char __force *)buf in snd_seq_write()
1070 if (client->convert32 && snd_seq_ev_is_varusr(&event)) { in snd_seq_write()
1071 void *ptr = (void __force *)compat_ptr(event.data.raw32.d[1]); in snd_seq_write()
1072 event.data.ext.ptr = ptr; in snd_seq_write()
1078 err = snd_seq_client_enqueue_event(client, &event, file, in snd_seq_write()
1428 struct snd_seq_event event; in snd_seq_client_notify_subscription() local
1430 memset(&event, 0, sizeof(event)); in snd_seq_client_notify_subscription()
1431 event.type = evtype; in snd_seq_client_notify_subscription()
1432 event.data.connect.dest = info->dest; in snd_seq_client_notify_subscription()
1433 event.data.connect.sender = info->sender; in snd_seq_client_notify_subscription()
1435 return snd_seq_system_notify(client, port, &event); /* non-atomic */ in snd_seq_client_notify_subscription()