diff --git a/src-tauri/resource/scrcpy-mask-server-v2.4 b/src-tauri/resource/scrcpy-mask-server-v2.4 new file mode 100755 index 0000000..1579d38 Binary files /dev/null and b/src-tauri/resource/scrcpy-mask-server-v2.4 differ diff --git a/src-tauri/resource/scrcpy-server-v2.4 b/src-tauri/resource/scrcpy-server-v2.4 deleted file mode 100644 index 1d867f8..0000000 Binary files a/src-tauri/resource/scrcpy-server-v2.4 and /dev/null differ diff --git a/src-tauri/src/resource.rs b/src-tauri/src/resource.rs index 90ca484..a5d8199 100644 --- a/src-tauri/src/resource.rs +++ b/src-tauri/src/resource.rs @@ -28,7 +28,7 @@ impl ResHelper { } pub fn get_file_path(dir: &PathBuf, file_name: ResourceName) -> PathBuf { match file_name { - ResourceName::ScrcpyServer => dir.join("scrcpy-server-v2.4"), + ResourceName::ScrcpyServer => dir.join("scrcpy-mask-server-v2.4"), ResourceName::DefaultKeyConfig => dir.join("default-key-config.json"), } } diff --git a/src-tauri/src/socket.rs b/src-tauri/src/socket.rs index 5c53396..bb84fbe 100644 --- a/src-tauri/src/socket.rs +++ b/src-tauri/src/socket.rs @@ -73,7 +73,12 @@ async fn read_socket( } let device_name = std::str::from_utf8(&buf[..end]).unwrap(); // update device name for share - share::CLIENT_INFO.lock().unwrap().as_mut().unwrap().device_name = device_name.to_string(); + share::CLIENT_INFO + .lock() + .unwrap() + .as_mut() + .unwrap() + .device_name = device_name.to_string(); let msg = json!({ "type": "MetaData", @@ -149,6 +154,20 @@ async fn handle_device_message( let mut buf: Vec = vec![0; size as usize]; reader.read_exact(&mut buf).await?; } + // 设备旋转 + DeviceMsgType::DeviceMsgTypeRotation => { + let rotation = reader.read_u16().await?; + let width = reader.read_i32().await?; + let height = reader.read_i32().await?; + let msg = json!({ + "type": "DeviceRotation", + "rotation": rotation, + "width": width, + "height": height + }) + .to_string(); + device_reply_sender.send(msg).await?; + } }; anyhow::Ok(()) } @@ -181,6 +200,8 @@ async fn recv_front_msg( // 处理Scrcpy Mask命令 if let Some(cmd_type) = ScrcpyMaskCmdType::from_i64(front_msg_type) { if let ScrcpyMaskCmdType::Shutdown = cmd_type { + *share::CLIENT_INFO.lock().unwrap() = None; + drop(write_half); println!("Drop TcpStream writer"); app.unlisten(listen_handler); @@ -197,7 +218,7 @@ async fn recv_front_msg( } } } else { - eprintln!("fc-command非法"); + eprintln!("fc-command invalid!"); eprintln!("{:?}", payload); } } @@ -212,6 +233,7 @@ enum DeviceMsgType { DeviceMsgTypeClipboard, DeviceMsgTypeAckClipboard, DeviceMsgTypeUhidOutput, + DeviceMsgTypeRotation, } impl DeviceMsgType { @@ -220,6 +242,7 @@ impl DeviceMsgType { 0 => Some(Self::DeviceMsgTypeClipboard), 1 => Some(Self::DeviceMsgTypeAckClipboard), 2 => Some(Self::DeviceMsgTypeUhidOutput), + 3 => Some(Self::DeviceMsgTypeRotation), _ => None, } } diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 7b45bd7..3f65b13 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -33,7 +33,7 @@ ], "resources": [ "resource/default-key-config.json", - "resource/scrcpy-server-v2.4" + "resource/scrcpy-mask-server-v2.4" ] } }