Esempio n. 1
0
struct wlegl_handle *
wlegl_handle_create(struct wl_resource *parent, uint32_t id,
		    int32_t num_fds, struct wl_array *ints)
{
	struct wlegl_handle *handle;

	handle = malloc(sizeof *handle);
	if (!handle) {
		wl_resource_post_no_memory(parent);
		return;
	}
	memset(handle, 0, sizeof *handle);

	handle->resource =
		wl_resource_create(wl_resource_get_client(parent),
				   &android_wlegl_handle_interface, 1, id);
	if (!handle->resource) {
		wl_resource_post_no_memory(parent);
		free(handle);
		return;
	}
	wl_resource_set_implementation(handle->resource,
				       &wlegl_handle_implementation,
				       handle, destroy_wlegl_handle);

	wl_array_init(&handle->ints);
	wl_array_init(&handle->fds);

	wl_array_copy(&handle->ints, ints);

	handle->num_fds = num_fds;
	handle->num_ints = ints->size / sizeof(int);
}
Esempio n. 2
0
static void
server_wlegl_create_handle(struct wl_client *client,
			   struct wl_resource *resource,
			   uint32_t id,
			   int32_t num_fds,
			   struct wl_array *ints)
{
	server_wlegl *wlegl = server_wlegl_from(resource);
	server_wlegl_handle *handle;

	if (num_fds < 0) {
		wl_resource_post_error(resource,
				       ANDROID_WLEGL_ERROR_BAD_VALUE,
				       "num_fds is negative: %d", num_fds);
		return;
	}

	handle = server_wlegl_handle_create(id);
	wl_array_copy(&handle->ints, ints);
	handle->num_fds = num_fds;
	wl_client_add_resource(client, &handle->resource);
}
Esempio n. 3
0
static void ssb_ints(void *data, android_wlegl_server_buffer_handle *, wl_array *ints)
{
    ServerWaylandBuffer *wsb = static_cast<ServerWaylandBuffer *>(data);
    wl_array_copy(&wsb->ints, ints);
}