MCPcopy Create free account
hub / github.com/Recordscript/recordscript / all

Method all

libs/scrap/src/common/dxgi.rs:122–165  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

120 }
121
122 pub fn all() -> io::Result<Vec<Display>> {
123 let displays_gdi = dxgi::Displays::get_from_gdi()
124 .drain(..)
125 .map(Display)
126 .collect::<Vec<_>>();
127
128 let displays_dxgi = Self::all_().unwrap_or(Default::default());
129
130 // Return gdi displays if dxgi is not supported
131 if displays_dxgi.is_empty() {
132 println!("Display got from gdi");
133 return Ok(displays_gdi);
134 }
135
136 // Return dxgi displays if length is not equal
137 if displays_dxgi.len() != displays_gdi.len() {
138 return Ok(displays_dxgi);
139 }
140
141 // Check if names are equal
142 let names_gdi = displays_gdi.iter().map(|d| d.name()).collect::<Vec<_>>();
143 let names_dxgi = displays_dxgi.iter().map(|d| d.name()).collect::<Vec<_>>();
144 for name in names_gdi.iter() {
145 if !names_dxgi.contains(name) {
146 return Ok(displays_dxgi);
147 }
148 }
149
150 // Reorder displays from dxgi
151 let mut displays_dxgi = displays_dxgi;
152 let mut displays_dxgi_ordered = Vec::new();
153 for name in names_gdi.iter() {
154 let pos = match displays_dxgi.iter().position(|d| d.name() == *name) {
155 Some(pos) => pos,
156 None => {
157 // unreachable!
158 0
159 }
160 };
161 displays_dxgi_ordered.push(displays_dxgi.remove(pos));
162 }
163
164 Ok(displays_dxgi_ordered)
165 }
166
167 fn all_() -> io::Result<Vec<Display>> {
168 Ok(dxgi::Displays::new()?.map(Display).collect::<Vec<_>>())

Callers

nothing calls this directly

Calls 4

is_emptyMethod · 0.80
iterMethod · 0.80
removeMethod · 0.80
nameMethod · 0.45

Tested by

no test coverage detected