commit:     30e320d2770bd110cdc80177fefaf24cb5485376
Author:     Takuya Wakazono <pastalian46 <AT> gmail <DOT> com>
AuthorDate: Thu Nov 28 12:20:34 2024 +0000
Commit:     Julien Roy <julien <AT> jroy <DOT> ca>
CommitDate: Thu Nov 28 12:21:18 2024 +0000
URL:        https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=30e320d2

gui-apps/mpvpaper: fix build with GCC 15

Closes: https://bugs.gentoo.org/945227
Signed-off-by: Takuya Wakazono <pastalian46 <AT> gmail.com>

 gui-apps/mpvpaper/files/mpvpaper-1.7-gcc15.patch | 148 +++++++++++++++++++++++
 gui-apps/mpvpaper/mpvpaper-1.7.ebuild            |   5 +
 2 files changed, 153 insertions(+)

diff --git a/gui-apps/mpvpaper/files/mpvpaper-1.7-gcc15.patch 
b/gui-apps/mpvpaper/files/mpvpaper-1.7-gcc15.patch
new file mode 100644
index 000000000..a112a7fb3
--- /dev/null
+++ b/gui-apps/mpvpaper/files/mpvpaper-1.7-gcc15.patch
@@ -0,0 +1,148 @@
+https://bugs.gentoo.org/945227
+https://github.com/GhostNaN/mpvpaper/pull/90
+--- a/src/holder.c
++++ b/src/holder.c
+@@ -45,8 +45,6 @@ static struct {
+     int start_time;
+ } halt_info = {NULL, NULL, false, 0};
+ 
+-static void nop() {}
+-
+ static void revive_mpvpaper() {
+     // Get the "real" cwd
+     char exe_dir[1024];
+@@ -197,6 +195,16 @@ static void create_layer_surface(struct display_output 
*output) {
+     wl_surface_commit(output->surface);
+ }
+ 
++static void output_geometry(void *data, struct wl_output *wl_output, int32_t 
x, int32_t y, int32_t physical_width,
++        int32_t physical_height, int32_t subpixel, const char *make, const 
char *model, int32_t transform) {
++    // NOP
++}
++
++static void output_mode(void *data, struct wl_output *wl_output, uint32_t 
flags, int32_t width, int32_t height,
++        int32_t refresh) {
++    // NOP
++}
++
+ static void output_name(void *data, struct wl_output *wl_output, const char 
*name) {
+     (void)wl_output;
+ 
+@@ -221,6 +229,10 @@ static void output_done(void *data, struct wl_output 
*wl_output) {
+         destroy_display_output(output);
+ }
+ 
++static void output_scale(void *data, struct wl_output *wl_output, int32_t 
scale) {
++    // NOP
++}
++
+ static void output_description(void *data, struct wl_output *wl_output, const 
char *description) {
+     (void)wl_output;
+ 
+@@ -238,10 +250,10 @@ static void output_description(void *data, struct 
wl_output *wl_output, const ch
+ }
+ 
+ static const struct wl_output_listener output_listener = {
+-    .geometry = nop,
+-    .mode = nop,
++    .geometry = output_geometry,
++    .mode = output_mode,
+     .done = output_done,
+-    .scale = nop,
++    .scale = output_scale,
+     .name = output_name,
+     .description = output_description,
+ };
+--- a/src/main.c
++++ b/src/main.c
+@@ -88,8 +88,6 @@ static uint SLIDESHOW_TIME = 0;
+ static bool SHOW_OUTPUTS = false;
+ static int VERBOSE = 0;
+ 
+-static void nop() {}
+-
+ static void exit_cleanup() {
+ 
+     // Give mpv a chance to finish
+@@ -123,7 +121,7 @@ static void exit_mpvpaper(int reason) {
+     exit(reason);
+ }
+ 
+-static void *exit_by_pthread() {
++static void *exit_by_pthread(void *_) {
+     exit_mpvpaper(EXIT_SUCCESS);
+     pthread_exit(NULL);
+ }
+@@ -262,7 +260,7 @@ static char *check_watch_list(char **list) {
+     return NULL;
+ }
+ 
+-static void *monitor_pauselist() {
++static void *monitor_pauselist(void *_) {
+     pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL);
+     bool list_paused = 0;
+ 
+@@ -286,7 +284,7 @@ static void *monitor_pauselist() {
+     pthread_exit(NULL);
+ }
+ 
+-static void *monitor_stoplist() {
++static void *monitor_stoplist(void *_) {
+     pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL);
+ 
+     while (halt_info.stoplist) {
+@@ -303,7 +301,7 @@ static void *monitor_stoplist() {
+     pthread_exit(NULL);
+ }
+ 
+-static void *handle_auto_pause() {
++static void *handle_auto_pause(void *_) {
+     pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL);
+ 
+     while (halt_info.auto_pause) {
+@@ -327,7 +325,7 @@ static void *handle_auto_pause() {
+     pthread_exit(NULL);
+ }
+ 
+-static void *handle_auto_stop() {
++static void *handle_auto_stop(void *_) {
+     pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL);
+ 
+     while (halt_info.auto_stop) {
+@@ -344,7 +342,7 @@ static void *handle_auto_stop() {
+     pthread_exit(NULL);
+ }
+ 
+-static void *handle_mpv_events() {
++static void *handle_mpv_events(void *_) {
+     pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL);
+     int mpv_paused = 0;
+     time_t start_time = time(NULL);
+@@ -710,6 +708,16 @@ static void create_layer_surface(struct display_output 
*output) {
+     wl_surface_commit(output->surface);
+ }
+ 
++static void output_geometry(void *data, struct wl_output *wl_output, int32_t 
x, int32_t y, int32_t physical_width,
++        int32_t physical_height, int32_t subpixel, const char *make, const 
char *model, int32_t transform) {
++    // NOP
++}
++
++static void output_mode(void *data, struct wl_output *wl_output, uint32_t 
flags, int32_t width, int32_t height,
++        int32_t refresh) {
++    // NOP
++}
++
+ static void output_name(void *data, struct wl_output *wl_output, const char 
*name) {
+     (void)wl_output;
+ 
+@@ -771,8 +779,8 @@ static void output_description(void *data, struct 
wl_output *wl_output, const ch
+ }
+ 
+ static const struct wl_output_listener output_listener = {
+-    .geometry = nop,
+-    .mode = nop,
++    .geometry = output_geometry,
++    .mode = output_mode,
+     .done = output_done,
+     .scale = output_scale,
+     .name = output_name,

diff --git a/gui-apps/mpvpaper/mpvpaper-1.7.ebuild 
b/gui-apps/mpvpaper/mpvpaper-1.7.ebuild
index 79f997313..2f7face77 100644
--- a/gui-apps/mpvpaper/mpvpaper-1.7.ebuild
+++ b/gui-apps/mpvpaper/mpvpaper-1.7.ebuild
@@ -32,6 +32,11 @@ DEPEND="
 "
 BDEPEND="dev-util/wayland-scanner"
 
+PATCHES=(
+       # bug #945227
+       "${FILESDIR}/${P}-gcc15.patch"
+)
+
 src_install() {
        meson_src_install
        newman mpvpaper.man mpvpaper.1

Reply via email to