fix x11 login screen

Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
fufesou
2023-04-01 10:26:55 +08:00
parent 2ba7be5cdd
commit 3ab73bdf36
2 changed files with 12 additions and 3 deletions

View File

@@ -190,12 +190,15 @@ impl<T: Subscriber + From<ConnInner>> ServiceTmpl<T> {
}
#[inline]
fn wait_prelogin(&self) {
fn wait_prelogin_or_x11gdm(&self) {
#[cfg(target_os = "linux")]
while self.active() {
if crate::platform::linux::is_prelogin() {
break;
}
if crate::platform::linux::is_x11_wayland() {
break;
}
thread::sleep(time::Duration::from_millis(300));
}
}
@@ -209,7 +212,7 @@ impl<T: Subscriber + From<ConnInner>> ServiceTmpl<T> {
let mut callback = callback;
let sp = self.clone();
let thread = thread::spawn(move || {
sp.wait_prelogin();
sp.wait_prelogin_or_x11gdm();
let mut state = S::default();
let mut may_reset = false;
@@ -245,7 +248,7 @@ impl<T: Subscriber + From<ConnInner>> ServiceTmpl<T> {
let sp = self.clone();
let mut callback = callback;
let thread = thread::spawn(move || {
sp.wait_prelogin();
sp.wait_prelogin_or_x11gdm();
let mut error_timeout = HIBERNATE_TIMEOUT;
while sp.active() {