portable-service: fix set capture para dead lock
Signed-off-by: 21pages <pages21@163.com>
This commit is contained in:
parent
bee19bfe17
commit
4d492cb2c6
@ -469,17 +469,20 @@ pub mod client {
|
|||||||
where
|
where
|
||||||
Self: Sized,
|
Self: Sized,
|
||||||
{
|
{
|
||||||
Self::set_para(CapturerPara {
|
let mut option = SHMEM.lock().unwrap();
|
||||||
current_display,
|
let shmem = option.as_mut().unwrap();
|
||||||
use_yuv,
|
Self::set_para(
|
||||||
timeout_ms: 33,
|
shmem,
|
||||||
});
|
CapturerPara {
|
||||||
|
current_display,
|
||||||
|
use_yuv,
|
||||||
|
timeout_ms: 33,
|
||||||
|
},
|
||||||
|
);
|
||||||
CapturerPortable {}
|
CapturerPortable {}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_para(para: CapturerPara) {
|
fn set_para(shmem: &mut SharedMemory, para: CapturerPara) {
|
||||||
let mut option = SHMEM.lock().unwrap();
|
|
||||||
let shmem = option.as_mut().unwrap();
|
|
||||||
let para_ptr = ¶ as *const CapturerPara as *const u8;
|
let para_ptr = ¶ as *const CapturerPara as *const u8;
|
||||||
let para_data;
|
let para_data;
|
||||||
unsafe {
|
unsafe {
|
||||||
@ -497,11 +500,14 @@ pub mod client {
|
|||||||
let para_ptr = shmem.as_ptr().add(ADDR_CAPTURER_PARA);
|
let para_ptr = shmem.as_ptr().add(ADDR_CAPTURER_PARA);
|
||||||
let para = para_ptr as *const CapturerPara;
|
let para = para_ptr as *const CapturerPara;
|
||||||
if use_yuv != (*para).use_yuv {
|
if use_yuv != (*para).use_yuv {
|
||||||
Self::set_para(CapturerPara {
|
Self::set_para(
|
||||||
current_display: (*para).current_display,
|
shmem,
|
||||||
use_yuv,
|
CapturerPara {
|
||||||
timeout_ms: (*para).timeout_ms,
|
current_display: (*para).current_display,
|
||||||
});
|
use_yuv,
|
||||||
|
timeout_ms: (*para).timeout_ms,
|
||||||
|
},
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -514,11 +520,14 @@ pub mod client {
|
|||||||
let para_ptr = base.add(ADDR_CAPTURER_PARA);
|
let para_ptr = base.add(ADDR_CAPTURER_PARA);
|
||||||
let para = para_ptr as *const CapturerPara;
|
let para = para_ptr as *const CapturerPara;
|
||||||
if timeout.as_millis() != (*para).timeout_ms as _ {
|
if timeout.as_millis() != (*para).timeout_ms as _ {
|
||||||
Self::set_para(CapturerPara {
|
Self::set_para(
|
||||||
current_display: (*para).current_display,
|
shmem,
|
||||||
use_yuv: (*para).use_yuv,
|
CapturerPara {
|
||||||
timeout_ms: timeout.as_millis() as _,
|
current_display: (*para).current_display,
|
||||||
});
|
use_yuv: (*para).use_yuv,
|
||||||
|
timeout_ms: timeout.as_millis() as _,
|
||||||
|
},
|
||||||
|
);
|
||||||
}
|
}
|
||||||
if utils::counter_ready(base.add(ADDR_CAPTURE_FRAME_COUNTER)) {
|
if utils::counter_ready(base.add(ADDR_CAPTURE_FRAME_COUNTER)) {
|
||||||
let frame_len_ptr = base.add(ADDR_CAPTURE_FRAME_SIZE);
|
let frame_len_ptr = base.add(ADDR_CAPTURE_FRAME_SIZE);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user