fix: privacy mode 2, resolution changed (#9027)
Signed-off-by: fufesou <linlong1266@gmail.com>
This commit is contained in:
parent
6625aca994
commit
99d7b62d79
@ -540,7 +540,7 @@ fn run(vs: VideoService) -> ResultType<()> {
|
|||||||
VRamEncoder::set_fallback_gdi(display_idx, true);
|
VRamEncoder::set_fallback_gdi(display_idx, true);
|
||||||
bail!("SWITCH");
|
bail!("SWITCH");
|
||||||
}
|
}
|
||||||
check_privacy_mode_changed(&sp, c.privacy_mode_id)?;
|
check_privacy_mode_changed(&sp, display_idx, &c)?;
|
||||||
#[cfg(windows)]
|
#[cfg(windows)]
|
||||||
{
|
{
|
||||||
if crate::platform::windows::desktop_changed()
|
if crate::platform::windows::desktop_changed()
|
||||||
@ -659,7 +659,7 @@ fn run(vs: VideoService) -> ResultType<()> {
|
|||||||
let timeout_millis = 3_000u64;
|
let timeout_millis = 3_000u64;
|
||||||
let wait_begin = Instant::now();
|
let wait_begin = Instant::now();
|
||||||
while wait_begin.elapsed().as_millis() < timeout_millis as _ {
|
while wait_begin.elapsed().as_millis() < timeout_millis as _ {
|
||||||
check_privacy_mode_changed(&sp, c.privacy_mode_id)?;
|
check_privacy_mode_changed(&sp, display_idx, &c)?;
|
||||||
frame_controller.try_wait_next(&mut fetched_conn_ids, 300);
|
frame_controller.try_wait_next(&mut fetched_conn_ids, 300);
|
||||||
// break if all connections have received current frame
|
// break if all connections have received current frame
|
||||||
if fetched_conn_ids.len() >= frame_controller.send_conn_ids.len() {
|
if fetched_conn_ids.len() >= frame_controller.send_conn_ids.len() {
|
||||||
@ -876,9 +876,13 @@ fn check_change_scale(hardware: bool) -> ResultType<()> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn check_privacy_mode_changed(sp: &GenericService, privacy_mode_id: i32) -> ResultType<()> {
|
fn check_privacy_mode_changed(
|
||||||
|
sp: &GenericService,
|
||||||
|
display_idx: usize,
|
||||||
|
ci: &CapturerInfo,
|
||||||
|
) -> ResultType<()> {
|
||||||
let privacy_mode_id_2 = get_privacy_mode_conn_id().unwrap_or(INVALID_PRIVACY_MODE_CONN_ID);
|
let privacy_mode_id_2 = get_privacy_mode_conn_id().unwrap_or(INVALID_PRIVACY_MODE_CONN_ID);
|
||||||
if privacy_mode_id != privacy_mode_id_2 {
|
if ci.privacy_mode_id != privacy_mode_id_2 {
|
||||||
if privacy_mode_id_2 != INVALID_PRIVACY_MODE_CONN_ID {
|
if privacy_mode_id_2 != INVALID_PRIVACY_MODE_CONN_ID {
|
||||||
let msg_out = crate::common::make_privacy_mode_msg(
|
let msg_out = crate::common::make_privacy_mode_msg(
|
||||||
back_notification::PrivacyModeState::PrvOnByOther,
|
back_notification::PrivacyModeState::PrvOnByOther,
|
||||||
@ -887,6 +891,7 @@ fn check_privacy_mode_changed(sp: &GenericService, privacy_mode_id: i32) -> Resu
|
|||||||
sp.send_to_others(msg_out, privacy_mode_id_2);
|
sp.send_to_others(msg_out, privacy_mode_id_2);
|
||||||
}
|
}
|
||||||
log::info!("switch due to privacy mode changed");
|
log::info!("switch due to privacy mode changed");
|
||||||
|
try_broadcast_display_changed(&sp, display_idx, ci, true).ok();
|
||||||
bail!("SWITCH");
|
bail!("SWITCH");
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user