From 76b3687739636d4090169e85ea604a4eeb8b6502 Mon Sep 17 00:00:00 2001
From: Simon Ser <contact@emersion.fr>
Date: Thu, 24 Nov 2022 09:54:51 +0100
Subject: shm: add create() function without a wlr_renderer

This allows compositors which don't use wlr_renderer to still use
wlroots' wl_shm implementation.
---
 include/wlr/types/wlr_shm.h | 11 +++++++++++
 types/wlr_shm.c             |  6 +++---
 2 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/include/wlr/types/wlr_shm.h b/include/wlr/types/wlr_shm.h
index ebf4015e..5816c84e 100644
--- a/include/wlr/types/wlr_shm.h
+++ b/include/wlr/types/wlr_shm.h
@@ -24,6 +24,17 @@ struct wlr_shm;
 
 /**
  * Create the wl_shm global.
+ *
+ * Compositors using struct wlr_renderer should use wlr_shm_create_with_renderer()
+ * instead.
+ */
+struct wlr_shm *wlr_shm_create(struct wl_display *display, uint32_t version,
+	const uint32_t *formats, size_t formats_len);
+
+/**
+ * Create the wl_shm global.
+ *
+ * The pixel formats advertised to clients are taken from the struct wlr_renderer.
  */
 struct wlr_shm *wlr_shm_create_with_renderer(struct wl_display *display,
 	uint32_t version, struct wlr_renderer *renderer);
diff --git a/types/wlr_shm.c b/types/wlr_shm.c
index 492557f3..ac41e87e 100644
--- a/types/wlr_shm.c
+++ b/types/wlr_shm.c
@@ -495,8 +495,8 @@ static void handle_display_destroy(struct wl_listener *listener, void *data) {
 	free(shm);
 }
 
-static struct wlr_shm *shm_create(struct wl_display *display,
-		uint32_t version, const uint32_t *formats, size_t formats_len) {
+struct wlr_shm *wlr_shm_create(struct wl_display *display, uint32_t version,
+		const uint32_t *formats, size_t formats_len) {
 	// ARGB8888 and XRGB8888 must be supported per the wl_shm spec
 	bool has_argb8888 = false, has_xrgb8888 = false;
 	for (size_t i = 0; i < formats_len; i++) {
@@ -556,7 +556,7 @@ struct wlr_shm *wlr_shm_create_with_renderer(struct wl_display *display,
 		return NULL;
 	}
 
-	return shm_create(display, version, formats, formats_len);
+	return wlr_shm_create(display, version, formats, formats_len);
 }
 
 static bool shm_has_format(struct wlr_shm *shm, uint32_t shm_format) {
-- 
cgit v1.2.3