Fixed compiler errors when using C23/GCC15. Thanks to pastalian for the patch
2 files changed, 97 insertions(+), 17 deletions(-)

M src/dmabuf_source.c
M src/scpy_source.c
M src/dmabuf_source.c +29 -6
@@ 1,5 1,5 @@ 
 /*
- *  Copyright (C) 2019-2023 Scoopta
+ *  Copyright (C) 2019-2024 Scoopta
  *  This file is part of wlrobs
  *  wlrobs is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by

          
@@ 78,7 78,30 @@ static const char* get_name(void* data) 
 	return "Wayland output(dmabuf)";
 }
 
-static void nop() {}
+static void output_description(void* data, struct zxdg_output_v1* output, const char* description) {
+	(void) data;
+	(void) output;
+	(void) description;
+}
+
+static void output_done(void* data, struct zxdg_output_v1* output) {
+	(void) data;
+	(void) output;
+}
+
+static void output_logical_position(void* data, struct zxdg_output_v1* output, int32_t x, int32_t y) {
+	(void) data;
+	(void) output;
+	(void) x;
+	(void) y;
+}
+
+static void output_logical_size(void* data, struct zxdg_output_v1* output, int32_t width, int32_t height) {
+	(void) data;
+	(void) output;
+	(void) width;
+	(void) height;
+}
 
 static void get_xdg_name(void* data, struct zxdg_output_v1* output, const char* name) {
 	(void) output;

          
@@ 96,10 119,10 @@ static void add_interface(void* data, st
 
 		node->xdg_output = zxdg_output_manager_v1_get_xdg_output(this->output_manager, node->wl_output);
 		node->listener = malloc(sizeof(struct zxdg_output_v1_listener));
-		node->listener->description = nop;
-		node->listener->done = nop;
-		node->listener->logical_position = nop;
-		node->listener->logical_size = nop;
+		node->listener->description = output_description;
+		node->listener->done = output_done;
+		node->listener->logical_position = output_logical_position;
+		node->listener->logical_size = output_logical_size;
 		node->listener->name = get_xdg_name;
 		zxdg_output_v1_add_listener(node->xdg_output, node->listener, node);
 		wl_display_roundtrip(this->wl);

          
M src/scpy_source.c +68 -11
@@ 1,5 1,5 @@ 
 /*
- *  Copyright (C) 2019-2022 Scoopta
+ *  Copyright (C) 2019-2024 Scoopta
  *  This file is part of wlrobs
  *  wlrobs is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by

          
@@ 89,7 89,11 @@ static void add_interface(void* data, st
 	}
 }
 
-static void nop() {}
+static void remove_interface(void* data, struct wl_registry* registry, uint32_t name) {
+	(void) data;
+	(void) registry;
+	(void) name;
+}
 
 static void get_xdg_name(void* data, struct zxdg_output_v1* output, const char* name) {
 	(void) output;

          
@@ 97,6 101,31 @@ static void get_xdg_name(void* data, str
 	node->name = strdup(name);
 }
 
+static void output_description(void* data, struct zxdg_output_v1* output, const char* description) {
+	(void) data;
+	(void) output;
+	(void) description;
+}
+
+static void output_done(void* data, struct zxdg_output_v1* output) {
+	(void) data;
+	(void) output;
+}
+
+static void output_logical_position(void* data, struct zxdg_output_v1* output, int32_t x, int32_t y) {
+	(void) data;
+	(void) output;
+	(void) x;
+	(void) y;
+}
+
+static void output_logical_size(void* data, struct zxdg_output_v1* output, int32_t width, int32_t height) {
+	(void) data;
+	(void) output;
+	(void) width;
+	(void) height;
+}
+
 static void destroy(void* data) {
 	struct wlr_source* this = data;
 	struct output_node* node, *safe_node;

          
@@ 148,7 177,7 @@ static void setup_display(struct wlr_sou
 	struct wl_registry* registry = wl_display_get_registry(this->wl);
 	struct wl_registry_listener listener = {
 		.global = add_interface,
-		.global_remove = nop
+		.global_remove = remove_interface
 	};
 	wl_registry_add_listener(registry, &listener, this);
 	wl_display_roundtrip(this->wl);

          
@@ 156,10 185,10 @@ static void setup_display(struct wlr_sou
 	wl_list_for_each(node, &this->outputs, link) {
 		struct zxdg_output_v1* xdg_output = zxdg_output_manager_v1_get_xdg_output(this->output_manager, node->output);
 		node->listener = malloc(sizeof(struct zxdg_output_v1_listener));
-		node->listener->description = nop;
-		node->listener->done = nop;
-		node->listener->logical_position = nop;
-		node->listener->logical_size = nop;
+		node->listener->description = output_description;
+		node->listener->done = output_done;
+		node->listener->logical_position = output_logical_position;
+		node->listener->logical_size = output_logical_size;
 		node->listener->name = get_xdg_name;
 		zxdg_output_v1_add_listener(xdg_output, node->listener, node);
 	}

          
@@ 248,6 277,34 @@ static void failed(void* data, struct zw
 	this->waiting = false;
 }
 
+static void flags(void* data, struct zwlr_screencopy_frame_v1* frame, uint32_t flags) {
+	(void) data;
+	(void) frame;
+	(void) flags;
+}
+
+static void damage(void* data, struct zwlr_screencopy_frame_v1* frame, uint32_t x, uint32_t y, uint32_t width, uint32_t height) {
+	(void) data;
+	(void) frame;
+	(void) x;
+	(void) y;
+	(void) width;
+	(void) height;
+}
+
+static void linux_dmabuf(void* data, struct zwlr_screencopy_frame_v1* frame, uint32_t format, uint32_t width, uint32_t height) {
+	(void) data;
+	(void) frame;
+	(void) format;
+	(void) width;
+	(void) height;
+}
+
+static void buffer_done(void* data, struct zwlr_screencopy_frame_v1* frame) {
+	(void) data;
+	(void) frame;
+}
+
 static void render(void* data, gs_effect_t* effect) {
 	(void) effect;
 	struct wlr_source* this = data;

          
@@ 265,12 322,12 @@ static void render(void* data, gs_effect
 
 	struct zwlr_screencopy_frame_v1_listener listener = {
 		.buffer = buffer,
-		.flags = nop,
+		.flags = flags,
 		.ready = ready,
 		.failed = failed,
-		.damage = nop,
-		.linux_dmabuf = nop,
-		.buffer_done = nop,
+		.damage = damage,
+		.linux_dmabuf = linux_dmabuf,
+		.buffer_done = buffer_done,
 	};
 	zwlr_screencopy_frame_v1_add_listener(frame, &listener, this);
 	while(this->waiting) {