Lines Matching refs:client
126 struct wl_client *client; member
146 struct wl_display *display = resource->client->display; in log_closure()
186 if (res && res->client != resource->client) { in verify_objects()
207 if (resource->client->error) in handle_array()
211 resource->client->error = 1; in handle_array()
219 resource->client->error = 1; in handle_array()
225 if (send_func(closure, resource->client->connection)) in handle_array()
226 resource->client->error = 1; in handle_array()
280 struct wl_client *client = resource->client; in wl_resource_post_error_vargs() local
292 if (client->error || !client->display_resource) in wl_resource_post_error_vargs()
295 wl_resource_post_event(client->display_resource, in wl_resource_post_error_vargs()
297 client->error = 1; in wl_resource_post_error_vargs()
313 destroy_client_with_error(struct wl_client *client, const char *reason) in destroy_client_with_error() argument
315 wl_log("%s (pid %u)\n", reason, client->ucred.pid); in destroy_client_with_error()
316 wl_client_destroy(client); in destroy_client_with_error()
322 struct wl_client *client = data; in wl_client_connection_data() local
323 struct wl_connection *connection = client->connection; in wl_client_connection_data()
334 wl_client_destroy(client); in wl_client_connection_data()
339 destroy_client_with_error(client, "socket error"); in wl_client_connection_data()
347 client, "failed to flush client connection"); in wl_client_connection_data()
350 wl_event_source_fd_update(client->source, in wl_client_connection_data()
360 client, "failed to read client connection"); in wl_client_connection_data()
372 resource = wl_map_lookup(&client->objects, p[0]); in wl_client_connection_data()
373 resource_flags = wl_map_lookup_flags(&client->objects, p[0]); in wl_client_connection_data()
375 wl_resource_post_error(client->display_resource, in wl_client_connection_data()
383 wl_resource_post_error(client->display_resource, in wl_client_connection_data()
396 wl_resource_post_error(client->display_resource, in wl_client_connection_data()
407 closure = wl_connection_demarshal(client->connection, size, in wl_client_connection_data()
408 &client->objects, message); in wl_client_connection_data()
414 wl_closure_lookup_objects(closure, &client->objects) < 0) { in wl_client_connection_data()
415 wl_resource_post_error(client->display_resource, in wl_client_connection_data()
430 object, opcode, client); in wl_client_connection_data()
438 if (client->error) in wl_client_connection_data()
444 if (client->error) { in wl_client_connection_data()
445 destroy_client_with_error(client, in wl_client_connection_data()
464 wl_client_flush(struct wl_client *client) in wl_client_flush() argument
466 wl_connection_flush(client->connection); in wl_client_flush()
477 wl_client_get_display(struct wl_client *client) in wl_client_get_display() argument
479 return client->display; in wl_client_get_display()
483 bind_display(struct wl_client *client, struct wl_display *display);
513 struct wl_client *client; in wl_client_create() local
516 client = zalloc(sizeof *client); in wl_client_create()
517 if (client == NULL) in wl_client_create()
520 wl_priv_signal_init(&client->resource_created_signal); in wl_client_create()
521 client->display = display; in wl_client_create()
522 client->source = wl_event_loop_add_fd(display->loop, fd, in wl_client_create()
524 wl_client_connection_data, client); in wl_client_create()
526 if (!client->source) in wl_client_create()
529 len = sizeof client->ucred; in wl_client_create()
531 &client->ucred, &len) < 0) in wl_client_create()
534 client->connection = wl_connection_create(fd); in wl_client_create()
535 if (client->connection == NULL) in wl_client_create()
538 wl_map_init(&client->objects, WL_MAP_SERVER_SIDE); in wl_client_create()
540 if (wl_map_insert_at(&client->objects, 0, 0, NULL) < 0) in wl_client_create()
543 wl_priv_signal_init(&client->destroy_signal); in wl_client_create()
544 if (bind_display(client, display) < 0) in wl_client_create()
547 wl_list_insert(display->client_list.prev, &client->link); in wl_client_create()
549 wl_priv_signal_emit(&display->create_client_signal, client); in wl_client_create()
551 return client; in wl_client_create()
554 wl_map_release(&client->objects); in wl_client_create()
555 wl_connection_destroy(client->connection); in wl_client_create()
557 wl_event_source_remove(client->source); in wl_client_create()
559 free(client); in wl_client_create()
583 wl_client_get_credentials(struct wl_client *client, in wl_client_get_credentials() argument
587 *pid = client->ucred.pid; in wl_client_get_credentials()
589 *uid = client->ucred.uid; in wl_client_get_credentials()
591 *gid = client->ucred.gid; in wl_client_get_credentials()
624 wl_client_get_fd(struct wl_client *client) in wl_client_get_fd() argument
626 return wl_connection_get_fd(client->connection); in wl_client_get_fd()
641 wl_client_get_object(struct wl_client *client, uint32_t id) in wl_client_get_object() argument
643 return wl_map_lookup(&client->objects, id); in wl_client_get_object()
647 wl_client_post_no_memory(struct wl_client *client) in wl_client_post_no_memory() argument
649 wl_resource_post_error(client->display_resource, in wl_client_post_no_memory()
665 wl_client_post_implementation_error(struct wl_client *client, in wl_client_post_implementation_error() argument
671 wl_resource_post_error_vargs(client->display_resource, in wl_client_post_implementation_error()
680 wl_resource_post_error(resource->client->display_resource, in wl_resource_post_no_memory()
699 struct wl_map *map = &resource->client->objects; in resource_is_deprecated()
732 struct wl_client *client = resource->client; in wl_resource_destroy() local
737 flags = wl_map_lookup_flags(&client->objects, id); in wl_resource_destroy()
741 if (client->display_resource) { in wl_resource_destroy()
742 wl_resource_queue_event(client->display_resource, in wl_resource_destroy()
745 wl_map_insert_at(&client->objects, 0, id, NULL); in wl_resource_destroy()
747 wl_map_remove(&client->objects, id); in wl_resource_destroy()
772 wl_resource_find_for_client(struct wl_list *list, struct wl_client *client) in wl_resource_find_for_client() argument
776 if (client == NULL) in wl_resource_find_for_client()
780 if (resource->client == client) in wl_resource_find_for_client()
790 return resource->client; in wl_resource_get_client()
859 wl_client_add_destroy_listener(struct wl_client *client, in wl_client_add_destroy_listener() argument
862 wl_priv_signal_add(&client->destroy_signal, listener); in wl_client_add_destroy_listener()
866 wl_client_get_destroy_listener(struct wl_client *client, in wl_client_get_destroy_listener() argument
869 return wl_priv_signal_get(&client->destroy_signal, notify); in wl_client_get_destroy_listener()
873 wl_client_destroy(struct wl_client *client) in wl_client_destroy() argument
877 wl_priv_signal_final_emit(&client->destroy_signal, client); in wl_client_destroy()
879 wl_client_flush(client); in wl_client_destroy()
880 wl_map_for_each(&client->objects, destroy_resource, &serial); in wl_client_destroy()
881 wl_map_release(&client->objects); in wl_client_destroy()
882 wl_event_source_remove(client->source); in wl_client_destroy()
883 close(wl_connection_destroy(client->connection)); in wl_client_destroy()
884 wl_list_remove(&client->link); in wl_client_destroy()
885 wl_list_remove(&client->resource_created_signal.listener_list); in wl_client_destroy()
886 free(client); in wl_client_destroy()
895 wl_global_is_visible(const struct wl_client *client, in wl_global_is_visible() argument
898 struct wl_display *display = client->display; in wl_global_is_visible()
901 display->global_filter(client, global, display->global_filter_data)); in wl_global_is_visible()
905 registry_bind(struct wl_client *client, in registry_bind() argument
930 else if (!wl_global_is_visible(client, global)) in registry_bind()
935 global->bind(client, global->data, version, id); in registry_bind()
943 display_sync(struct wl_client *client, in display_sync() argument
949 callback = wl_resource_create(client, &wl_callback_interface, 1, id); in display_sync()
951 wl_client_post_no_memory(client); in display_sync()
955 serial = wl_display_get_serial(client->display); in display_sync()
967 display_get_registry(struct wl_client *client, in display_get_registry() argument
975 wl_resource_create(client, &wl_registry_interface, 1, id); in display_get_registry()
977 wl_client_post_no_memory(client); in display_get_registry()
989 if (wl_global_is_visible(client, global)) in display_get_registry()
1005 resource->client->display_resource = NULL; in destroy_client_display_resource()
1009 bind_display(struct wl_client *client, struct wl_display *display) in bind_display() argument
1011 client->display_resource = in bind_display()
1012 wl_resource_create(client, &wl_display_interface, 1, 1); in bind_display()
1013 if (client->display_resource == NULL) { in bind_display()
1019 wl_resource_set_implementation(client->display_resource, in bind_display()
1300 struct wl_client *client, *next; in wl_display_flush_clients() local
1303 wl_list_for_each_safe(client, next, &display->client_list, link) { in wl_display_flush_clients()
1304 ret = wl_connection_flush(client->connection); in wl_display_flush_clients()
1306 wl_event_source_fd_update(client->source, in wl_display_flush_clients()
1310 wl_client_destroy(client); in wl_display_flush_clients()
1330 struct wl_client *client; in wl_display_destroy_clients() local
1342 client = wl_container_of(pos, client, link); in wl_display_destroy_clients()
1344 wl_client_destroy(client); in wl_display_destroy_clients()
1697 wl_resource_create(struct wl_client *client, in wl_resource_create() argument
1708 id = wl_map_insert_new(&client->objects, 0, NULL); in wl_resource_create()
1718 resource->client = client; in wl_resource_create()
1723 if (wl_map_insert_at(&client->objects, 0, id, resource) < 0) { in wl_resource_create()
1724 wl_resource_post_error(client->display_resource, in wl_resource_create()
1731 wl_priv_signal_emit(&client->resource_created_signal, resource); in wl_resource_create()
1884 wl_client_get_link(struct wl_client *client) in wl_client_get_link() argument
1886 return &client->link; in wl_client_get_link()
1916 wl_client_add_resource_created_listener(struct wl_client *client, in wl_client_add_resource_created_listener() argument
1919 wl_priv_signal_add(&client->resource_created_signal, listener); in wl_client_add_resource_created_listener()
1956 wl_client_for_each_resource(struct wl_client *client, in wl_client_for_each_resource() argument
1965 wl_map_for_each(&client->objects, resource_iterator_helper, &context); in wl_client_for_each_resource()
2106 wl_client_add_resource(struct wl_client *client,
2110 wl_client_add_resource(struct wl_client *client, in wl_client_add_resource() argument
2115 wl_map_insert_new(&client->objects, in wl_client_add_resource()
2117 } else if (wl_map_insert_at(&client->objects, WL_MAP_ENTRY_LEGACY, in wl_client_add_resource()
2119 wl_resource_post_error(client->display_resource, in wl_client_add_resource()
2126 resource->client = client; in wl_client_add_resource()
2133 wl_client_add_object(struct wl_client *client,
2139 wl_client_add_object(struct wl_client *client, in wl_client_add_object() argument
2145 resource = wl_resource_create(client, interface, -1, id); in wl_client_add_object()
2147 wl_client_post_no_memory(client); in wl_client_add_object()
2156 wl_client_new_object(struct wl_client *client,
2161 wl_client_new_object(struct wl_client *client, in wl_client_new_object() argument
2167 resource = wl_resource_create(client, interface, -1, 0); in wl_client_new_object()
2169 wl_client_post_no_memory(client); in wl_client_new_object()