<pre style='margin:0'>
Renee Otten (reneeotten) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/635684fa8700afc65553868e833011a8a7a4377d">https://github.com/macports/macports-ports/commit/635684fa8700afc65553868e833011a8a7a4377d</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 635684fa8700afc65553868e833011a8a7a4377d
</span>Author: Sergey Fedorov <vital.had@gmail.com>
AuthorDate: Wed Nov 27 09:04:35 2024 +0800
<span style='display:block; white-space:pre;color:#404040;'> wayland: new port
</span>---
devel/wayland/Portfile | 49 ++++
.../0001-Darwin-fixes-from-owl-compositor.patch | 261 +++++++++++++++++++++
...and-os.c-LOCAL_PEERPID-may-not-be-defined.patch | 34 +++
...s-test-F_DUPFD_CLOEXEC-may-not-be-defined.patch | 30 +++
4 files changed, 374 insertions(+)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/wayland/Portfile b/devel/wayland/Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..78a525b733f
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/wayland/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,49 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup github 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup legacysupport 1.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup meson 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# CLOCK_MONOTONIC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+legacysupport.newest_darwin_requires_legacy 15
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup XQuartz wayland 04654ba7b57ccbf583db899a327f8f7000f90546
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version 2023.01.28
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories devel graphics
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license MIT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers nomaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description Core Wayland protocol and libraries
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description ${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums rmd160 bb764639d4eeabf3f613196a53a400fb54a1e7b3 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sha256 2d168e637a62350bbfc1535931d7e6d34893de30bb710c7d1bf87dc14eeeb38c \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ size 351832
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.tarball_from archive
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_build-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ path:bin/cmake:cmake \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ path:bin/pkg-config:pkgconfig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib-append port:epoll-shim \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:libffi \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:libxml2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patch.pre_args-replace -p0 -p1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append 0001-Darwin-fixes-from-owl-compositor.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0002-wayland-os.c-LOCAL_PEERPID-may-not-be-defined.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0003-os-wrappers-test-F_DUPFD_CLOEXEC-may-not-be-defined.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# stdatomic.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.c_standard 2011
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -Ddocumentation=false \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -Ddtd_validation=true \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -Dlibraries=true \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -Dscanner=true \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -Dtests=true
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test.run yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.livecheck.branch darwin-portability
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/wayland/files/0001-Darwin-fixes-from-owl-compositor.patch b/devel/wayland/files/0001-Darwin-fixes-from-owl-compositor.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..68cba98bc7f
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/wayland/files/0001-Darwin-fixes-from-owl-compositor.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,261 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From e0837e2d59ae85b7828f4897c9efce0bc9903b4f Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Wed, 27 Nov 2024 08:38:35 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Darwin fixes from owl-compositor
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Cherry-picked from https://github.com/owl-compositor/wayland/commit/bc49b0159b7e358e1bd3d52c2646c51700b9a084
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ meson.build | 9 +++++++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/connection.c | 5 ++++-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/event-loop.c | 40 ++++++++++++++++++++++++++++++++++++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/wayland-shm.c | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ tests/event-loop-test.c | 11 +++++++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 5 files changed, 63 insertions(+), 4 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/meson.build b/meson.build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 9e0a6c9..bd5d157 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/meson.build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/meson.build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -90,8 +90,8 @@ if get_option('libraries')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ decls = [
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- { 'header': 'sys/signalfd.h', 'symbol': 'SFD_CLOEXEC' },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- { 'header': 'sys/timerfd.h', 'symbol': 'TFD_CLOEXEC' },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ { 'header': 'sys/signalfd.h', 'symbol': 'SFD_CLOEXEC', 'variable': 'HAVE_SIGNALFD' },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ { 'header': 'sys/timerfd.h', 'symbol': 'TFD_CLOEXEC', 'variable': 'HAVE_TIMERFD' },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ { 'header': 'time.h', 'symbol': 'CLOCK_MONOTONIC' },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -101,6 +101,11 @@ if get_option('libraries')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ endforeach
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ config_h.set(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 'HAVE_ITIMERSPEC',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ cc.has_members('struct itimerspec', 'it_interval', 'it_value', dependencies: epoll_dep)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if host_machine.system() == 'darwin'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rt_dep = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/connection.c b/src/connection.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index af79450..2009125 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/src/connection.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/src/connection.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -315,7 +315,10 @@ wl_connection_flush(struct wl_connection *connection)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ do {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ len = sendmsg(connection->fd, &msg,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- MSG_NOSIGNAL | MSG_DONTWAIT);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ #ifdef MSG_NOSIGNAL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ MSG_NOSIGNAL |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ MSG_DONTWAIT);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } while (len == -1 && errno == EINTR);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (len == -1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/event-loop.c b/src/event-loop.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 37cf95d..5d276f6 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/src/event-loop.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/src/event-loop.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -39,11 +39,27 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <sys/signalfd.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <sys/timerfd.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <unistd.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include "../config.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "wayland-util.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "wayland-private.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "wayland-server-core.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "wayland-os.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_SIGNALFD
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <sys/signalfd.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_TIMERFD
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <sys/timerfd.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef HAVE_ITIMERSPEC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++struct itimerspec {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ struct timespec it_interval;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ struct timespec it_value;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /** \cond INTERNAL */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define TIMER_REMOVED -2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -75,7 +91,9 @@ struct wl_event_loop {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct wl_signal destroy_signal;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_TIMERFD
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct wl_timer_heap timers;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct wl_event_source_interface {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -104,10 +122,14 @@ wl_event_source_fd_dispatch(struct wl_event_source *source,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mask |= WL_EVENT_READABLE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (ep->events & EPOLLOUT)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mask |= WL_EVENT_WRITABLE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef EPOLLHUP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (ep->events & EPOLLHUP)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mask |= WL_EVENT_HANGUP;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef EPOLLERR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (ep->events & EPOLLERR)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mask |= WL_EVENT_ERROR;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return fd_source->func(fd_source->fd, mask, source->data);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -227,6 +249,8 @@ wl_event_source_fd_update(struct wl_event_source *source, uint32_t mask)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return epoll_ctl(loop->epoll_fd, EPOLL_CTL_MOD, source->fd, &ep);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_TIMERFD
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /** \cond INTERNAL */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct wl_event_source_timer {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -658,6 +682,10 @@ wl_event_source_timer_update(struct wl_event_source *source, int ms_delay)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif /* HAVE_TIMERFD */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_SIGNALFD
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /** \cond INTERNAL */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct wl_event_source_signal {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -735,6 +763,8 @@ wl_event_loop_add_signal(struct wl_event_loop *loop,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return add_source(loop, &source->base, WL_EVENT_READABLE, data);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif /* HAVE_SIGNALFD */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /** \cond INTERNAL */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct wl_event_source_idle {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -838,6 +868,7 @@ wl_event_source_remove(struct wl_event_source *source)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ source->fd = -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_TIMERFD
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (source->interface == &timer_source_interface &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ source->fd != TIMER_REMOVED) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Disarm the timer (and the loop's timerfd, if necessary),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -848,6 +879,7 @@ wl_event_source_remove(struct wl_event_source *source)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * be dispatched in `wl_event_loop_dispatch` */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ source->fd = TIMER_REMOVED;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ wl_list_remove(&source->link);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ wl_list_insert(&loop->destroy_list, &source->link);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -900,7 +932,9 @@ wl_event_loop_create(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ wl_signal_init(&loop->destroy_signal);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_TIMERFD
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ wl_timer_heap_init(&loop->timers, loop);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return loop;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -924,7 +958,9 @@ wl_event_loop_destroy(struct wl_event_loop *loop)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ wl_signal_emit(&loop->destroy_signal, loop);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ wl_event_loop_process_destroy_list(loop);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_TIMERFD
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ wl_timer_heap_release(&loop->timers);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ close(loop->epoll_fd);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ free(loop);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -997,7 +1033,9 @@ wl_event_loop_dispatch(struct wl_event_loop *loop, int timeout)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct epoll_event ep[32];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct wl_event_source *source;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int i, count;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_TIMERFD
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bool has_timers = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ wl_event_loop_dispatch_idle(loop);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1005,6 +1043,7 @@ wl_event_loop_dispatch(struct wl_event_loop *loop, int timeout)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (count < 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_TIMERFD
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for (i = 0; i < count; i++) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ source = ep[i].data.ptr;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (source == &loop->timers.base)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1020,6 +1059,7 @@ wl_event_loop_dispatch(struct wl_event_loop *loop, int timeout)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (wl_timer_heap_dispatch(&loop->timers) < 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for (i = 0; i < count; i++) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ source = ep[i].data.ptr;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/wayland-shm.c b/src/wayland-shm.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 4b52b0f..ab09adc 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/src/wayland-shm.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/src/wayland-shm.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -30,7 +30,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define _GNU_SOURCE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include "config.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include "../config.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdbool.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/tests/event-loop-test.c b/tests/event-loop-test.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index a51ba8f..8603015 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/tests/event-loop-test.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/tests/event-loop-test.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -25,6 +25,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define _GNU_SOURCE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include "../config.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdint.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <assert.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -148,6 +151,8 @@ TEST(event_loop_free_source_with_data)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ assert(close(context.p2[1]) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_SIGNALFD
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ signal_callback(int signal_number, void *data)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -238,6 +243,10 @@ TEST(event_loop_multiple_same_signals)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ wl_event_loop_destroy(loop);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif /* HAVE_SIGNALFD */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_TIMERFD
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ timer_callback(void *data)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -499,6 +508,8 @@ TEST(event_loop_timer_cancellation)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ wl_event_loop_destroy(loop);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif /* HAVE_TIMERFD */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct event_loop_destroy_listener {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct wl_listener listener;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int done;
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/wayland/files/0002-wayland-os.c-LOCAL_PEERPID-may-not-be-defined.patch b/devel/wayland/files/0002-wayland-os.c-LOCAL_PEERPID-may-not-be-defined.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..d0752b15212
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/wayland/files/0002-wayland-os.c-LOCAL_PEERPID-may-not-be-defined.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,34 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From a8c4581be64a307aa4d38f0e1c5bc0b31cae9899 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <barracuda@macos-powerpc.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Wed, 27 Nov 2024 09:53:09 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] wayland-os.c: LOCAL_PEERPID may not be defined
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/wayland-os.c | 4 +++-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 3 insertions(+), 1 deletion(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/wayland-os.c b/src/wayland-os.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index ba2c814..81fdbee 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/src/wayland-os.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/src/wayland-os.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -137,7 +137,7 @@ wl_os_socket_peercred(int sockfd, uid_t *uid, gid_t *gid, pid_t *pid)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *pid = ucred.pid;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#elif defined(HAVE_GETPEEREID) && defined(LOCAL_PEERPID)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined(HAVE_GETPEEREID)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ wl_os_socket_peercred(int sockfd, uid_t *uid, gid_t *gid, pid_t *pid)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -148,9 +148,11 @@ wl_os_socket_peercred(int sockfd, uid_t *uid, gid_t *gid, pid_t *pid)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ len = sizeof(pid_t);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef LOCAL_PEERPID
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (getsockopt(sockfd, SOL_LOCAL, LOCAL_PEERPID, pid, &len) != 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/wayland/files/0003-os-wrappers-test-F_DUPFD_CLOEXEC-may-not-be-defined.patch b/devel/wayland/files/0003-os-wrappers-test-F_DUPFD_CLOEXEC-may-not-be-defined.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..ce6abb5b7e9
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/wayland/files/0003-os-wrappers-test-F_DUPFD_CLOEXEC-may-not-be-defined.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,30 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 64ceb44576e2d4da20dc81754b1b0635aca7392b Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <barracuda@macos-powerpc.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Wed, 27 Nov 2024 10:00:04 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] os-wrappers-test: F_DUPFD_CLOEXEC may not be defined
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ tests/os-wrappers-test.c | 4 ++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 4 insertions(+)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/tests/os-wrappers-test.c b/tests/os-wrappers-test.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 5021859..4efb0ac 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/tests/os-wrappers-test.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/tests/os-wrappers-test.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -119,12 +119,16 @@ __attribute__ ((visibility("default"))) int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ wrapped_calls_fcntl++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef F_DUPFD_CLOEXEC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (fall_back && (cmd == F_DUPFD_CLOEXEC)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ errno = EINVAL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ switch (cmd) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef F_DUPFD_CLOEXEC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case F_DUPFD_CLOEXEC:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case F_DUPFD:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case F_SETFD:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ va_start(ap, cmd);
</span></pre><pre style='margin:0'>
</pre>