@@ -19,7 +19,9 @@ pub struct DdcUtil {
19
19
20
20
impl DdcUtil {
21
21
pub fn new ( name : & str , min_brightness : u64 ) -> Result < Self , Box < dyn Error > > {
22
- let mut display = find_display_by_name ( name) . ok_or ( "Unable to find display" ) ?;
22
+ let mut display = find_display_by_name ( name, true )
23
+ . or_else ( || find_display_by_name ( name, false ) )
24
+ . ok_or ( "Unable to find display" ) ?;
23
25
let max_brightness = get_max_brightness ( & mut display) ?;
24
26
25
27
Ok ( Self {
@@ -63,11 +65,16 @@ fn get_max_brightness(display: &mut Display) -> Result<u64, Box<dyn Error>> {
63
65
. maximum ( ) as u64 )
64
66
}
65
67
66
- fn find_display_by_name ( name : & str ) -> Option < Display > {
68
+ fn find_display_by_name ( name : & str , check_caps : bool ) -> Option < Display > {
67
69
let displays = ddc_hi:: Display :: enumerate ( )
68
70
. into_iter ( )
69
71
. filter_map ( |mut display| {
70
- display. update_capabilities ( ) . ok ( ) . map ( |_| {
72
+ let caps = if check_caps {
73
+ display. update_capabilities ( )
74
+ } else {
75
+ Ok ( ( ) )
76
+ } ;
77
+ caps. ok ( ) . map ( |_| {
71
78
let empty = "" . to_string ( ) ;
72
79
let merged = format ! (
73
80
"{} {}" ,
@@ -80,15 +87,21 @@ fn find_display_by_name(name: &str) -> Option<Display> {
80
87
. collect_vec ( ) ;
81
88
82
89
log:: debug!(
83
- "Discovered displays: {:?}" ,
90
+ "Discovered displays (check_caps={}): {:?}" ,
91
+ check_caps,
84
92
displays. iter( ) . map( |( name, _) | name) . collect_vec( )
85
93
) ;
86
94
87
95
displays. into_iter ( ) . find_map ( |( merged, display) | {
88
96
merged
89
97
. contains ( name)
90
98
. then ( || {
91
- log:: debug!( "Using display '{}' for config '{}'" , merged, name) ;
99
+ log:: debug!(
100
+ "Using display '{}' for config '{}' (check_caps={})" ,
101
+ merged,
102
+ name,
103
+ check_caps
104
+ ) ;
92
105
} )
93
106
. map ( |_| display)
94
107
} )
0 commit comments