fix x11 login screen
Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
parent
2ba7be5cdd
commit
3ab73bdf36
@ -40,6 +40,12 @@ pub fn is_desktop_wayland() -> bool {
|
|||||||
get_display_server() == DISPLAY_SERVER_WAYLAND
|
get_display_server() == DISPLAY_SERVER_WAYLAND
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub fn is_x11_wayland() -> bool {
|
||||||
|
let ds = get_display_server();
|
||||||
|
ds == DISPLAY_SERVER_X11 || ds == DISPLAY_SERVER_WAYLAND
|
||||||
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn is_x11_or_headless() -> bool {
|
pub fn is_x11_or_headless() -> bool {
|
||||||
!is_desktop_wayland()
|
!is_desktop_wayland()
|
||||||
|
@ -190,12 +190,15 @@ impl<T: Subscriber + From<ConnInner>> ServiceTmpl<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn wait_prelogin(&self) {
|
fn wait_prelogin_or_x11gdm(&self) {
|
||||||
#[cfg(target_os = "linux")]
|
#[cfg(target_os = "linux")]
|
||||||
while self.active() {
|
while self.active() {
|
||||||
if crate::platform::linux::is_prelogin() {
|
if crate::platform::linux::is_prelogin() {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if crate::platform::linux::is_x11_wayland() {
|
||||||
|
break;
|
||||||
|
}
|
||||||
thread::sleep(time::Duration::from_millis(300));
|
thread::sleep(time::Duration::from_millis(300));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -209,7 +212,7 @@ impl<T: Subscriber + From<ConnInner>> ServiceTmpl<T> {
|
|||||||
let mut callback = callback;
|
let mut callback = callback;
|
||||||
let sp = self.clone();
|
let sp = self.clone();
|
||||||
let thread = thread::spawn(move || {
|
let thread = thread::spawn(move || {
|
||||||
sp.wait_prelogin();
|
sp.wait_prelogin_or_x11gdm();
|
||||||
|
|
||||||
let mut state = S::default();
|
let mut state = S::default();
|
||||||
let mut may_reset = false;
|
let mut may_reset = false;
|
||||||
@ -245,7 +248,7 @@ impl<T: Subscriber + From<ConnInner>> ServiceTmpl<T> {
|
|||||||
let sp = self.clone();
|
let sp = self.clone();
|
||||||
let mut callback = callback;
|
let mut callback = callback;
|
||||||
let thread = thread::spawn(move || {
|
let thread = thread::spawn(move || {
|
||||||
sp.wait_prelogin();
|
sp.wait_prelogin_or_x11gdm();
|
||||||
|
|
||||||
let mut error_timeout = HIBERNATE_TIMEOUT;
|
let mut error_timeout = HIBERNATE_TIMEOUT;
|
||||||
while sp.active() {
|
while sp.active() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user