mirror of
https://github.com/rustdesk/rustdesk.git
synced 2026-03-23 05:00:59 +03:00
fix: remote printer (#11270)
* fix: remote printer, log Signed-off-by: fufesou <linlong1266@gmail.com> * fix: remote printer, avoid double sign Signed-off-by: fufesou <linlong1266@gmail.com> * Spawn a new thread to handle the print job. Signed-off-by: fufesou <linlong1266@gmail.com> --------- Signed-off-by: fufesou <linlong1266@gmail.com>
This commit is contained in:
@@ -1550,21 +1550,32 @@ impl<T: InvokeUiSession> Remote<T> {
|
||||
fs::JobType::Generic => {
|
||||
self.handle_job_status(d.id, d.file_num, err);
|
||||
}
|
||||
fs::JobType::Printer =>
|
||||
{
|
||||
#[cfg(target_os = "windows")]
|
||||
if let Some(data) = printer_data {
|
||||
let printer_name = self
|
||||
.handler
|
||||
.printer_names
|
||||
.write()
|
||||
.unwrap()
|
||||
.remove(&d.id);
|
||||
crate::platform::send_raw_data_to_printer(
|
||||
printer_name,
|
||||
data,
|
||||
)
|
||||
.ok();
|
||||
fs::JobType::Printer => {
|
||||
if let Some(err) = err {
|
||||
log::error!("Received printer job failed, error {err}");
|
||||
} else {
|
||||
log::info!(
|
||||
"Received printer job done, data len: {:?}",
|
||||
printer_data.as_ref().map(|d| d.len()).unwrap_or(0)
|
||||
);
|
||||
#[cfg(target_os = "windows")]
|
||||
if let Some(data) = printer_data {
|
||||
let printer_name = self
|
||||
.handler
|
||||
.printer_names
|
||||
.write()
|
||||
.unwrap()
|
||||
.remove(&d.id);
|
||||
// Spawn a new thread to handle the print job.
|
||||
// Or print job will block the ui thread.
|
||||
std::thread::spawn(move || {
|
||||
crate::platform::send_raw_data_to_printer(
|
||||
printer_name,
|
||||
data,
|
||||
)
|
||||
.ok();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user