move is_x11 out of loop, https://github.com/rustdesk/rustdesk/discussions/6042
This commit is contained in:
parent
4959e664a9
commit
5f92465d0f
@ -61,6 +61,10 @@ lazy_static::lazy_static! {
|
|||||||
pub static ref IS_FOREGROUND_WINDOW_ELEVATED: Arc<Mutex<bool>> = Default::default();
|
pub static ref IS_FOREGROUND_WINDOW_ELEVATED: Arc<Mutex<bool>> = Default::default();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// https://github.com/rustdesk/rustdesk/discussions/6042, avoiding dbus call
|
||||||
|
#[cfg(target_os = "linux")]
|
||||||
|
static IS_X11: AtomicBool = AtomicBool::new(false);
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn notify_video_frame_fetched(conn_id: i32, frame_tm: Option<Instant>) {
|
pub fn notify_video_frame_fetched(conn_id: i32, frame_tm: Option<Instant>) {
|
||||||
FRAME_FETCHED_NOTIFIER.0.send((conn_id, frame_tm)).ok();
|
FRAME_FETCHED_NOTIFIER.0.send((conn_id, frame_tm)).ok();
|
||||||
@ -168,7 +172,7 @@ fn check_display_changed(
|
|||||||
#[cfg(target_os = "linux")]
|
#[cfg(target_os = "linux")]
|
||||||
{
|
{
|
||||||
// wayland do not support changing display for now
|
// wayland do not support changing display for now
|
||||||
if !scrap::is_x11() {
|
if !IS_X11.load(Ordering::SeqCst)() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -349,7 +353,7 @@ fn get_capturer(
|
|||||||
) -> ResultType<CapturerInfo> {
|
) -> ResultType<CapturerInfo> {
|
||||||
#[cfg(target_os = "linux")]
|
#[cfg(target_os = "linux")]
|
||||||
{
|
{
|
||||||
if !scrap::is_x11() {
|
if !IS_X11.load(Ordering::SeqCst)() {
|
||||||
return super::wayland::get_capturer();
|
return super::wayland::get_capturer();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -425,6 +429,11 @@ fn run(vs: VideoService) -> ResultType<()> {
|
|||||||
#[cfg(not(any(target_os = "android", target_os = "ios")))]
|
#[cfg(not(any(target_os = "android", target_os = "ios")))]
|
||||||
let _wake_lock = get_wake_lock();
|
let _wake_lock = get_wake_lock();
|
||||||
|
|
||||||
|
#[cfg(target_os = "linux")]
|
||||||
|
{
|
||||||
|
IS_X11.store(scrap::is_x11(), Ordering::SeqCst);
|
||||||
|
}
|
||||||
|
|
||||||
// ensure_inited() is needed because clear() may be called.
|
// ensure_inited() is needed because clear() may be called.
|
||||||
// to-do: wayland ensure_inited should pass current display index.
|
// to-do: wayland ensure_inited should pass current display index.
|
||||||
// But for now, we do not support multi-screen capture on wayland.
|
// But for now, we do not support multi-screen capture on wayland.
|
||||||
@ -598,7 +607,7 @@ fn run(vs: VideoService) -> ResultType<()> {
|
|||||||
#[cfg(target_os = "linux")]
|
#[cfg(target_os = "linux")]
|
||||||
{
|
{
|
||||||
would_block_count += 1;
|
would_block_count += 1;
|
||||||
if !scrap::is_x11() {
|
if !IS_X11.load(Ordering::SeqCst)() {
|
||||||
if would_block_count >= 100 {
|
if would_block_count >= 100 {
|
||||||
// to-do: Unknown reason for WouldBlock 100 times (seconds = 100 * 1 / fps)
|
// to-do: Unknown reason for WouldBlock 100 times (seconds = 100 * 1 / fps)
|
||||||
// https://github.com/rustdesk/rustdesk/blob/63e6b2f8ab51743e77a151e2b7ff18816f5fa2fb/libs/scrap/src/common/wayland.rs#L81
|
// https://github.com/rustdesk/rustdesk/blob/63e6b2f8ab51743e77a151e2b7ff18816f5fa2fb/libs/scrap/src/common/wayland.rs#L81
|
||||||
@ -786,7 +795,7 @@ fn handle_one_frame(
|
|||||||
|
|
||||||
pub fn is_inited_msg() -> Option<Message> {
|
pub fn is_inited_msg() -> Option<Message> {
|
||||||
#[cfg(target_os = "linux")]
|
#[cfg(target_os = "linux")]
|
||||||
if !scrap::is_x11() {
|
if !IS_X11.load(Ordering::SeqCst)() {
|
||||||
return super::wayland::is_inited();
|
return super::wayland::is_inited();
|
||||||
}
|
}
|
||||||
None
|
None
|
||||||
|
Loading…
x
Reference in New Issue
Block a user