@@ -90,8 +90,14 @@ static const char* detectWithBacklight(FFlist* result)
9090#include "common/library.h"
9191#include "util/mallocHelper.h"
9292
93+ #include <ddcutil_macros.h>
9394#include <ddcutil_c_api.h>
9495
96+ // Try to be compatible with ddcutil 2.0
97+ #if DDCUTIL_VMAJOR >= 2
98+ double ddca_set_default_sleep_multiplier (double multiplier ); // ddcutil 1.4
99+ #endif
100+
95101static const char * detectWithDdcci (FFBrightnessOptions * options , FFlist * result )
96102{
97103 FF_LIBRARY_LOAD (libddcutil , & instance .config .libDdcutil , "dlopen ddcutil failed" , "libddcutil" FF_LIBRARY_EXTENSION , 5 );
@@ -100,13 +106,15 @@ static const char* detectWithDdcci(FFBrightnessOptions* options, FFlist* result)
100106 FF_LIBRARY_LOAD_SYMBOL_MESSAGE (libddcutil , ddca_get_any_vcp_value_using_explicit_type )
101107 FF_LIBRARY_LOAD_SYMBOL_MESSAGE (libddcutil , ddca_free_any_vcp_value )
102108 FF_LIBRARY_LOAD_SYMBOL_MESSAGE (libddcutil , ddca_close_display )
103- FF_LIBRARY_LOAD_SYMBOL_MESSAGE (libddcutil , ddca_set_default_sleep_multiplier )
104- libddcutil = NULL ; // Don't dlclose libddcutil. See https://github.com/rockowitz/ddcutil/issues/330
105109
106- ffddca_set_default_sleep_multiplier (options -> ddcciSleep / 40.0 );
110+ __typeof__ (& ddca_set_default_sleep_multiplier ) ffddca_set_default_sleep_multiplier = dlsym (libddcutil , "ddca_set_default_sleep_multiplier" );
111+ if (ffddca_set_default_sleep_multiplier )
112+ ffddca_set_default_sleep_multiplier (options -> ddcciSleep / 40.0 );
113+
114+ libddcutil = NULL ; // Don't dlclose libddcutil. See https://github.com/rockowitz/ddcutil/issues/330
107115
108116 FF_AUTO_FREE DDCA_Display_Info_List * infoList = NULL ;
109- if (__builtin_expect ( ffddca_get_display_info_list2 (false, & infoList ) < 0 , 0 ) )
117+ if (ffddca_get_display_info_list2 (false, & infoList ) < 0 )
110118 return "ddca_get_display_info_list2(false, &infoList) failed" ;
111119
112120 if (infoList -> ct == 0 )
0 commit comments