summaryrefslogtreecommitdiff
path: root/app-misc/ddcutil
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2025-03-02 19:29:42 +0000
committerV3n3RiX <venerix@koprulu.sector>2025-03-02 19:29:42 +0000
commit1c70934cf5610c0fecd25c223ec275afa3d6ebd0 (patch)
treeb66f30f60424010c65d89acbce1dafedc43a2822 /app-misc/ddcutil
parentd628c1f8493d09e3deb5d19971cd21691d8758e4 (diff)
gentoo auto-resync : 02:03:2025 - 19:29:42
Diffstat (limited to 'app-misc/ddcutil')
-rw-r--r--app-misc/ddcutil/Manifest2
-rw-r--r--app-misc/ddcutil/files/ddcutil-2.2.0-fix-build-without-X.patch145
2 files changed, 130 insertions, 17 deletions
diff --git a/app-misc/ddcutil/Manifest b/app-misc/ddcutil/Manifest
index 8fe5eba20fd7..6ddf47d8dc00 100644
--- a/app-misc/ddcutil/Manifest
+++ b/app-misc/ddcutil/Manifest
@@ -1,7 +1,7 @@
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-build-without-X.patch 13594 BLAKE2B 859b54d0250a4b83c944e5b77f20698311dc81cdf2efa0155cefb0e474e0b6a209866d36ed25bc836a048bc7b0ea50a8ab64a9c773b46c4187da603cc50ec87a SHA512 c3c9608a82ee1eee5ff7fe6103a5d83aee754b98e3547f6720a475c7053ee66e2720d9f359b1327f23a1cd53ae069b354ab9b83541b793558eba3e289f37cfb3
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
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
index b8e8b2d75c06..172e704c543f 100644
--- 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
@@ -10,15 +10,17 @@ 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_common.c | 4 ++++
+ src/dw/dw_common.h | 6 +++++-
+ src/dw/dw_main.c | 31 ++++++++++++++++++++++++++++++-
+ src/dw/dw_poll.c | 6 ++++++
src/dw/dw_services.c | 4 ++++
- 7 files changed, 49 insertions(+), 3 deletions(-)
+ 8 files changed, 74 insertions(+), 5 deletions(-)
diff --git a/src/base/parms.h b/src/base/parms.h
index 3a8fbdd5..fcfac321 100644
@@ -125,7 +127,7 @@ index 0327f1af..063beef4 100644
# Rename to "all=local" for development
diff --git a/src/dw/dw_common.c b/src/dw/dw_common.c
-index 62f87226..29c4ff75 100644
+index 62f87226..ddb456e3 100644
--- a/src/dw/dw_common.c
+++ b/src/dw/dw_common.c
@@ -59,7 +59,9 @@
@@ -138,8 +140,45 @@ index 62f87226..29c4ff75 100644
#include "dw_common.h"
+@@ -132,7 +134,9 @@ void dw_free_watch_displays_data(Watch_Displays_Data * wdd) {
+ if (wdd) {
+ assert( memcmp(wdd->marker, WATCH_DISPLAYS_DATA_MARKER, 4) == 0 );
+ wdd->marker[3] = 'x';
++#ifdef USE_X11
+ free(wdd->evdata);
++#endif
+ free(wdd);
+ }
+ }
+diff --git a/src/dw/dw_common.h b/src/dw/dw_common.h
+index bd310923..e12ca63e 100644
+--- a/src/dw/dw_common.h
++++ b/src/dw/dw_common.h
+@@ -14,7 +14,9 @@
+
+ #include "base/displays.h"
+
++#ifdef USE_X11
+ #include "dw_xevent.h"
++#endif
+
+ extern uint16_t initial_stabilization_millisec;
+ extern uint16_t stabilization_poll_millisec;
+@@ -40,9 +42,11 @@ typedef struct {
+ pid_t main_process_id;
+ pid_t main_thread_id;
+ DDCA_Display_Event_Class event_classes;
+- DDC_Watch_Mode watch_mode;
++ DDC_Watch_Mode watch_mode;
+ int watch_loop_millisec;
++#ifdef USE_X11
+ XEvent_Data * evdata;
++#endif
+ } Watch_Displays_Data;
+
+ void dw_free_watch_displays_data(Watch_Displays_Data * wdd);
diff --git a/src/dw/dw_main.c b/src/dw/dw_main.c
-index 996d6f95..d3218c89 100644
+index 996d6f95..c5e098cb 100644
--- a/src/dw/dw_main.c
+++ b/src/dw/dw_main.c
@@ -46,7 +46,9 @@
@@ -152,7 +191,20 @@ index 996d6f95..d3218c89 100644
#include "dw_main.h"
-@@ -79,8 +81,10 @@ resolve_watch_mode(DDC_Watch_Mode initial_mode, XEvent_Data ** xev_data_loc) {
+@@ -65,7 +67,12 @@ static DDCA_Display_Event_Class active_watch_displays_classes = DDCA_EVENT_CLASS
+ static Watch_Displays_Data * global_wdd; // needed to pass to dw_stop_watch_displays()
+
+
++// ***
++// Iftesting out resolve_watch_mode() if X11 is not defined is a quick and dirty hack.
++// It relies on the fact that currently the only mode other than XEVENT is POLL
++// ***
+
++#ifdef USE_X11
+ /** Determines the actual watch mode to be used
+ *
+ * @param initial_mode mode requested
+@@ -79,8 +86,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;
@@ -163,7 +215,7 @@ index 996d6f95..d3218c89 100644
#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) {
+@@ -89,6 +98,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
@@ -171,7 +223,7 @@ index 996d6f95..d3218c89 100644
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) {
+@@ -111,6 +121,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;
@@ -179,7 +231,7 @@ index 996d6f95..d3218c89 100644
}
else {
resolved_watch_mode = initial_mode;
-@@ -124,6 +130,7 @@ resolve_watch_mode(DDC_Watch_Mode initial_mode, XEvent_Data ** xev_data_loc) {
+@@ -124,6 +135,7 @@ resolve_watch_mode(DDC_Watch_Mode initial_mode, XEvent_Data ** xev_data_loc) {
}
#endif
@@ -187,7 +239,7 @@ index 996d6f95..d3218c89 100644
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) {
+@@ -132,20 +144,23 @@ 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");
}
}
@@ -206,7 +258,47 @@ index 996d6f95..d3218c89 100644
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)
+ }
+-
++#endif
+
+ /** Starts thread that watches for changes in display connection status.
+ *
+@@ -162,7 +177,9 @@ dw_start_watch_displays(DDCA_Display_Event_Class event_classes) {
+ watch_mode_name(watch_displays_mode), watch_thread, event_classes, SBOOL(all_video_adapters_implement_drm));
+ DBGTRC_NOPREFIX(debug, TRACE_GROUP, "thread_id = %d, traced_function_stack=%p", TID(), traced_function_stack);
+ Error_Info * err = NULL;
++#ifdef USE_X11
+ XEvent_Data * xev_data = NULL;
++#endif
+
+ if (!all_video_adapters_implement_drm) {
+ err = ERRINFO_NEW(DDCRC_INVALID_OPERATION, "Requires DRM video drivers");
+@@ -174,8 +191,12 @@ dw_start_watch_displays(DDCA_Display_Event_Class event_classes) {
+ goto bye;
+ }
+
++#ifdef USE_X11
+ DDC_Watch_Mode resolved_watch_mode = resolve_watch_mode(watch_displays_mode, &xev_data);
+ ASSERT_IFF(resolved_watch_mode == Watch_Mode_Xevent, xev_data);
++#else
++ DDC_Watch_Mode resolved_watch_mode = Watch_Mode_Poll;
++#endif
+
+ int calculated_watch_loop_millisec = dw_calc_watch_loop_millisec(resolved_watch_mode);
+ // DBGTRC_NOPREFIX(debug, DDCA_TRC_NONE, "calc_watch_loop_millisec() returned %d", calculated_watch_loop_millisec);
+@@ -216,8 +237,10 @@ dw_start_watch_displays(DDCA_Display_Event_Class event_classes) {
+ wdd->event_classes = event_classes;
+ wdd->watch_mode = resolved_watch_mode;
+ wdd->watch_loop_millisec = calculated_watch_loop_millisec;
++#ifdef USE_X11
+ if (xev_data)
+ wdd->evdata = xev_data;
++#endif
+ global_wdd = wdd;
+
+ #ifdef CALLBACK_DISPLAYS_THREAD
+@@ -278,6 +301,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));
@@ -214,7 +306,7 @@ index 996d6f95..d3218c89 100644
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)
+@@ -290,6 +314,9 @@ dw_stop_watch_displays(bool wait, DDCA_Display_Event_Class* enabled_classes_loc)
else {
terminate_watch_thread = true; // signal watch thread to terminate
}
@@ -224,8 +316,18 @@ index 996d6f95..d3218c89 100644
// 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()
+@@ -433,7 +460,9 @@ void init_dw_main() {
+ RTTI_ADD_FUNC(dw_start_watch_displays);
+ RTTI_ADD_FUNC(dw_stop_watch_displays);
+ RTTI_ADD_FUNC(dw_get_active_watch_classes);
++#ifdef USE_X11
+ RTTI_ADD_FUNC(resolve_watch_mode);
++#endif
+ RTTI_ADD_FUNC(dw_redetect_displays);
+ }
+
diff --git a/src/dw/dw_poll.c b/src/dw/dw_poll.c
-index 677a6ce6..336b5c92 100644
+index 677a6ce6..e1244491 100644
--- a/src/dw/dw_poll.c
+++ b/src/dw/dw_poll.c
@@ -62,7 +62,9 @@
@@ -238,7 +340,18 @@ index 677a6ce6..336b5c92 100644
#include "dw_poll.h"
-@@ -276,6 +278,7 @@ gpointer dw_watch_display_connections(gpointer data) {
+@@ -206,8 +208,10 @@ gpointer dw_watch_display_connections(gpointer data) {
+ Watch_Displays_Data * wdd = data;
+ assert(wdd && memcmp(wdd->marker, WATCH_DISPLAYS_DATA_MARKER, 4) == 0);
+ assert(wdd->watch_mode == Watch_Mode_Xevent || wdd->watch_mode == Watch_Mode_Poll);
++#ifdef USE_X11
+ if (wdd->watch_mode == Watch_Mode_Xevent)
+ assert(wdd->evdata);
++#endif
+ GPtrArray * displays_to_recheck = g_ptr_array_new();
+
+ DBGTRC_STARTING(debug, TRACE_GROUP,
+@@ -276,6 +280,7 @@ gpointer dw_watch_display_connections(gpointer data) {
continue;
dw_terminate_if_invalid_thread_or_process(cur_pid, cur_tid);
@@ -246,7 +359,7 @@ index 677a6ce6..336b5c92 100644
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) {
+@@ -295,6 +300,7 @@ gpointer dw_watch_display_connections(gpointer data) {
continue;
}
}