Lines Matching refs:loop
57 struct wl_event_loop *loop; member
120 add_source(struct wl_event_loop *loop, in add_source() argument
130 source->loop = loop; in add_source()
141 if (epoll_ctl(loop->epoll_fd, EPOLL_CTL_ADD, source->fd, &ep) < 0) { in add_source()
175 wl_event_loop_add_fd(struct wl_event_loop *loop, in wl_event_loop_add_fd() argument
191 return add_source(loop, &source->base, mask, data); in wl_event_loop_add_fd()
217 struct wl_event_loop *loop = source->loop; in wl_event_source_fd_update() local
227 return epoll_ctl(loop->epoll_fd, EPOLL_CTL_MOD, source->fd, &ep); in wl_event_source_fd_update()
282 wl_timer_heap_init(struct wl_timer_heap *timers, struct wl_event_loop *loop) in wl_timer_heap_init() argument
288 timers->base.loop = loop; in wl_timer_heap_init()
290 loop->timers.data = NULL; in wl_timer_heap_init()
291 loop->timers.active = 0; in wl_timer_heap_init()
292 loop->timers.space = 0; in wl_timer_heap_init()
293 loop->timers.count = 0; in wl_timer_heap_init()
323 if (epoll_ctl(timers->base.loop->epoll_fd, in wl_timer_heap_ensure_timerfd()
562 wl_event_loop_add_timer(struct wl_event_loop *loop, in wl_event_loop_add_timer() argument
568 if (wl_timer_heap_ensure_timerfd(&loop->timers) < 0) in wl_event_loop_add_timer()
578 source->base.loop = loop; in wl_event_loop_add_timer()
586 if (wl_timer_heap_reserve(&loop->timers) < 0) { in wl_event_loop_add_timer()
615 struct wl_timer_heap *timers = &tsource->base.loop->timers; in wl_event_source_timer_update()
713 wl_event_loop_add_signal(struct wl_event_loop *loop, in wl_event_loop_add_signal() argument
735 return add_source(loop, &source->base, WL_EVENT_READABLE, data); in wl_event_loop_add_signal()
772 wl_event_loop_add_idle(struct wl_event_loop *loop, in wl_event_loop_add_idle() argument
783 source->base.loop = loop; in wl_event_loop_add_idle()
789 wl_list_insert(loop->idle_list.prev, &source->base.link); in wl_event_loop_add_idle()
813 wl_list_insert(source->loop->check_list.prev, &source->link); in wl_event_source_check()
831 struct wl_event_loop *loop = source->loop; in wl_event_source_remove() local
836 epoll_ctl(loop->epoll_fd, EPOLL_CTL_DEL, source->fd, NULL); in wl_event_source_remove()
846 wl_timer_heap_unreserve(&loop->timers); in wl_event_source_remove()
853 wl_list_insert(&loop->destroy_list, &source->link); in wl_event_source_remove()
859 wl_event_loop_process_destroy_list(struct wl_event_loop *loop) in wl_event_loop_process_destroy_list() argument
863 wl_list_for_each_safe(source, next, &loop->destroy_list, link) in wl_event_loop_process_destroy_list()
866 wl_list_init(&loop->destroy_list); in wl_event_loop_process_destroy_list()
886 struct wl_event_loop *loop; in wl_event_loop_create() local
888 loop = malloc(sizeof *loop); in wl_event_loop_create()
889 if (loop == NULL) in wl_event_loop_create()
892 loop->epoll_fd = wl_os_epoll_create_cloexec(); in wl_event_loop_create()
893 if (loop->epoll_fd < 0) { in wl_event_loop_create()
894 free(loop); in wl_event_loop_create()
897 wl_list_init(&loop->check_list); in wl_event_loop_create()
898 wl_list_init(&loop->idle_list); in wl_event_loop_create()
899 wl_list_init(&loop->destroy_list); in wl_event_loop_create()
901 wl_signal_init(&loop->destroy_signal); in wl_event_loop_create()
903 wl_timer_heap_init(&loop->timers, loop); in wl_event_loop_create()
905 return loop; in wl_event_loop_create()
922 wl_event_loop_destroy(struct wl_event_loop *loop) in wl_event_loop_destroy() argument
924 wl_signal_emit(&loop->destroy_signal, loop); in wl_event_loop_destroy()
926 wl_event_loop_process_destroy_list(loop); in wl_event_loop_destroy()
927 wl_timer_heap_release(&loop->timers); in wl_event_loop_destroy()
928 close(loop->epoll_fd); in wl_event_loop_destroy()
929 free(loop); in wl_event_loop_destroy()
933 post_dispatch_check(struct wl_event_loop *loop) in post_dispatch_check() argument
940 wl_list_for_each_safe(source, next, &loop->check_list, link) { in post_dispatch_check()
962 wl_event_loop_dispatch_idle(struct wl_event_loop *loop) in wl_event_loop_dispatch_idle() argument
966 while (!wl_list_empty(&loop->idle_list)) { in wl_event_loop_dispatch_idle()
967 source = wl_container_of(loop->idle_list.next, in wl_event_loop_dispatch_idle()
995 wl_event_loop_dispatch(struct wl_event_loop *loop, int timeout) in wl_event_loop_dispatch() argument
1002 wl_event_loop_dispatch_idle(loop); in wl_event_loop_dispatch()
1004 count = epoll_wait(loop->epoll_fd, ep, ARRAY_LENGTH(ep), timeout); in wl_event_loop_dispatch()
1010 if (source == &loop->timers.base) in wl_event_loop_dispatch()
1020 if (wl_timer_heap_dispatch(&loop->timers) < 0) in wl_event_loop_dispatch()
1030 wl_event_loop_process_destroy_list(loop); in wl_event_loop_dispatch()
1032 wl_event_loop_dispatch_idle(loop); in wl_event_loop_dispatch()
1034 while (post_dispatch_check(loop)); in wl_event_loop_dispatch()
1056 wl_event_loop_get_fd(struct wl_event_loop *loop) in wl_event_loop_get_fd() argument
1058 return loop->epoll_fd; in wl_event_loop_get_fd()
1070 wl_event_loop_add_destroy_listener(struct wl_event_loop *loop, in wl_event_loop_add_destroy_listener() argument
1073 wl_signal_add(&loop->destroy_signal, listener); in wl_event_loop_add_destroy_listener()
1086 wl_event_loop_get_destroy_listener(struct wl_event_loop *loop, in wl_event_loop_get_destroy_listener() argument
1089 return wl_signal_get(&loop->destroy_signal, notify); in wl_event_loop_get_destroy_listener()