mirror of
https://github.com/rustdesk/rustdesk.git
synced 2025-05-11 18:36:11 +02:00
refact: remote printer, adapter dll, free data ptr (#11279)
Signed-off-by: fufesou <linlong1266@gmail.com>
This commit is contained in:
parent
4b14f86134
commit
23e70c0fd1
3 changed files with 15 additions and 8 deletions
|
@ -1 +1 @@
|
|||
Subproject commit 9ede5d49f65b8c513fe613dbfea2daf7694cba3e
|
||||
Subproject commit 81b932b7bfa2ff8bc60189625fd6538db2fa9ea1
|
|
@ -1544,7 +1544,13 @@ impl<T: InvokeUiSession> Remote<T> {
|
|||
job.modify_time();
|
||||
err = job.job_error();
|
||||
job_type = job.r#type;
|
||||
printer_data = job.get_buf_data();
|
||||
printer_data = match job.get_buf_data().await {
|
||||
Ok(d) => d,
|
||||
Err(e) => {
|
||||
log::error!("Failed to get the printer data: {}", e);
|
||||
None
|
||||
}
|
||||
};
|
||||
}
|
||||
match job_type {
|
||||
fs::JobType::Generic => {
|
||||
|
@ -1552,10 +1558,10 @@ impl<T: InvokeUiSession> Remote<T> {
|
|||
}
|
||||
fs::JobType::Printer => {
|
||||
if let Some(err) = err {
|
||||
log::error!("Received printer job failed, error {err}");
|
||||
log::error!("Receive print job failed, error {err}");
|
||||
} else {
|
||||
log::info!(
|
||||
"Received printer job done, data len: {:?}",
|
||||
"Receive print job done, data len: {:?}",
|
||||
printer_data.as_ref().map(|d| d.len()).unwrap_or(0)
|
||||
);
|
||||
#[cfg(target_os = "windows")]
|
||||
|
|
|
@ -17,6 +17,8 @@ pub type Uninit = fn();
|
|||
// data: The raw prn data, xps format.
|
||||
// data_len: The length of the raw prn data.
|
||||
pub type GetPrnData = fn(dur_mills: u32, data: *mut *mut i8, data_len: *mut u32);
|
||||
// Free the prn data allocated by GetPrnData().
|
||||
pub type FreePrnData = fn(data: *mut i8);
|
||||
|
||||
macro_rules! make_lib_wrapper {
|
||||
($($field:ident : $tp:ty),+) => {
|
||||
|
@ -78,7 +80,8 @@ macro_rules! make_lib_wrapper {
|
|||
make_lib_wrapper!(
|
||||
init: Init,
|
||||
uninit: Uninit,
|
||||
get_prn_data: GetPrnData
|
||||
get_prn_data: GetPrnData,
|
||||
free_prn_data: FreePrnData
|
||||
);
|
||||
|
||||
lazy_static::lazy_static! {
|
||||
|
@ -135,9 +138,7 @@ fn get_prn_data(dur_mills: u32) -> ResultType<Vec<u8>> {
|
|||
}
|
||||
let bytes =
|
||||
Vec::from(unsafe { std::slice::from_raw_parts(data as *const u8, data_len as usize) });
|
||||
unsafe {
|
||||
hbb_common::libc::free(data as *mut std::ffi::c_void);
|
||||
}
|
||||
lib_wrapper.free_prn_data.map(|f| f(data));
|
||||
Ok(bytes)
|
||||
} else {
|
||||
bail!("Failed to load func get_prn_file");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue