diff options
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/idle-inhibit.c | 2 | ||||
| -rw-r--r-- | examples/idle.c | 6 | ||||
| -rw-r--r-- | examples/multi-pointer.c | 28 | ||||
| -rw-r--r-- | examples/output-layout.c | 38 | ||||
| -rw-r--r-- | examples/pointer.c | 28 | ||||
| -rw-r--r-- | examples/rotation.c | 27 | ||||
| -rw-r--r-- | examples/screenshot.c | 181 | ||||
| -rw-r--r-- | examples/simple.c | 6 | ||||
| -rw-r--r-- | examples/tablet.c | 45 | ||||
| -rw-r--r-- | examples/touch.c | 35 | 
10 files changed, 133 insertions, 263 deletions
diff --git a/examples/idle-inhibit.c b/examples/idle-inhibit.c index b7b9c21c..c09e6507 100644 --- a/examples/idle-inhibit.c +++ b/examples/idle-inhibit.c @@ -5,8 +5,8 @@  #include <wayland-client.h>  #include <wayland-egl.h>  #include <wlr/render/egl.h> -#include "xdg-shell-client-protocol.h"  #include "idle-inhibit-unstable-v1-client-protocol.h" +#include "xdg-shell-client-protocol.h"  #include <linux/input-event-codes.h> diff --git a/examples/idle.c b/examples/idle.c index 2b155c68..b65a81cf 100644 --- a/examples/idle.c +++ b/examples/idle.c @@ -1,11 +1,11 @@ +#include <getopt.h> +#include <pthread.h>  #include <stdio.h>  #include <stdlib.h>  #include <string.h>  #include <unistd.h> -#include <getopt.h> -#include <pthread.h> -#include <wayland-client.h>  #include <wayland-client-protocol.h> +#include <wayland-client.h>  #include <wlr/util/log.h>  #include "idle-client-protocol.h" diff --git a/examples/multi-pointer.c b/examples/multi-pointer.c index d3d425f2..43ccdb66 100644 --- a/examples/multi-pointer.c +++ b/examples/multi-pointer.c @@ -1,30 +1,30 @@  #define _POSIX_C_SOURCE 199309L  #define _XOPEN_SOURCE 500 +#include <assert.h> +#include <GLES2/gl2.h> +#include <math.h>  #include <stdio.h>  #include <stdlib.h> -#include <time.h>  #include <string.h> +#include <time.h>  #include <unistd.h> -#include <math.h> -#include <assert.h> -#include <wayland-server.h>  #include <wayland-server-protocol.h> -#include <xkbcommon/xkbcommon.h> -#include <GLES2/gl2.h> -#include <wlr/render/matrix.h> -#include <wlr/render/gles2.h> -#include <wlr/render.h> +#include <wayland-server.h>  #include <wlr/backend.h>  #include <wlr/backend/session.h> +#include <wlr/render/gles2.h> +#include <wlr/render/wlr_renderer.h> +#include <wlr/types/wlr_cursor.h>  #include <wlr/types/wlr_keyboard.h> +#include <wlr/types/wlr_list.h> +#include <wlr/types/wlr_matrix.h>  #include <wlr/types/wlr_output_layout.h> -#include <wlr/xcursor.h> -#include <wlr/types/wlr_cursor.h>  #include <wlr/util/log.h> -#include <wlr/types/wlr_list.h> -#include "support/shared.h" -#include "support/config.h" +#include <wlr/xcursor.h> +#include <xkbcommon/xkbcommon.h>  #include "support/cat.h" +#include "support/config.h" +#include "support/shared.h"  struct sample_state; diff --git a/examples/output-layout.c b/examples/output-layout.c index 45257be9..45d896b0 100644 --- a/examples/output-layout.c +++ b/examples/output-layout.c @@ -1,29 +1,29 @@  #define _POSIX_C_SOURCE 199309L  #define _XOPEN_SOURCE 700 +#include <GLES2/gl2.h> +#include <limits.h> +#include <math.h>  #include <stdio.h>  #include <stdlib.h> -#include <time.h>  #include <string.h>  #include <strings.h> +#include <time.h>  #include <unistd.h> -#include <limits.h> -#include <wayland-server.h>  #include <wayland-server-protocol.h> -#include <xkbcommon/xkbcommon.h> -#include <GLES2/gl2.h> -#include <wlr/render/matrix.h> -#include <wlr/render/gles2.h> -#include <wlr/render.h> -#include <wlr/util/log.h> +#include <wayland-server.h>  #include <wlr/backend.h>  #include <wlr/backend/session.h> +#include <wlr/render/gles2.h> +#include <wlr/render/wlr_renderer.h> +#include <wlr/types/wlr_keyboard.h> +#include <wlr/types/wlr_matrix.h>  #include <wlr/types/wlr_output_layout.h>  #include <wlr/types/wlr_output.h> -#include <wlr/types/wlr_keyboard.h> -#include <math.h> -#include "support/shared.h" -#include "support/config.h" +#include <wlr/util/log.h> +#include <xkbcommon/xkbcommon.h>  #include "support/cat.h" +#include "support/config.h" +#include "support/shared.h"  struct sample_state {  	struct example_config *config; @@ -101,8 +101,8 @@ static void handle_output_frame(struct output_state *output,  	struct wlr_output *wlr_output = output->output;  	wlr_output_make_current(wlr_output, NULL); -	wlr_renderer_begin(sample->renderer, wlr_output); -	wlr_renderer_clear(sample->renderer, &(float[]){0.25f, 0.25f, 0.25f, 1}); +	wlr_renderer_begin(sample->renderer, wlr_output->width, wlr_output->height); +	wlr_renderer_clear(sample->renderer, (float[]){0.25f, 0.25f, 0.25f, 1});  	animate_cat(sample, output->output); @@ -111,18 +111,14 @@ static void handle_output_frame(struct output_state *output,  		.width = 128, .height = 128,  	};  	if (wlr_output_layout_intersects(sample->layout, output->output, &box)) { -		float matrix[16]; -  		// transform global coordinates to local coordinates  		double local_x = sample->x_offs;  		double local_y = sample->y_offs;  		wlr_output_layout_output_coords(sample->layout, output->output,  			&local_x, &local_y); -		wlr_texture_get_matrix(sample->cat_texture, &matrix, -			&wlr_output->transform_matrix, local_x, local_y); -		wlr_render_with_matrix(sample->renderer, -			sample->cat_texture, &matrix, 1.0f); +		wlr_render_texture(sample->renderer, sample->cat_texture, +			wlr_output->transform_matrix, local_x, local_y, 1.0f);  	}  	wlr_renderer_end(sample->renderer); diff --git a/examples/pointer.c b/examples/pointer.c index 0dbd02d2..e8a0e892 100644 --- a/examples/pointer.c +++ b/examples/pointer.c @@ -1,30 +1,30 @@  #define _POSIX_C_SOURCE 199309L  #define _XOPEN_SOURCE 500 +#include <assert.h> +#include <GLES2/gl2.h> +#include <math.h>  #include <stdio.h>  #include <stdlib.h> -#include <time.h>  #include <string.h> +#include <time.h>  #include <unistd.h> -#include <math.h> -#include <assert.h> -#include <wayland-server.h>  #include <wayland-server-protocol.h> -#include <xkbcommon/xkbcommon.h> -#include <GLES2/gl2.h> -#include <wlr/render/matrix.h> -#include <wlr/render/gles2.h> -#include <wlr/render.h> +#include <wayland-server.h>  #include <wlr/backend.h>  #include <wlr/backend/session.h> +#include <wlr/render/gles2.h> +#include <wlr/render/wlr_renderer.h> +#include <wlr/types/wlr_cursor.h>  #include <wlr/types/wlr_keyboard.h> +#include <wlr/types/wlr_list.h> +#include <wlr/types/wlr_matrix.h>  #include <wlr/types/wlr_output_layout.h> -#include <wlr/xcursor.h> -#include <wlr/types/wlr_cursor.h>  #include <wlr/util/log.h> -#include <wlr/types/wlr_list.h> -#include "support/shared.h" -#include "support/config.h" +#include <wlr/xcursor.h> +#include <xkbcommon/xkbcommon.h>  #include "support/cat.h" +#include "support/config.h" +#include "support/shared.h"  struct sample_state {  	struct compositor_state *compositor; diff --git a/examples/rotation.c b/examples/rotation.c index 1158ccc4..cbff09a1 100644 --- a/examples/rotation.c +++ b/examples/rotation.c @@ -1,23 +1,23 @@  #define _POSIX_C_SOURCE 199309L  #define _XOPEN_SOURCE 500 +#include <GLES2/gl2.h> +#include <math.h>  #include <stdio.h>  #include <stdlib.h> -#include <time.h>  #include <string.h>  #include <strings.h> +#include <time.h>  #include <unistd.h> -#include <wayland-server.h>  #include <wayland-server-protocol.h> -#include <xkbcommon/xkbcommon.h> -#include <GLES2/gl2.h> -#include <wlr/render/matrix.h> -#include <wlr/render/gles2.h> -#include <wlr/render.h> +#include <wayland-server.h>  #include <wlr/backend.h>  #include <wlr/backend/session.h> +#include <wlr/render/wlr_renderer.h> +#include <wlr/render/gles2.h>  #include <wlr/types/wlr_keyboard.h> +#include <wlr/types/wlr_matrix.h>  #include <wlr/util/log.h> -#include <math.h> +#include <xkbcommon/xkbcommon.h>  #include "support/shared.h"  #include "support/config.h"  #include "support/cat.h" @@ -43,16 +43,13 @@ static void handle_output_frame(struct output_state *output, struct timespec *ts  	wlr_output_effective_resolution(wlr_output, &width, &height);  	wlr_output_make_current(wlr_output, NULL); -	wlr_renderer_begin(sample->renderer, wlr_output); -	wlr_renderer_clear(sample->renderer, &(float[]){0.25f, 0.25f, 0.25f, 1}); +	wlr_renderer_begin(sample->renderer, wlr_output->width, wlr_output->height); +	wlr_renderer_clear(sample->renderer, (float[]){0.25f, 0.25f, 0.25f, 1}); -	float matrix[16];  	for (int y = -128 + (int)odata->y_offs; y < height; y += 128) {  		for (int x = -128 + (int)odata->x_offs; x < width; x += 128) { -			wlr_texture_get_matrix(sample->cat_texture, &matrix, -				&wlr_output->transform_matrix, x, y); -			wlr_render_with_matrix(sample->renderer, -					sample->cat_texture, &matrix, 1.0f); +			wlr_render_texture(sample->renderer, sample->cat_texture, +				wlr_output->transform_matrix, x, y, 1.0f);  		}  	} diff --git a/examples/screenshot.c b/examples/screenshot.c index e73989c6..fb37f32c 100644 --- a/examples/screenshot.c +++ b/examples/screenshot.c @@ -26,6 +26,7 @@  #include <errno.h>  #include <fcntl.h>  #include <limits.h> +#include <stdbool.h>  #include <stdio.h>  #include <stdlib.h>  #include <string.h> @@ -36,33 +37,22 @@  #include <wayland-client.h>  #include <wlr/util/log.h>  #include "screenshooter-client-protocol.h" -#include "util/os-compatibility.h"  static struct wl_shm *shm = NULL;  static struct orbital_screenshooter *screenshooter = NULL;  static struct wl_list output_list; -int min_x, min_y, max_x, max_y; -int buffer_copy_done; +static bool buffer_copy_done;  struct screenshooter_output {  	struct wl_output *output; -	struct wl_buffer *buffer; -	int width, height, offset_x, offset_y; -	enum wl_output_transform transform; -	void *data; +	int width, height;  	struct wl_list link;  };  static void output_handle_geometry(void *data, struct wl_output *wl_output,  		int x, int y, int physical_width, int physical_height, int subpixel,  		const char *make, const char *model, int transform) { -	struct screenshooter_output *output = wl_output_get_user_data(wl_output); - -	if (wl_output == output->output) { -		output->offset_x = x; -		output->offset_y = y; -		output->transform = transform; -	} +	// No-op  }  static void output_handle_mode(void *data, struct wl_output *wl_output, @@ -86,7 +76,7 @@ static const struct wl_output_listener output_listener = {  };  static void screenshot_done(void *data, struct orbital_screenshot *screenshot) { -	buffer_copy_done = 1; +	buffer_copy_done = true;  }  static const struct orbital_screenshot_listener screenshot_listener = { @@ -113,7 +103,7 @@ static void handle_global(void *data, struct wl_registry *registry,  static void handle_global_remove(void *data, struct wl_registry *registry,  		uint32_t name) { -	// Unimplemented +	// Who cares?  }  static const struct wl_registry_listener registry_listener = { @@ -123,14 +113,15 @@ static const struct wl_registry_listener registry_listener = {  static int backingfile(off_t size) {  	char template[] = "/tmp/wlroots-shared-XXXXXX"; -	int fd, ret; - -	fd = mkstemp(template); +	int fd = mkstemp(template);  	if (fd < 0) {  		return -1;  	} -	while ((ret = ftruncate(fd, size)) == EINTR) {} +	int ret; +	while ((ret = ftruncate(fd, size)) == EINTR) { +		// No-op +	}  	if (ret < 0) {  		close(fd);  		return -1; @@ -140,7 +131,6 @@ static int backingfile(off_t size) {  	return fd;  } -  static struct wl_buffer *create_shm_buffer(int width, int height,  		void **data_out) {  	int stride = width * 4; @@ -170,91 +160,8 @@ static struct wl_buffer *create_shm_buffer(int width, int height,  	return buffer;  } -static void write_image(const char *filename, int width, int height) { -	int buffer_stride = width * 4; - -	void *data = calloc(1, buffer_stride * height); -	if (!data) { -		return; -	} - -	struct screenshooter_output *output, *next; -	wl_list_for_each_safe(output, next, &output_list, link) { -		int output_stride = output->width * 4; -		uint32_t *src = (uint32_t *)output->data; -		uint32_t *dst = (uint32_t *)(data + -			(output->offset_y - min_y) * buffer_stride + -			(output->offset_x - min_x) * 4); - -		switch (output->transform) { -		case WL_OUTPUT_TRANSFORM_NORMAL: -			for (int i = 0; i < output->height; i++) { -				memcpy(dst, src, output_stride); -				dst += width; -				src += output->width; -			} -			break; -		case WL_OUTPUT_TRANSFORM_FLIPPED: -			for (int i = 0; i < output->height; ++i) { -				for (int j = 0; j < output->width; ++j) { -					dst[i * width + j] = -						src[i * output->width + output->width - 1 - j]; -				} -			} -			break; -		case WL_OUTPUT_TRANSFORM_90: -			for (int i = 0; i < output->width; ++i) { -				for (int j = 0; j < output->height; ++j) { -					dst[i * width + j] = -						src[j * output->width + output->width - 1 - i]; -				} -			} -			break; -		case WL_OUTPUT_TRANSFORM_FLIPPED_90: -			for (int i = 0; i < output->width; ++i) { -				for (int j = 0; j < output->height; ++j) { -					dst[i * width + j] = -						src[(output->height - 1 - j) * output->width + output->width - 1 - i]; -				} -			} -			break; -		case WL_OUTPUT_TRANSFORM_180: -			for (int i = 0; i < output->height; ++i) { -				for (int j = 0; j < output->width; ++j) { -					dst[i * width + j] = -						src[(output->height - 1 - i) * output->width + output->width - 1 - j]; -				} -			} -			break; -		case WL_OUTPUT_TRANSFORM_FLIPPED_180: -			for (int i = 0; i < output->height; ++i) { -				for (int j = 0; j < output->width; ++j) { -					dst[i * width + j] = -						src[(output->height - 1 - i) * output->width + j]; -				} -			} -			break; -		case WL_OUTPUT_TRANSFORM_270: -			for (int i = 0; i < output->width; ++i) { -				for (int j = 0; j < output->height; ++j) { -					dst[i * width + j] = -						src[(output->height - 1 - j) * output->width + i]; -				} -			} -			break; -		case WL_OUTPUT_TRANSFORM_FLIPPED_270: -			for (int i = 0; i < output->width; ++i) { -				for (int j = 0; j < output->height; ++j) { -					dst[i * width + j] = -						src[j * output->width + i]; -				} -			} -			break; -		} - -		free(output); -	} - +static void write_image(const char *filename, int width, int height, +		void *data) {  	char size[10 + 1 + 10 + 2 + 1]; // int32_t are max 10 digits  	sprintf(size, "%dx%d+0", width, height); @@ -270,12 +177,11 @@ static void write_image(const char *filename, int width, int height) {  		exit(EXIT_FAILURE);  	} else if (child != 0) {  		close(fd[0]); -		if (write(fd[1], data, buffer_stride * height) < 0) { +		if (write(fd[1], data, 4 * width * height) < 0) {  			fprintf(stderr, "write() failed: %s\n", strerror(errno));  			exit(EXIT_FAILURE);  		}  		close(fd[1]); -		free(data);  		waitpid(child, NULL, 0);  	} else {  		close(fd[1]); @@ -293,38 +199,9 @@ static void write_image(const char *filename, int width, int height) {  	}  } -static int set_buffer_size(int *width, int *height) { -	int owidth, oheight; -	min_x = min_y = INT_MAX; -	max_x = max_y = INT_MIN; - -	struct screenshooter_output *output; -	wl_list_for_each(output, &output_list, link) { -		if (output->transform & 0x1) { -			owidth = output->height; -			oheight = output->width; -		} else { -			owidth = output->width; -			oheight = output->height; -		} -		min_x = MIN(min_x, output->offset_x); -		min_y = MIN(min_y, output->offset_y); -		max_x = MAX(max_x, output->offset_x + owidth); -		max_y = MAX(max_y, output->offset_y + oheight); -	} - -	if (max_x <= min_x || max_y <= min_y) { -		return -1; -	} - -	*width = max_x - min_x; -	*height = max_y - min_y; - -	return 0; -} -  int main(int argc, char *argv[]) {  	wlr_log_init(L_DEBUG, NULL); +  	struct wl_display * display = wl_display_connect(NULL);  	if (display == NULL) {  		fprintf(stderr, "failed to create display: %m\n"); @@ -342,27 +219,31 @@ int main(int argc, char *argv[]) {  		return -1;  	} -	int width, height; -	if (set_buffer_size(&width, &height)) { -		fprintf(stderr, "cannot set buffer size\n"); -		return -1; -	} - +	int i = 0;  	struct screenshooter_output *output;  	wl_list_for_each(output, &output_list, link) { -		output->buffer = create_shm_buffer(output->width, output->height, &output->data); -		if (output->buffer == NULL) { +		void *data = NULL; +		struct wl_buffer *buffer = +			create_shm_buffer(output->width, output->height, &data); +		if (buffer == NULL) {  			return -1;  		}  		struct orbital_screenshot *screenshot = orbital_screenshooter_shoot( -			screenshooter, output->output, output->buffer); -		orbital_screenshot_add_listener(screenshot, &screenshot_listener, screenshot); -		buffer_copy_done = 0; +			screenshooter, output->output, buffer); +		orbital_screenshot_add_listener(screenshot, &screenshot_listener, +			screenshot); +		buffer_copy_done = false;  		while (!buffer_copy_done) {  			wl_display_roundtrip(display);  		} + +		char filename[24 + 10]; // int32_t are max 10 digits +		snprintf(filename, sizeof(filename), "wayland-screenshot-%d.png", i); + +		write_image(filename, output->width, output->height, data); +		wl_buffer_destroy(buffer); +		++i;  	} -	write_image("wayland-screenshot.png", width, height);  	return EXIT_SUCCESS;  } diff --git a/examples/simple.c b/examples/simple.c index 90808b0f..79db4a0c 100644 --- a/examples/simple.c +++ b/examples/simple.c @@ -1,11 +1,11 @@  #define _POSIX_C_SOURCE 199309L -#include <string.h> +#include <GLES2/gl2.h> +#include <inttypes.h>  #include <stdio.h>  #include <stdlib.h> +#include <string.h>  #include <time.h> -#include <inttypes.h>  #include <wayland-server.h> -#include <GLES2/gl2.h>  #include <wlr/backend.h>  #include <wlr/backend/session.h>  #include <wlr/types/wlr_output.h> diff --git a/examples/tablet.c b/examples/tablet.c index 5bfa1271..9379fac3 100644 --- a/examples/tablet.c +++ b/examples/tablet.c @@ -1,27 +1,27 @@  #define _POSIX_C_SOURCE 199309L  #define _XOPEN_SOURCE 500 +#include <GLES2/gl2.h> +#include <math.h>  #include <stdio.h>  #include <stdlib.h> -#include <time.h>  #include <string.h> +#include <time.h>  #include <unistd.h> -#include <wayland-server.h>  #include <wayland-server-protocol.h> -#include <xkbcommon/xkbcommon.h> -#include <GLES2/gl2.h> -#include <wlr/render/matrix.h> -#include <wlr/render/gles2.h> -#include <wlr/render.h> +#include <wayland-server.h>  #include <wlr/backend.h>  #include <wlr/backend/session.h> +#include <wlr/render/gles2.h> +#include <wlr/render/wlr_renderer.h>  #include <wlr/types/wlr_box.h> +#include <wlr/types/wlr_matrix.h>  #include <wlr/types/wlr_output.h> -#include <wlr/types/wlr_tablet_tool.h>  #include <wlr/types/wlr_tablet_pad.h> +#include <wlr/types/wlr_tablet_tool.h>  #include <wlr/util/log.h> -#include <math.h> -#include "support/shared.h" +#include <xkbcommon/xkbcommon.h>  #include "support/cat.h" +#include "support/shared.h"  struct sample_state {  	struct wlr_renderer *renderer; @@ -46,10 +46,9 @@ static void handle_output_frame(struct output_state *output, struct timespec *ts  	wlr_output_effective_resolution(wlr_output, &width, &height);  	wlr_output_make_current(wlr_output, NULL); -	wlr_renderer_begin(sample->renderer, wlr_output); -	wlr_renderer_clear(sample->renderer, &(float[]){0.25f, 0.25f, 0.25f, 1}); +	wlr_renderer_begin(sample->renderer, wlr_output->width, wlr_output->height); +	wlr_renderer_clear(sample->renderer, (float[]){0.25f, 0.25f, 0.25f, 1}); -	float matrix[16];  	float distance = 0.8f * (1 - sample->distance);  	float tool_color[4] = { distance, distance, distance, 1 };  	for (size_t i = 0; sample->button && i < 4; ++i) { @@ -61,13 +60,12 @@ static void handle_output_frame(struct output_state *output, struct timespec *ts  	float pad_height = sample->height_mm * scale;  	float left = width / 2.0f - pad_width / 2.0f;  	float top = height / 2.0f - pad_height / 2.0f; -	struct wlr_box box = { +	const struct wlr_box box = {  		.x = left, .y = top,  		.width = pad_width, .height = pad_height,  	}; -	wlr_matrix_project_box(&matrix, &box, 0, 0, -			&wlr_output->transform_matrix); -	wlr_render_colored_quad(sample->renderer, &sample->pad_color, &matrix); +	wlr_render_rect(sample->renderer, &box, sample->pad_color, +		wlr_output->transform_matrix);  	if (sample->proximity) {  		struct wlr_box box = { @@ -76,16 +74,17 @@ static void handle_output_frame(struct output_state *output, struct timespec *ts  			.width = 16 * (sample->pressure + 1),  			.height = 16 * (sample->pressure + 1),  		}; -		wlr_matrix_project_box(&matrix, &box, 0, sample->ring, -				&wlr_output->transform_matrix); -		wlr_render_colored_quad(sample->renderer, &tool_color, &matrix); +		float matrix[9]; +		wlr_matrix_project_box(matrix, &box, WL_OUTPUT_TRANSFORM_NORMAL, +			sample->ring, wlr_output->transform_matrix); +		wlr_render_quad_with_matrix(sample->renderer, tool_color, matrix); +  		box.x += sample->x_tilt;  		box.y += sample->y_tilt;  		box.width /= 2;  		box.height /= 2; -		wlr_matrix_project_box(&matrix, &box, 0, 0, -				&wlr_output->transform_matrix); -		wlr_render_colored_quad(sample->renderer, &tool_color, &matrix); +		wlr_render_rect(sample->renderer, &box, tool_color, +			wlr_output->transform_matrix);  	}  	wlr_renderer_end(sample->renderer); diff --git a/examples/touch.c b/examples/touch.c index 278252cc..f9c496cf 100644 --- a/examples/touch.c +++ b/examples/touch.c @@ -1,25 +1,25 @@  #define _POSIX_C_SOURCE 199309L  #define _XOPEN_SOURCE 500 +#include <GLES2/gl2.h> +#include <math.h> +#include <stdint.h>  #include <stdio.h>  #include <stdlib.h> -#include <time.h>  #include <string.h> +#include <time.h>  #include <unistd.h> -#include <stdint.h> -#include <math.h> -#include <wayland-server.h>  #include <wayland-server-protocol.h> -#include <xkbcommon/xkbcommon.h> -#include <GLES2/gl2.h> -#include <wlr/render/matrix.h> -#include <wlr/render/gles2.h> -#include <wlr/render.h> +#include <wayland-server.h>  #include <wlr/backend.h>  #include <wlr/backend/session.h> +#include <wlr/render/gles2.h> +#include <wlr/render/wlr_renderer.h>  #include <wlr/types/wlr_list.h> +#include <wlr/types/wlr_matrix.h>  #include <wlr/util/log.h> -#include "support/shared.h" +#include <xkbcommon/xkbcommon.h>  #include "support/cat.h" +#include "support/shared.h"  struct sample_state {  	struct wlr_renderer *renderer; @@ -42,18 +42,15 @@ static void handle_output_frame(struct output_state *output, struct timespec *ts  	wlr_output_effective_resolution(wlr_output, &width, &height);  	wlr_output_make_current(wlr_output, NULL); -	wlr_renderer_begin(sample->renderer, wlr_output); -	wlr_renderer_clear(sample->renderer, &(float[]){0.25f, 0.25f, 0.25f, 1}); +	wlr_renderer_begin(sample->renderer, wlr_output->width, wlr_output->height); +	wlr_renderer_clear(sample->renderer, (float[]){0.25f, 0.25f, 0.25f, 1}); -	float matrix[16];  	struct touch_point *p;  	wl_list_for_each(p, &sample->touch_points, link) { -		wlr_texture_get_matrix(sample->cat_texture, &matrix, -			&wlr_output->transform_matrix, -			(int)(p->x * width) - sample->cat_texture->width / 2, -			(int)(p->y * height) - sample->cat_texture->height / 2); -		wlr_render_with_matrix(sample->renderer, -			sample->cat_texture, &matrix, 1.0f); +		int x = (int)(p->x * width) - sample->cat_texture->width / 2; +		int y = (int)(p->y * height) - sample->cat_texture->height / 2; +		wlr_render_texture(sample->renderer, sample->cat_texture, +			wlr_output->transform_matrix, x, y, 1.0f);  	}  	wlr_renderer_end(sample->renderer);  | 
