diff options
Diffstat (limited to 'examples/compositor/wl_compositor.c')
-rw-r--r-- | examples/compositor/wl_compositor.c | 91 |
1 files changed, 5 insertions, 86 deletions
diff --git a/examples/compositor/wl_compositor.c b/examples/compositor/wl_compositor.c index 03a1aa7e..89d23d6a 100644 --- a/examples/compositor/wl_compositor.c +++ b/examples/compositor/wl_compositor.c @@ -1,90 +1,13 @@ #include <assert.h> +#include <stdlib.h> #include <wayland-server.h> #include <wlr/util/log.h> +#include <wlr/types/wlr_surface.h> #include "compositor.h" -static void surface_destroy(struct wl_client *client, struct wl_resource *resource) { - wl_resource_destroy(resource); -} - -static void surface_attach(struct wl_client *client, - struct wl_resource *resource, - struct wl_resource *buffer_resource, int32_t sx, int32_t sy) { - struct wlr_texture *texture = wl_resource_get_user_data(resource); - struct wl_shm_buffer *buffer = wl_shm_buffer_get(buffer_resource); - uint32_t format = wl_shm_buffer_get_format(buffer); - wlr_texture_upload_shm(texture, format, buffer); -} - -static void surface_damage(struct wl_client *client, - struct wl_resource *resource, - int32_t x, int32_t y, int32_t width, int32_t height) { - wlr_log(L_DEBUG, "TODO: surface damage"); -} - -static void surface_frame(struct wl_client *client, - struct wl_resource *resource, uint32_t callback) { - wlr_log(L_DEBUG, "TODO: surface frame"); -} - -static void surface_set_opaque_region(struct wl_client *client, - struct wl_resource *resource, - struct wl_resource *region_resource) { - wlr_log(L_DEBUG, "TODO: surface opaque region"); -} - -static void surface_set_input_region(struct wl_client *client, - struct wl_resource *resource, - struct wl_resource *region_resource) { - - wlr_log(L_DEBUG, "TODO: surface input region"); -} - -static void surface_commit(struct wl_client *client, - struct wl_resource *resource) { - wlr_log(L_DEBUG, "TODO: surface surface commit"); -} - -static void surface_set_buffer_transform(struct wl_client *client, - struct wl_resource *resource, int transform) { - wlr_log(L_DEBUG, "TODO: surface surface buffer transform"); -} - -static void surface_set_buffer_scale(struct wl_client *client, - struct wl_resource *resource, - int32_t scale) { - wlr_log(L_DEBUG, "TODO: surface set buffer scale"); -} - - -static void surface_damage_buffer(struct wl_client *client, - struct wl_resource *resource, - int32_t x, int32_t y, int32_t width, - int32_t height) { - wlr_log(L_DEBUG, "TODO: surface damage buffer"); -} - -struct wl_surface_interface surface_interface = { - surface_destroy, - surface_attach, - surface_damage, - surface_frame, - surface_set_opaque_region, - surface_set_input_region, - surface_commit, - surface_set_buffer_transform, - surface_set_buffer_scale, - surface_damage_buffer -}; - -static void destroy_surface(struct wl_resource *resource) { - struct wlr_texture *surface = wl_resource_get_user_data(resource); - wlr_texture_destroy(surface); -} - static void destroy_surface_listener(struct wl_listener *listener, void *data) { struct wl_compositor_state *state; - struct wlr_texture *surface = data; + struct wlr_surface *surface = data; state = wl_container_of(listener, state, destroy_surface_listener); struct wl_resource *res = NULL; @@ -101,13 +24,9 @@ static void wl_compositor_create_surface(struct wl_client *client, struct wl_compositor_state *state = wl_resource_get_user_data(resource); struct wl_resource *surface_resource = wl_resource_create(client, &wl_surface_interface, wl_resource_get_version(resource), id); - struct wlr_texture *texture = wlr_render_texture_init(state->renderer); - texture->resource = surface_resource; - wl_resource_set_implementation(surface_resource, &surface_interface, - texture, destroy_surface); - wl_resource_set_user_data(surface_resource, texture); + struct wlr_surface *surface = wlr_surface_create(surface_resource, state->renderer); wl_list_insert(&state->surfaces, wl_resource_get_link(surface_resource)); - wl_signal_add(&texture->destroy_signal, &state->destroy_surface_listener); + wl_signal_add(&surface->signals.destroy, &state->destroy_surface_listener); } static void wl_compositor_create_region(struct wl_client *client, |