fix: 修复3个P0遗留 — AutoRollback回退/ConfigReloaded序列化/FfiString跨allocator

This commit is contained in:
showen
2026-03-13 05:15:04 +08:00
parent 1264b94e36
commit 6067c3f0a2
10 changed files with 393 additions and 57 deletions

View File

@@ -316,8 +316,8 @@ impl Plugin for HttpPlugin {
}
}
Message::ConfigReloaded(config) => {
state.replace_config(Arc::clone(&config));
if let Some(payload) = encode_ws_event("config_update", config.as_ref()) {
state.replace_config(Arc::new(config.clone()));
if let Some(payload) = encode_ws_event("config_update", &config) {
state.publish_ws(payload);
}
}

View File

@@ -194,7 +194,7 @@ impl Plugin for VideoPlugin {
self.publish_status();
}
Message::ConfigReloaded(config) => {
let processor = Arc::new(Mutex::new(VideoProcessor::new((*config).clone())?));
let processor = Arc::new(Mutex::new(VideoProcessor::new(config)?));
if let Some(old) = self.processor.replace(Arc::clone(&processor)) {
if let Ok(mut old) = old.lock() {
let _ = old.stop();

View File

@@ -929,8 +929,10 @@ impl VideoProcessor {
if let Some(resolution) = parts.first() {
let dims: Vec<&str> = resolution.split('x').collect();
if dims.len() == 2 {
let w_str = dims[0].trim_end_matches(|c: char| !c.is_ascii_digit());
let h_str = dims[1].trim_end_matches(|c: char| !c.is_ascii_digit());
let w_str =
dims[0].trim_end_matches(|c: char| !c.is_ascii_digit());
let h_str =
dims[1].trim_end_matches(|c: char| !c.is_ascii_digit());
if let (Ok(w), Ok(h)) =
(w_str.parse::<i32>(), h_str.parse::<i32>())
{