mirror of
https://github.com/italicsjenga/winit-sonoma-fix.git
synced 2024-12-24 14:21:31 +11:00
X11: Fix incorrect DPI factor when waking from suspend (#1303)
This commit is contained in:
parent
2888d5c6cf
commit
1a514dff38
|
@ -8,6 +8,7 @@
|
||||||
- On X11, fix key modifiers being incorrectly reported.
|
- On X11, fix key modifiers being incorrectly reported.
|
||||||
- On X11, fix window creation hanging when another window is fullscreen.
|
- On X11, fix window creation hanging when another window is fullscreen.
|
||||||
- On Windows, fix focusing unfocused windows when switching from fullscreen to windowed.
|
- On Windows, fix focusing unfocused windows when switching from fullscreen to windowed.
|
||||||
|
- On X11, fix reporting incorrect DPI factor when waking from suspend.
|
||||||
|
|
||||||
# 0.20.0 Alpha 4 (2019-10-18)
|
# 0.20.0 Alpha 4 (2019-10-18)
|
||||||
|
|
||||||
|
|
|
@ -406,14 +406,16 @@ impl<T: 'static> EventProcessor<T> {
|
||||||
let last_hidpi_factor = shared_state_lock.last_monitor.hidpi_factor;
|
let last_hidpi_factor = shared_state_lock.last_monitor.hidpi_factor;
|
||||||
let new_hidpi_factor = {
|
let new_hidpi_factor = {
|
||||||
let window_rect = util::AaRect::new(new_outer_position, new_inner_size);
|
let window_rect = util::AaRect::new(new_outer_position, new_inner_size);
|
||||||
monitor = wt.xconn.get_monitor_for_window(Some(window_rect));
|
let new_monitor = wt.xconn.get_monitor_for_window(Some(window_rect));
|
||||||
let new_hidpi_factor = monitor.hidpi_factor;
|
|
||||||
|
|
||||||
// Avoid caching an invalid dummy monitor handle
|
if new_monitor.is_dummy() {
|
||||||
if monitor.id != 0 {
|
// Avoid updating monitor using a dummy monitor handle
|
||||||
|
last_hidpi_factor
|
||||||
|
} else {
|
||||||
|
monitor = new_monitor;
|
||||||
shared_state_lock.last_monitor = monitor.clone();
|
shared_state_lock.last_monitor = monitor.clone();
|
||||||
|
monitor.hidpi_factor
|
||||||
}
|
}
|
||||||
new_hidpi_factor
|
|
||||||
};
|
};
|
||||||
if last_hidpi_factor != new_hidpi_factor {
|
if last_hidpi_factor != new_hidpi_factor {
|
||||||
events.dpi_changed =
|
events.dpi_changed =
|
||||||
|
|
|
@ -143,6 +143,11 @@ impl MonitorHandle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub(crate) fn is_dummy(&self) -> bool {
|
||||||
|
// Zero is an invalid XID value; no real monitor will have it
|
||||||
|
self.id == 0
|
||||||
|
}
|
||||||
|
|
||||||
pub fn name(&self) -> Option<String> {
|
pub fn name(&self) -> Option<String> {
|
||||||
Some(self.name.clone())
|
Some(self.name.clone())
|
||||||
}
|
}
|
||||||
|
|
|
@ -651,7 +651,7 @@ impl UnownedWindow {
|
||||||
};
|
};
|
||||||
|
|
||||||
// Don't set fullscreen on an invalid dummy monitor handle
|
// Don't set fullscreen on an invalid dummy monitor handle
|
||||||
if monitor.id == 0 {
|
if monitor.is_dummy() {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue