summaryrefslogtreecommitdiff
path: root/app-misc/ddcutil
diff options
context:
space:
mode:
Diffstat (limited to 'app-misc/ddcutil')
-rw-r--r--app-misc/ddcutil/Manifest6
-rw-r--r--app-misc/ddcutil/ddcutil-2.1.4.ebuild7
-rw-r--r--app-misc/ddcutil/ddcutil-2.2.0.ebuild15
-rw-r--r--app-misc/ddcutil/files/ddcutil-2.2.0-fix-build-without-X.patch280
-rw-r--r--app-misc/ddcutil/files/ddcutil-2.2.0-fix-clang.patch28
5 files changed, 317 insertions, 19 deletions
diff --git a/app-misc/ddcutil/Manifest b/app-misc/ddcutil/Manifest
index e0fc40b66cdb..8fe5eba20fd7 100644
--- a/app-misc/ddcutil/Manifest
+++ b/app-misc/ddcutil/Manifest
@@ -1,12 +1,14 @@
AUX ddcutil-1.3.0-no-werror.patch 1835 BLAKE2B 1edbfb8c00db14f5e33dd229b83e5145b8a659f8ea4c2c2626b79abbdafb8b7872fe55e1dccd7cb6ec5f390c8a91591d61fad08d08b952457e6ad8df54075ae6 SHA512 a8664bafa314c3664c32b3a7c7a22bf7a3a9163dd57888e91726f0d82371b65f873342b0daba598ac02020cef5742bbecd6b2434c2392c46642951f9bba4d2f2
AUX ddcutil-1.4.1-no-werror.patch 773 BLAKE2B 8b1c37926e300db238c6be8340a1a0c41cd47ed2183cf50d57001af6f2d23b71643abedebf98496db720ee5d9e5d95a4d31c6def77a57c056b87e82b1f39d288 SHA512 510d094c6cc24ed0d1134e6b62acb77341c07b87ec4d78516f02d5742ebc4933df946625645f404e6b9fc2e918a14de4f748487aeee821bc5cb2f12c6fd90b39
AUX ddcutil-2.1.4-fix-clang.patch 2236 BLAKE2B c636641e59d398911b64c5d1b462af1c55849ac0fd4a4f42610d0580616e95fa318ae6cbe68416229f5b5a59cae2f6ce2fe2b33e789143eaf3adc6981e9a25c7 SHA512 337ed0af7455318c26b62cc9a16a1a09db5bd7380a1dce4ee36dd05d98bcbc712a3e4f52ad782c698f759c557839427945cf59dee740753562e5d0a7081c95af
+AUX ddcutil-2.2.0-fix-build-without-X.patch 9622 BLAKE2B 76ec7c74de47e8256976a649b5c19e03f884a4039700bd3b80d73686dd7062104e24906bfd65d6abd9e3e0ba1f9f24e3171cd7991b95c7b65ee36e97f55adb10 SHA512 a2c656c36b10f48a4ec6520c1a6e8f651c4c683dad8997a3efcf05873a037d113938222429b6de1ebb8dbda9be9973bd94af86d5ebbf3c18534909f0406f7b84
+AUX ddcutil-2.2.0-fix-clang.patch 968 BLAKE2B 4686f41c3cb42a39cc81ffea0f3d111c274d571bce42279a6f5ef4eccf5cd2e9085ca0260026a627abbe10088e082e2bba8fd3cd8cf36366c13031f9a1532d31 SHA512 feb6255db1d6e53abee9915524ca2ab3aaab0ff78dd35af34a46a845a1e36ec3d7f3921c90f1b589b9b408b8aada568b35b3e6c48e4365856aa45670a7020f50
DIST ddcutil-1.3.0.tar.gz 816789 BLAKE2B 1cb3b64961503416b85b792e1002ec67788f8cf7d622be1c4930808f99e16974ff57ed582d1d02a67580e3f4d92bef54b3669fd7378462bf4c98a3643d6786be SHA512 93d69958b2e1dcb66ad700712742536179383c93f2ec1f746b6a6c78adfd6daa861275208850cc807e0c16a11ea84904cb13ceef512ca76e1daa910410303d41
DIST ddcutil-1.4.5.tar.gz 817492 BLAKE2B b6442d9f7ec3687a3e75d9784dc9f62563f42c72c82a8a2ea24a392c3c4f186578c2c2f6592ba12c324568a20b7b25082acce9e7b753c41c1ac925d9d6de62dd SHA512 c355f104b60dbc3c893dea473d841181cfcaacd0cb2e97bc41ea829185c7ccdcff19ab19189ee572e7f2f6b41cbb2bd6c569ad3c09f6d645f9e342b7d1a5310f
DIST ddcutil-2.1.4.tar.gz 924298 BLAKE2B d11c4daa6a6b4c5c694cf45fa3a76709bcacc8a63bbe7ea331bcf2dd45a7e99dcdf890d97a9515dda909e6a54ca90c30d966e0dd5437fdd0972232878c4de581 SHA512 8c352bfacc2a5cdd22b8d84f2facd58de6d425d0d3f98de543cf36a3e6b15aa10fc86e87780c82f872f0bf0db984e1cc800aaff914bafe4dbf17602e2a7caeb0
DIST ddcutil-2.2.0.tar.gz 1016240 BLAKE2B cc2c7cd1b5bcdd4a457b2b5547236a44e831893d6f39a7fb16af7de4524c900cd267c07ef027aa7481dff06701ff0538a244a6c5cabe8bc8afef73ca05c41f9a SHA512 e650f1743e1d807b4a7030389729f0aac4e2558bc5374ea9a27a16c97818ba9ede87ddfe38aebffbb9e182c8efbfab913ba729f8cc5b8ccffe44a62280e2037c
EBUILD ddcutil-1.3.0.ebuild 2933 BLAKE2B 3a32592eb97a2df63a18c82e473d4ba13ab556307960a0b727fc753ba6979a23098b36c8ed36721a6798612d6a5ecc83bff17b62900737f828fafb88321639ab SHA512 f4b220503b91620611bfbb0b90fde47906eab3471ac704f47c090567f0090269a6e823970c30722652cec69971fc13d4ee87edbc10a41f5a85d8675809e6485a
EBUILD ddcutil-1.4.5.ebuild 2945 BLAKE2B 014ff0e0a740916303ce6af069f2066ff7fbea4c5d714cc13e45b288ef784484a9e7f2a94da04bef5c2f5e9bb57595b935a62d3dbb7e4c9db7535169b5ed7419 SHA512 b60685531a199a33891a8073197b813d4d56bb9e8a9888ed19e00b4b3635525ba4305899c7d50c87061a567808dcc96d6920e5480050f46e491bc92bf0476492
-EBUILD ddcutil-2.1.4.ebuild 3168 BLAKE2B 48b8fdcc7243b84cf5ce269f232315670d4fb70396aca446ae7b2e8db21e595d31c47c6db9e2ac556ef77db19ba6d048ca2b780b90e366801b6e8a67738ea7bd SHA512 27fe451ab2dd14ea4bd28b8a513f4346f4922fac02ad327e2f3bd589a522909996b0fb47b95f14d92a1d22746445046985602190bdf006f0252a9b7844e524fb
-EBUILD ddcutil-2.2.0.ebuild 3057 BLAKE2B 4a8a52e60212e083225038242b736d3cf609fa7c403c74ed5b069ec2bdb98f01f5a7fabee6272dcbfcfa0a6b20d4a4b5db32ceaddcd40a84a412632a3a034cbf SHA512 8b402c473546b63d879d55b66530854fd1a435eff60d9c01313c1ea314f9d151dd62754a8f1fe9fbc1355c5d8633eef3795be422ad06de64c5d9877a6cb6cce8
+EBUILD ddcutil-2.1.4.ebuild 3018 BLAKE2B cf6f39da695c598fb30a2c9191a8160f9f566e0001bdb03012cf058b931da156ef226c3dfd4ecdd0db73b8e73a27156d4f5a0bcd13eb6445b62b4674939a0727 SHA512 517437bb16c51d2b57e1f4ce1e4fe881be8affb247188202514fa5f2eb1f9f8130c6e91efb57deaa9faeadb8272e83bc9168adbeb7f3f57e1da822803fa10795
+EBUILD ddcutil-2.2.0.ebuild 2688 BLAKE2B 84262f6be04e867f1a21de4fafa02134448c39874e227850ef988fcb0f31733075c402feb8bc658ed4c33e92c7740562eece5263073bdc3d0ec7b457cd7fa274 SHA512 91ea2b7bdede79705eeb791920bab9ae3f78b7b03f18853284768ff9b847523d638bc34227f7e4c37432563e3136311506076837fe5a2441726612dce1b904f7
MISC metadata.xml 1293 BLAKE2B c7fc827c0bcf7914b2c0b3f9ecec9dee145824c33a516ef3d9cd43fcd368977d9f17a76b6b8775fa773f8ce8b109d16b1e5c8b14dee5d0e9e56aa7a4024a190d SHA512 a795c9fb1479ae198446160e9a020ce911b02ffd0d51af9cd634504aca1ded4c38d3295eca0cbc6ad33506684f55cf96676c868ec349229d0dfdaa17f8afa806
diff --git a/app-misc/ddcutil/ddcutil-2.1.4.ebuild b/app-misc/ddcutil/ddcutil-2.1.4.ebuild
index b8c9ae48701c..045a5bb34696 100644
--- a/app-misc/ddcutil/ddcutil-2.1.4.ebuild
+++ b/app-misc/ddcutil/ddcutil-2.1.4.ebuild
@@ -5,7 +5,7 @@ EAPI=8
# Check for bumps & cleanup with app-misc/ddcui
-inherit autotools flag-o-matic linux-info udev
+inherit autotools linux-info udev
DESCRIPTION="Program for querying and changing monitor settings"
HOMEPAGE="https://www.ddcutil.com/"
@@ -43,7 +43,7 @@ BDEPEND="virtual/pkgconfig"
PATCHES=(
"${FILESDIR}"/${PN}-1.4.1-no-werror.patch
- "${FILESDIR}"/${PN}-2.1.4-fix-clang.patch
+ "${FILESDIR}"/${P}-fix-clang.patch
)
pkg_pretend() {
@@ -66,9 +66,6 @@ src_prepare() {
}
src_configure() {
- # too many error on -Wcompound-token-split-by-macro by clang
- append-cflags $(test-flags-CC -Wno-compound-token-split-by-macro)
-
local myeconfargs=(
# FAILS: doxyfile: No such file or directory
# $(use_enable doc doxygen)
diff --git a/app-misc/ddcutil/ddcutil-2.2.0.ebuild b/app-misc/ddcutil/ddcutil-2.2.0.ebuild
index 48b460d56661..6adf7566eaf0 100644
--- a/app-misc/ddcutil/ddcutil-2.2.0.ebuild
+++ b/app-misc/ddcutil/ddcutil-2.2.0.ebuild
@@ -31,7 +31,6 @@ RDEPEND="
)
user-permissions? (
acct-group/i2c
- usb-monitor? ( acct-group/video )
)
X? (
x11-libs/libXrandr
@@ -44,6 +43,9 @@ BDEPEND="virtual/pkgconfig"
PATCHES=(
"${FILESDIR}"/${PN}-1.4.1-no-werror.patch
+ "${FILESDIR}"/${PN}-2.1.4-fix-clang.patch
+ "${FILESDIR}"/${P}-fix-clang.patch
+ "${FILESDIR}"/${P}-fix-build-without-X.patch
)
pkg_pretend() {
@@ -83,9 +85,6 @@ src_install() {
default
if use user-permissions; then
udev_dorules data/usr/lib/udev/rules.d/60-ddcutil-i2c.rules
- if use usb-monitor; then
- udev_dorules data/usr/lib/udev/rules.d/60-ddcutil-usb.rules
- fi
fi
}
@@ -97,14 +96,6 @@ pkg_postinst() {
einfo "the new udev rule."
einfo "For more information read: http://www.ddcutil.com/i2c_permissions/"
- if use usb-monitor; then
- einfo "To allow non-root users access to USB monitors, add those users"
- einfo "to the video group: usermod -aG video user"
- einfo "Restart the computer, reload the hiddev and hidraw modules, or replug"
- einfo "the monitor to activate the new udev rule."
- einfo "For more information read: http://www.ddcutil.com/usb/"
- fi
-
udev_reload
fi
diff --git a/app-misc/ddcutil/files/ddcutil-2.2.0-fix-build-without-X.patch b/app-misc/ddcutil/files/ddcutil-2.2.0-fix-build-without-X.patch
new file mode 100644
index 000000000000..b8e8b2d75c06
--- /dev/null
+++ b/app-misc/ddcutil/files/ddcutil-2.2.0-fix-build-without-X.patch
@@ -0,0 +1,280 @@
+https://github.com/rockowitz/ddcutil/issues/504
+https://bugs.gentoo.org/950320
+
+From a35d1dc432d4dd419e4874b37c62d23f3ae70469 Mon Sep 17 00:00:00 2001
+From: "Sanford Rockowitz (/shared/home/rock/dot_gitconfig)"
+ <rockowitz@minsoft.com>
+Date: Thu, 27 Feb 2025 09:28:14 -0500
+Subject: [PATCH] build with configure option --disable-x11
+
+eliminates watch-mode XEVENT
+
+addresses issue #504
+---
+ src/base/parms.h | 6 +++++-
+ src/cmdline/cmd_parser_goption.c | 12 ++++++++++++
+ src/dw/Makefile.am | 10 ++++++++--
+ src/dw/dw_common.c | 2 ++
+ src/dw/dw_main.c | 14 ++++++++++++++
+ src/dw/dw_poll.c | 4 ++++
+ src/dw/dw_services.c | 4 ++++
+ 7 files changed, 49 insertions(+), 3 deletions(-)
+
+diff --git a/src/base/parms.h b/src/base/parms.h
+index 3a8fbdd5..fcfac321 100644
+--- a/src/base/parms.h
++++ b/src/base/parms.h
+@@ -3,7 +3,7 @@
+ * System configuration and tuning
+ */
+
+-// Copyright (C) 2014-2024 Sanford Rockowitz <rockowitz@minsoft.com>
++// Copyright (C) 2014-2025 Sanford Rockowitz <rockowitz@minsoft.com>
+ // SPDX-License-Identifier: GPL-2.0-or-later
+
+ #ifndef PARMS_H_
+@@ -109,7 +109,11 @@
+ #define DEFAULT_DDCUTIL_SYSLOG_LEVEL DDCA_SYSLOG_WARNING
+ #define DEFAULT_LIBDDCUTIL_SYSLOG_LEVEL DDCA_SYSLOG_NOTICE
+
++#ifdef USE_X11
+ #define DEFAULT_WATCH_MODE Watch_Mode_Dynamic
++#else
++#define DEFAULT_WATCH_MODE Watch_Mode_Poll
++#endif
+
+ //
+ // Asynchronous Initialization
+diff --git a/src/cmdline/cmd_parser_goption.c b/src/cmdline/cmd_parser_goption.c
+index 27973d9b..b6ae37b7 100644
+--- a/src/cmdline/cmd_parser_goption.c
++++ b/src/cmdline/cmd_parser_goption.c
+@@ -508,8 +508,10 @@ static bool parse_watch_mode(
+
+ if ( is_abbrev(v2, "POLL", 3))
+ parsed_cmd->watch_mode = Watch_Mode_Poll;
++#ifdef USE_X11
+ else if (is_abbrev(v2, "XEVENT", 3))
+ parsed_cmd->watch_mode = Watch_Mode_Xevent;
++#endif
+ // else if (is_abbrev(v2, "UDEV", 3))
+ // parsed_cmd->watch_mode = Watch_Mode_Udev;
+ else if (is_abbrev(v2, "DYNAMIC", 3))
+@@ -1026,9 +1028,15 @@ parse_command(
+ case Watch_Mode_Udev: default_watch_mode_keyword = "UDEV"; break;
+ }
+ char watch_mode_expl[80];
++#ifdef USE_X11
+ g_snprintf(watch_mode_expl, 80, "DYNAMIC|XEVENT|POLL, default: %s", default_watch_mode_keyword);
++#else
++ g_snprintf(watch_mode_expl, 80, "DYNAMIC|POLL, default: %s", default_watch_mode_keyword);
++#endif
+ gboolean enable_watch_displays = true;
++#ifdef USE_X11
+ gint xevent_watch_loop_millis_work = DEFAULT_XEVENT_WATCH_LOOP_MILLISEC;
++#endif
+ gint poll_watch_loop_millis_work = DEFAULT_POLL_WATCH_LOOP_MILLISEC;
+
+ gboolean f1_flag = false;
+@@ -1288,8 +1296,10 @@ parse_command(
+ G_OPTION_ARG_NONE, &disable_api_flag, "Completely disable API", NULL },
+ {"watch-mode", '\0', G_OPTION_FLAG_HIDDEN,
+ G_OPTION_ARG_STRING, &watch_mode_work, "How to watch for display changes", watch_mode_expl},
++#ifdef USE_X11
+ {"xevent-watch-loop-millisec", '\0', G_OPTION_FLAG_HIDDEN,
+ G_OPTION_ARG_INT, &xevent_watch_loop_millis_work, "Loop delay for mode XEVENT", "milliseconds"},
++#endif
+ {"poll-watch-loop-millisec", '\0', G_OPTION_FLAG_HIDDEN,
+ G_OPTION_ARG_INT, &poll_watch_loop_millis_work, "Loop delay for mode POLL", "milliseconds"},
+ #ifdef ENABLE_USB
+@@ -2054,6 +2064,7 @@ parse_command(
+ }
+ }
+
++#ifdef USE_X11
+ if (xevent_watch_loop_millis_work <= 0) {
+ EMIT_PARSER_ERROR(errmsgs,
+ "--xevent-watch-loop-millisec not a positive number: %d", xevent_watch_loop_millis_work);
+@@ -2061,6 +2072,7 @@ parse_command(
+ }
+ else
+ parsed_cmd->xevent_watch_loop_millisec = (uint16_t) xevent_watch_loop_millis_work;
++#endif
+
+ if (poll_watch_loop_millis_work <= 0) {
+ EMIT_PARSER_ERROR(errmsgs,
+diff --git a/src/dw/Makefile.am b/src/dw/Makefile.am
+index 0327f1af..063beef4 100644
+--- a/src/dw/Makefile.am
++++ b/src/dw/Makefile.am
+@@ -27,8 +27,14 @@ libdw_la_SOURCES += \
+ dw_dref.c \
+ dw_udev.c \
+ dw_recheck.c \
+- dw_services.c \
+- dw_xevent.c
++ dw_services.c
++endif
++
++if ENABLE_UDEV_COND
++if USE_X11_COND
++libdw_la_SOURCES += \
++ dw_xevent.c
++endif
+ endif
+
+ # Rename to "all=local" for development
+diff --git a/src/dw/dw_common.c b/src/dw/dw_common.c
+index 62f87226..29c4ff75 100644
+--- a/src/dw/dw_common.c
++++ b/src/dw/dw_common.c
+@@ -59,7 +59,9 @@
+
+ #include "dw_status_events.h"
+ #include "dw_dref.h"
++#ifdef USE_X11
+ #include "dw_xevent.h"
++#endif
+
+ #include "dw_common.h"
+
+diff --git a/src/dw/dw_main.c b/src/dw/dw_main.c
+index 996d6f95..d3218c89 100644
+--- a/src/dw/dw_main.c
++++ b/src/dw/dw_main.c
+@@ -46,7 +46,9 @@
+ #include "dw_udev.h"
+ #include "dw_recheck.h"
+ #include "dw_poll.h"
++#ifdef USE_X11
+ #include "dw_xevent.h"
++#endif
+
+ #include "dw_main.h"
+
+@@ -79,8 +81,10 @@ resolve_watch_mode(DDC_Watch_Mode initial_mode, XEvent_Data ** xev_data_loc) {
+ DBGTRC_STARTING(debug, TRACE_GROUP, "initial_mode=%s xev_data_loc=%p", watch_mode_name(initial_mode), xev_data_loc);
+
+ DDC_Watch_Mode resolved_watch_mode = Watch_Mode_Poll;
++#ifdef USE_X11
+ XEvent_Data * xevdata = NULL;
+ *xev_data_loc = NULL;
++#endif
+
+ #ifndef ENABLE_UDEV
+ if (initial_mode == Watch_Mode_Udev)
+@@ -89,6 +93,7 @@ resolve_watch_mode(DDC_Watch_Mode initial_mode, XEvent_Data ** xev_data_loc) {
+
+ if (initial_mode == Watch_Mode_Dynamic) {
+ resolved_watch_mode = Watch_Mode_Poll; // always works, may be slow
++#ifdef USE_X11
+ char * xdg_session_type = getenv("XDG_SESSION_TYPE");
+ DBGTRC_NOPREFIX(debug, DDCA_TRC_NONE, "XDG_SESSION_TYPE=|%s|", xdg_session_type);
+ if (xdg_session_type && // can xdg_session_type ever not be set
+@@ -111,6 +116,7 @@ resolve_watch_mode(DDC_Watch_Mode initial_mode, XEvent_Data ** xev_data_loc) {
+ // sysfs_fully_reliable = is_sysfs_reliable();
+ // if (!sysfs_fully_reliable)
+ // dw_watch_mode = Watch_Mode_Poll;
++#endif
+ }
+ else {
+ resolved_watch_mode = initial_mode;
+@@ -124,6 +130,7 @@ resolve_watch_mode(DDC_Watch_Mode initial_mode, XEvent_Data ** xev_data_loc) {
+ }
+ #endif
+
++#ifdef USE_X11
+ if (resolved_watch_mode == Watch_Mode_Xevent) {
+ xevdata = dw_init_xevent_screen_change_notification();
+ // *xev_data_loc = ddc_init_xevent_screen_change_notification();
+@@ -132,15 +139,18 @@ resolve_watch_mode(DDC_Watch_Mode initial_mode, XEvent_Data ** xev_data_loc) {
+ MSG_W_SYSLOG(DDCA_SYSLOG_WARNING, "X11 RANDR api unavailable. Switching to Watch_Mode_Poll");
+ }
+ }
++#endif
+
+ // DBG( "xevdata=%p, watch_mode = %s", xevdata, dw_watch_mode_name(resolved_watch_mode));
+
++#ifdef USE_X11
+ *xev_data_loc = xevdata;
+ // ASSERT_IFF(resolved_watch_mode == Watch_Mode_Xevent, xevdata);
+ ASSERT_IFF(resolved_watch_mode == Watch_Mode_Xevent, *xev_data_loc);
+ if (*xev_data_loc && IS_DBGTRC(debug, DDCA_TRC_NONE)) {
+ dw_dbgrpt_xevent_data(*xev_data_loc, 0);
+ }
++#endif
+ DBGTRC_DONE(debug, TRACE_GROUP, "resolved_watch_mode: %s. *xev_data_loc: %p",
+ watch_mode_name(resolved_watch_mode), *xev_data_loc);
+ return resolved_watch_mode;
+@@ -278,6 +288,7 @@ dw_stop_watch_displays(bool wait, DDCA_Display_Event_Class* enabled_classes_loc)
+ if (watch_thread) {
+ DBGTRC_NOPREFIX(debug, DDCA_TRC_NONE, "resolved_watch_mode = %s",
+ watch_mode_name(global_wdd->watch_mode));
++#ifdef USE_X11
+ if (global_wdd->watch_mode == Watch_Mode_Xevent) {
+ if (terminate_using_x11_event) { // for testing, does not currently work
+ dw_send_x11_termination_message(global_wdd->evdata);
+@@ -290,6 +301,9 @@ dw_stop_watch_displays(bool wait, DDCA_Display_Event_Class* enabled_classes_loc)
+ else {
+ terminate_watch_thread = true; // signal watch thread to terminate
+ }
++#else
++ terminate_watch_thread = true;
++#endif
+
+ // DBGTRC_NOPREFIX(debug, TRACE_GROUP, "Waiting %d millisec for watch thread to terminate...", 4000);
+ // usleep(4000*1000); // greater than the sleep in watch_displays_using_poll()
+diff --git a/src/dw/dw_poll.c b/src/dw/dw_poll.c
+index 677a6ce6..336b5c92 100644
+--- a/src/dw/dw_poll.c
++++ b/src/dw/dw_poll.c
+@@ -62,7 +62,9 @@
+ #include "dw_dref.h"
+ #include "dw_recheck.h"
+ #include "dw_status_events.h"
++#ifdef USE_X11
+ #include "dw_xevent.h"
++#endif
+
+ #include "dw_poll.h"
+
+@@ -276,6 +278,7 @@ gpointer dw_watch_display_connections(gpointer data) {
+ continue;
+ dw_terminate_if_invalid_thread_or_process(cur_pid, cur_tid);
+
++#ifdef USE_X11
+ if (wdd->watch_mode == Watch_Mode_Xevent) {
+ if (terminate_using_x11_event) {
+ bool event_found = dw_next_X11_event_of_interest(wdd->evdata);
+@@ -295,6 +298,7 @@ gpointer dw_watch_display_connections(gpointer data) {
+ continue;
+ }
+ }
++#endif
+
+ DBGTRC_NOPREFIX(debug, DDCA_TRC_NONE, "locking process_event_mutex");
+ g_mutex_lock(&process_event_mutex);
+diff --git a/src/dw/dw_services.c b/src/dw/dw_services.c
+index 75601879..93085e00 100644
+--- a/src/dw/dw_services.c
++++ b/src/dw/dw_services.c
+@@ -15,7 +15,9 @@
+ #include "dw/dw_recheck.h"
+ #include "dw/dw_status_events.h"
+ #include "dw/dw_udev.h"
++#ifdef USE_X11
+ #include "dw/dw_xevent.h"
++#endif
+
+ #include "dw_services.h"
+
+@@ -31,7 +33,9 @@ void init_dw_services() {
+ init_dw_poll();
+ init_dw_recheck();
+ init_dw_udev();
++#ifdef USE_X11
+ init_dw_xevent();
++#endif
+
+ DBGMSF(debug, "Done");
+ }
diff --git a/app-misc/ddcutil/files/ddcutil-2.2.0-fix-clang.patch b/app-misc/ddcutil/files/ddcutil-2.2.0-fix-clang.patch
new file mode 100644
index 000000000000..61916e252d5d
--- /dev/null
+++ b/app-misc/ddcutil/files/ddcutil-2.2.0-fix-clang.patch
@@ -0,0 +1,28 @@
+From 3ac5a76adbc93e194c1136967f783e69317cd48f Mon Sep 17 00:00:00 2001
+From: "Z. Liu" <zhixu.liu@gmail.com>
+Date: Wed, 26 Feb 2025 15:52:09 +0800
+Subject: [PATCH] src/dw/dw_udev.c: fix warning on clang19
+
+dw_udev.c:253:61: warning: variable 'bs_new_buses_w_edid' is uninitialized when used within its own initialization [-Wuninitialized]
+
+Signed-off-by: Z. Liu <zhixu.liu@gmail.com>
+---
+ src/dw/dw_udev.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/dw/dw_udev.c b/src/dw/dw_udev.c
+index cc112b55..34d6daa4 100644
+--- a/src/dw/dw_udev.c
++++ b/src/dw/dw_udev.c
+@@ -250,7 +250,7 @@ Bit_Set_256 dw_i2c_check_bus_changes(
+ bs_new_buses_w_edid = bs_stabilized_buses_w_edid;
+ #endif
+
+- BS256 bs_new_buses_w_edid = dw_stabilized_buses_bs(bs_new_buses_w_edid, detected_displays_removed_flag);
++ bs_new_buses_w_edid = dw_stabilized_buses_bs(bs_new_buses_w_edid, detected_displays_removed_flag);
+ }
+ }
+
+--
+2.45.2
+