try stop video capturing, on close window
Signed-off-by: dignow <linlong1265@gmail.com>
This commit is contained in:
parent
3145269f65
commit
fe3924b432
@ -1377,6 +1377,9 @@ pub fn get_cur_session() -> Option<FlutterSession> {
|
|||||||
|
|
||||||
// sessions mod is used to avoid the big lock of sessions' map.
|
// sessions mod is used to avoid the big lock of sessions' map.
|
||||||
pub mod sessions {
|
pub mod sessions {
|
||||||
|
#[cfg(feature = "flutter_texture_render")]
|
||||||
|
use std::collections::HashSet;
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
lazy_static::lazy_static! {
|
lazy_static::lazy_static! {
|
||||||
@ -1441,12 +1444,44 @@ pub mod sessions {
|
|||||||
let mut remove_peer_key = None;
|
let mut remove_peer_key = None;
|
||||||
for (peer_key, s) in SESSIONS.write().unwrap().iter_mut() {
|
for (peer_key, s) in SESSIONS.write().unwrap().iter_mut() {
|
||||||
let mut write_lock = s.ui_handler.session_handlers.write().unwrap();
|
let mut write_lock = s.ui_handler.session_handlers.write().unwrap();
|
||||||
if write_lock.remove(id).is_some() {
|
let remove_ret = write_lock.remove(id);
|
||||||
|
#[cfg(not(feature = "flutter_texture_render"))]
|
||||||
|
if remove_ret.is_some() {
|
||||||
if write_lock.is_empty() {
|
if write_lock.is_empty() {
|
||||||
remove_peer_key = Some(peer_key.clone());
|
remove_peer_key = Some(peer_key.clone());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
#[cfg(feature = "flutter_texture_render")]
|
||||||
|
match remove_ret {
|
||||||
|
Some(_) => {
|
||||||
|
if write_lock.is_empty() {
|
||||||
|
remove_peer_key = Some(peer_key.clone());
|
||||||
|
} else {
|
||||||
|
// Set capture displays if some are not used any more.
|
||||||
|
let mut remains_displays = HashSet::new();
|
||||||
|
for (_, h) in write_lock.iter() {
|
||||||
|
remains_displays.extend(
|
||||||
|
h.renderer
|
||||||
|
.map_display_sessions
|
||||||
|
.read()
|
||||||
|
.unwrap()
|
||||||
|
.keys()
|
||||||
|
.cloned(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if !remains_displays.is_empty() {
|
||||||
|
s.capture_displays(
|
||||||
|
vec![],
|
||||||
|
vec![],
|
||||||
|
remains_displays.iter().map(|d| *d as i32).collect(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
None => {}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
SESSIONS.write().unwrap().remove(&remove_peer_key?)
|
SESSIONS.write().unwrap().remove(&remove_peer_key?)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user