mirror of
https://github.com/weyne85/rustdesk.git
synced 2025-10-29 17:00:05 +00:00
Refact/multi window soft rendering (#8343)
* refact: multi_window_soft_rendering Signed-off-by: fufesou <linlong1266@gmail.com> * fix: window pos, potential wait for image Signed-off-by: fufesou <linlong1266@gmail.com> * comments Signed-off-by: fufesou <linlong1266@gmail.com> * remove debug print Signed-off-by: fufesou <linlong1266@gmail.com> * explicitly set rgba_data.size_got to false after init Signed-off-by: fufesou <linlong1266@gmail.com> * refact: multi window, merge images, render with texture Signed-off-by: fufesou <linlong1266@gmail.com> * revert, flutter.rs, rgba valid Signed-off-by: fufesou <linlong1266@gmail.com> * Add displays index before sending capture msg Signed-off-by: fufesou <linlong1266@gmail.com> * refact: multi window, soft rendering Signed-off-by: fufesou <linlong1266@gmail.com> * fix: build Signed-off-by: fufesou <linlong1266@gmail.com> --------- Signed-off-by: fufesou <linlong1266@gmail.com>
This commit is contained in:
@@ -110,13 +110,6 @@ pub fn session_add_existed_sync(id: String, session_id: SessionID) -> SyncReturn
|
||||
}
|
||||
}
|
||||
|
||||
pub fn session_try_add_display(session_id: SessionID, displays: Vec<i32>) -> SyncReturn<()> {
|
||||
if let Some(session) = sessions::get_session_by_session_id(&session_id) {
|
||||
session.capture_displays(displays, vec![], vec![]);
|
||||
}
|
||||
SyncReturn(())
|
||||
}
|
||||
|
||||
pub fn session_add_sync(
|
||||
session_id: SessionID,
|
||||
id: String,
|
||||
@@ -153,6 +146,27 @@ pub fn session_start(
|
||||
session_start_(&session_id, &id, events2ui)
|
||||
}
|
||||
|
||||
pub fn session_start_with_displays(
|
||||
events2ui: StreamSink<EventToUI>,
|
||||
session_id: SessionID,
|
||||
id: String,
|
||||
displays: Vec<i32>,
|
||||
) -> ResultType<()> {
|
||||
session_start_(&session_id, &id, events2ui)?;
|
||||
|
||||
// `session_add_displays` is used for software rendering, multi-ui sessions.
|
||||
// We need to add displays to the session first, then capture the displays.
|
||||
// Otherwise, the session may not send video frames to the flutter side.
|
||||
super::flutter::session_add_displays(&session_id, &displays);
|
||||
if let Some(session) = sessions::get_session_by_session_id(&session_id) {
|
||||
session.capture_displays(displays.clone(), vec![], vec![]);
|
||||
for display in displays {
|
||||
session.refresh_video(display as _);
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn session_get_remember(session_id: SessionID) -> Option<bool> {
|
||||
if let Some(session) = sessions::get_session_by_session_id(&session_id) {
|
||||
Some(session.get_remember())
|
||||
|
||||
Reference in New Issue
Block a user