mirror of
https://github.com/rustdesk/rustdesk.git
synced 2026-04-03 09:21:27 +03:00
view camera (#11040)
* view camera Signed-off-by: 21pages <sunboeasy@gmail.com> * `No cameras` prompt if no cameras available, `peerGetSessionsCount` use connType as parameter Signed-off-by: 21pages <sunboeasy@gmail.com> * fix, use video_service_name rather than display_idx as key in qos,etc Signed-off-by: 21pages <sunboeasy@gmail.com> --------- Signed-off-by: 21pages <sunboeasy@gmail.com> Co-authored-by: Adwin White <adwinw01@gmail.com> Co-authored-by: RustDesk <71636191+rustdesk@users.noreply.github.com>
This commit is contained in:
@@ -1389,14 +1389,14 @@ impl VideoHandler {
|
||||
}
|
||||
|
||||
/// Start or stop screen record.
|
||||
pub fn record_screen(&mut self, start: bool, id: String, display: usize) {
|
||||
pub fn record_screen(&mut self, start: bool, id: String, video_service_name: String) {
|
||||
self.record = false;
|
||||
if start {
|
||||
self.recorder = Recorder::new(RecorderContext {
|
||||
server: false,
|
||||
id,
|
||||
dir: crate::ui_interface::video_save_directory(false),
|
||||
display,
|
||||
video_service_name,
|
||||
tx: None,
|
||||
})
|
||||
.map_or(Default::default(), |r| Arc::new(Mutex::new(Some(r))));
|
||||
@@ -2349,6 +2349,7 @@ impl LoginConfigHandler {
|
||||
show_hidden: !self.get_option("remote_show_hidden").is_empty(),
|
||||
..Default::default()
|
||||
}),
|
||||
ConnType::VIEW_CAMERA => lr.set_view_camera(Default::default()),
|
||||
ConnType::PORT_FORWARD | ConnType::RDP => lr.set_port_forward(PortForward {
|
||||
host: self.port_forward.0.clone(),
|
||||
port: self.port_forward.1,
|
||||
@@ -2436,6 +2437,14 @@ pub fn start_video_thread<F, T>(
|
||||
{
|
||||
let mut video_callback = video_callback;
|
||||
let mut last_chroma = None;
|
||||
let video_service_name = crate::video_service::get_service_name(
|
||||
if session.is_view_camera() {
|
||||
crate::video_service::VideoSource::Camera
|
||||
} else {
|
||||
crate::video_service::VideoSource::Monitor
|
||||
},
|
||||
display,
|
||||
);
|
||||
|
||||
std::thread::spawn(move || {
|
||||
#[cfg(windows)]
|
||||
@@ -2478,7 +2487,7 @@ pub fn start_video_thread<F, T>(
|
||||
let record_permission = session.lc.read().unwrap().record_permission;
|
||||
let id = session.lc.read().unwrap().id.clone();
|
||||
if record_state && record_permission {
|
||||
handler.record_screen(true, id, display);
|
||||
handler.record_screen(true, id, video_service_name.clone());
|
||||
}
|
||||
video_handler = Some(handler);
|
||||
}
|
||||
@@ -2559,7 +2568,7 @@ pub fn start_video_thread<F, T>(
|
||||
MediaData::RecordScreen(start) => {
|
||||
let id = session.lc.read().unwrap().id.clone();
|
||||
if let Some(handler) = video_handler.as_mut() {
|
||||
handler.record_screen(start, id, display);
|
||||
handler.record_screen(start, id, video_service_name.clone());
|
||||
}
|
||||
}
|
||||
_ => {}
|
||||
|
||||
Reference in New Issue
Block a user