Fix, windows display orders

Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
fufesou
2023-11-12 00:08:16 +08:00
parent 58596ad1ab
commit 8f8c9ddc25
7 changed files with 53 additions and 23 deletions

View File

@@ -111,16 +111,23 @@ impl Display {
let tmp = Self::all_().unwrap_or(Default::default());
if tmp.is_empty() {
println!("Display got from gdi");
return Ok(dxgi::Displays::get_from_gdi()
.drain(..)
.map(Display)
.collect::<Vec<_>>());
return Ok(Self::displays_from_dxgi_displays(
dxgi::Displays::get_from_gdi().drain(..),
));
}
Ok(tmp)
}
#[inline]
pub fn displays_from_dxgi_displays<I>(displays: I) -> Vec<Display>
where
I: Iterator<Item = dxgi::Display>,
{
displays.map(Display).collect::<Vec<_>>()
}
fn all_() -> io::Result<Vec<Display>> {
Ok(dxgi::Displays::new()?.map(Display).collect::<Vec<_>>())
Ok(Self::displays_from_dxgi_displays(dxgi::Displays::new()?))
}
pub fn width(&self) -> usize {