win clipboard context, use ref instead of box ref
Signed-off-by: dignow <linlong1265@gmail.com>
This commit is contained in:
parent
c33dd8e2ef
commit
4ecbf7aec6
@ -57,15 +57,10 @@ impl ContextSend {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn proc<F: FnOnce(&mut Box<CliprdrClientContext>) -> u32>(f: F) -> u32 {
|
||||
pub fn proc<F: FnOnce(&mut CliprdrClientContext) -> u32>(f: F) -> u32 {
|
||||
let lock = CONTEXT_SEND.addr.lock().unwrap();
|
||||
if *lock != 0 {
|
||||
unsafe {
|
||||
let mut context = Box::from_raw(*lock as *mut CliprdrClientContext);
|
||||
let code = f(&mut context);
|
||||
std::mem::forget(context);
|
||||
code
|
||||
}
|
||||
unsafe { f(&mut *(*lock as *mut CliprdrClientContext)) }
|
||||
} else {
|
||||
0
|
||||
}
|
||||
|
@ -164,12 +164,12 @@ fn send_data(conn_id: i32, data: ClipboardFile) {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn empty_clipboard(context: &mut Box<CliprdrClientContext>, conn_id: i32) -> bool {
|
||||
unsafe { TRUE == cliprdr::empty_cliprdr(&mut (**context), conn_id as u32) }
|
||||
pub fn empty_clipboard(context: &mut CliprdrClientContext, conn_id: i32) -> bool {
|
||||
unsafe { TRUE == cliprdr::empty_cliprdr(context, conn_id as u32) }
|
||||
}
|
||||
|
||||
pub fn server_clip_file(
|
||||
context: &mut Box<CliprdrClientContext>,
|
||||
context: &mut CliprdrClientContext,
|
||||
conn_id: i32,
|
||||
msg: ClipboardFile,
|
||||
) -> u32 {
|
||||
@ -294,7 +294,7 @@ pub fn server_clip_file(
|
||||
ret
|
||||
}
|
||||
|
||||
pub fn server_monitor_ready(context: &mut Box<CliprdrClientContext>, conn_id: i32) -> u32 {
|
||||
pub fn server_monitor_ready(context: &mut CliprdrClientContext, conn_id: i32) -> u32 {
|
||||
unsafe {
|
||||
let monitor_ready = CLIPRDR_MONITOR_READY {
|
||||
connID: conn_id as UINT32,
|
||||
@ -302,8 +302,8 @@ pub fn server_monitor_ready(context: &mut Box<CliprdrClientContext>, conn_id: i3
|
||||
msgFlags: 0 as UINT16,
|
||||
dataLen: 0 as UINT32,
|
||||
};
|
||||
if let Some(f) = (**context).MonitorReady {
|
||||
let ret = f(&mut (**context), &monitor_ready);
|
||||
if let Some(f) = context.MonitorReady {
|
||||
let ret = f(context, &monitor_ready);
|
||||
ret as u32
|
||||
} else {
|
||||
ERR_CODE_SERVER_FUNCTION_NONE
|
||||
@ -312,7 +312,7 @@ pub fn server_monitor_ready(context: &mut Box<CliprdrClientContext>, conn_id: i3
|
||||
}
|
||||
|
||||
pub fn server_format_list(
|
||||
context: &mut Box<CliprdrClientContext>,
|
||||
context: &mut CliprdrClientContext,
|
||||
conn_id: i32,
|
||||
format_list: Vec<(i32, String)>,
|
||||
) -> u32 {
|
||||
@ -348,8 +348,8 @@ pub fn server_format_list(
|
||||
formats: formats.as_mut_ptr(),
|
||||
};
|
||||
|
||||
let ret = if let Some(f) = (**context).ServerFormatList {
|
||||
f(&mut (**context), &format_list)
|
||||
let ret = if let Some(f) = context.ServerFormatList {
|
||||
f(context, &format_list)
|
||||
} else {
|
||||
ERR_CODE_SERVER_FUNCTION_NONE
|
||||
};
|
||||
@ -366,7 +366,7 @@ pub fn server_format_list(
|
||||
}
|
||||
|
||||
pub fn server_format_list_response(
|
||||
context: &mut Box<CliprdrClientContext>,
|
||||
context: &mut CliprdrClientContext,
|
||||
conn_id: i32,
|
||||
msg_flags: i32,
|
||||
) -> u32 {
|
||||
@ -378,8 +378,8 @@ pub fn server_format_list_response(
|
||||
dataLen: 0 as UINT32,
|
||||
};
|
||||
|
||||
if let Some(f) = (**context).ServerFormatListResponse {
|
||||
f(&mut (**context), &format_list_response)
|
||||
if let Some(f) = context.ServerFormatListResponse {
|
||||
f(context, &format_list_response)
|
||||
} else {
|
||||
ERR_CODE_SERVER_FUNCTION_NONE
|
||||
}
|
||||
@ -387,7 +387,7 @@ pub fn server_format_list_response(
|
||||
}
|
||||
|
||||
pub fn server_format_data_request(
|
||||
context: &mut Box<CliprdrClientContext>,
|
||||
context: &mut CliprdrClientContext,
|
||||
conn_id: i32,
|
||||
requested_format_id: i32,
|
||||
) -> u32 {
|
||||
@ -399,8 +399,8 @@ pub fn server_format_data_request(
|
||||
dataLen: 0 as UINT32,
|
||||
requestedFormatId: requested_format_id as UINT32,
|
||||
};
|
||||
if let Some(f) = (**context).ServerFormatDataRequest {
|
||||
f(&mut (**context), &format_data_request)
|
||||
if let Some(f) = context.ServerFormatDataRequest {
|
||||
f(context, &format_data_request)
|
||||
} else {
|
||||
ERR_CODE_SERVER_FUNCTION_NONE
|
||||
}
|
||||
@ -408,7 +408,7 @@ pub fn server_format_data_request(
|
||||
}
|
||||
|
||||
pub fn server_format_data_response(
|
||||
context: &mut Box<CliprdrClientContext>,
|
||||
context: &mut CliprdrClientContext,
|
||||
conn_id: i32,
|
||||
msg_flags: i32,
|
||||
mut format_data: Vec<u8>,
|
||||
@ -421,8 +421,8 @@ pub fn server_format_data_response(
|
||||
dataLen: format_data.len() as UINT32,
|
||||
requestedFormatData: format_data.as_mut_ptr(),
|
||||
};
|
||||
if let Some(f) = (**context).ServerFormatDataResponse {
|
||||
f(&mut (**context), &format_data_response)
|
||||
if let Some(f) = context.ServerFormatDataResponse {
|
||||
f(context, &format_data_response)
|
||||
} else {
|
||||
ERR_CODE_SERVER_FUNCTION_NONE
|
||||
}
|
||||
@ -430,7 +430,7 @@ pub fn server_format_data_response(
|
||||
}
|
||||
|
||||
pub fn server_file_contents_request(
|
||||
context: &mut Box<CliprdrClientContext>,
|
||||
context: &mut CliprdrClientContext,
|
||||
conn_id: i32,
|
||||
stream_id: i32,
|
||||
list_index: i32,
|
||||
@ -456,8 +456,8 @@ pub fn server_file_contents_request(
|
||||
haveClipDataId: if have_clip_data_id { TRUE } else { FALSE },
|
||||
clipDataId: clip_data_id as UINT32,
|
||||
};
|
||||
if let Some(f) = (**context).ServerFileContentsRequest {
|
||||
f(&mut (**context), &file_contents_request)
|
||||
if let Some(f) = context.ServerFileContentsRequest {
|
||||
f(context, &file_contents_request)
|
||||
} else {
|
||||
ERR_CODE_SERVER_FUNCTION_NONE
|
||||
}
|
||||
@ -465,7 +465,7 @@ pub fn server_file_contents_request(
|
||||
}
|
||||
|
||||
pub fn server_file_contents_response(
|
||||
context: &mut Box<CliprdrClientContext>,
|
||||
context: &mut CliprdrClientContext,
|
||||
conn_id: i32,
|
||||
msg_flags: i32,
|
||||
stream_id: i32,
|
||||
@ -481,8 +481,8 @@ pub fn server_file_contents_response(
|
||||
cbRequested: requested_data.len() as UINT32,
|
||||
requestedData: requested_data.as_mut_ptr(),
|
||||
};
|
||||
if let Some(f) = (**context).ServerFileContentsResponse {
|
||||
f(&mut (**context), &file_contents_response)
|
||||
if let Some(f) = context.ServerFileContentsResponse {
|
||||
f(context, &file_contents_response)
|
||||
} else {
|
||||
ERR_CODE_SERVER_FUNCTION_NONE
|
||||
}
|
||||
|
@ -251,7 +251,7 @@ impl<T: InvokeUiSession> Remote<T> {
|
||||
#[cfg(windows)]
|
||||
{
|
||||
let conn_id = self.client_conn_id;
|
||||
ContextSend::proc(|context: &mut Box<CliprdrClientContext>| -> u32 {
|
||||
ContextSend::proc(|context: &mut CliprdrClientContext| -> u32 {
|
||||
empty_clipboard(context, conn_id);
|
||||
0
|
||||
});
|
||||
@ -1624,7 +1624,7 @@ impl<T: InvokeUiSession> Remote<T> {
|
||||
"Process clipboard message from server peer, stop: {}, is_stopping_allowed: {}, file_transfer_enabled: {}",
|
||||
stop, is_stopping_allowed, file_transfer_enabled);
|
||||
if !stop {
|
||||
ContextSend::proc(|context: &mut Box<CliprdrClientContext>| -> u32 {
|
||||
ContextSend::proc(|context: &mut CliprdrClientContext| -> u32 {
|
||||
clipboard::server_clip_file(context, self.client_conn_id, clip)
|
||||
});
|
||||
}
|
||||
|
@ -184,7 +184,7 @@ impl<T: InvokeUiCM> ConnectionManager<T> {
|
||||
|
||||
#[cfg(windows)]
|
||||
{
|
||||
ContextSend::proc(|context: &mut Box<CliprdrClientContext>| -> u32 {
|
||||
ContextSend::proc(|context: &mut CliprdrClientContext| -> u32 {
|
||||
empty_clipboard(context, id);
|
||||
0
|
||||
});
|
||||
@ -427,7 +427,7 @@ impl<T: InvokeUiCM> IpcTaskRunner<T> {
|
||||
continue;
|
||||
}
|
||||
let conn_id = self.conn_id;
|
||||
ContextSend::proc(|context: &mut Box<CliprdrClientContext>| -> u32 {
|
||||
ContextSend::proc(|context: &mut CliprdrClientContext| -> u32 {
|
||||
clipboard::server_clip_file(context, conn_id, _clip)
|
||||
});
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user