mirror of
https://github.com/kunkundi/crossdesk.git
synced 2026-10-19 10:23:10 +08:00
[chore] remove unused ImGui code and old release notes
This commit is contained in:
+45
-32
@@ -8,14 +8,14 @@
|
||||
apps/desktop/src/gui/
|
||||
├── render.h # 对外稳定入口 Render
|
||||
├── render.cpp # 创建 GuiApplication 并转发 Run
|
||||
├── application/ # SDL/ImGui 应用外壳
|
||||
├── application/ # Slint 应用外壳
|
||||
│ ├── gui_application.h # GuiApplication 声明
|
||||
│ ├── gui_application.cpp # 初始化、主循环和清理
|
||||
│ ├── gui_application.cpp # 初始化、UI 回调、状态同步和清理
|
||||
│ ├── application_state.h # 窗口、交互和 UI 状态
|
||||
│ ├── sdl_event_dispatch.cpp # SDL 窗口及应用事件分发
|
||||
│ ├── sdl_events.cpp # 键盘和鼠标事件转换
|
||||
│ ├── window_lifecycle.cpp # 原生窗口及 ImGui 上下文生命周期
|
||||
│ └── window_rendering.cpp # 三类窗口的渲染流程
|
||||
│ ├── server_window_state.h # 被控端窗口的控制端选择逻辑
|
||||
│ └── window_geometry.h # 窗口定位计算
|
||||
├── rendering/ # Slint 与原生视频渲染器的衔接
|
||||
│ └── slint_video_presenter.h/.cpp # 视频纹理呈现与渲染通知
|
||||
├── runtime/ # 非界面的 GUI 运行时
|
||||
│ ├── gui_runtime.h/.cpp # 运行时协调接口与公共实现
|
||||
│ ├── connection_runtime.cpp # 连接、在线探测、超时及会话清理
|
||||
@@ -33,11 +33,15 @@ apps/desktop/src/gui/
|
||||
│ ├── file_transfer/ # 文件队列、发送、确认和进度
|
||||
│ ├── input/ # 键盘状态、命令和超时处理
|
||||
│ └── settings/ # 配置缓存和最近连接别名
|
||||
├── views/ # ImGui 视图实现
|
||||
│ ├── panels/ # 主窗口内嵌面板
|
||||
│ ├── toolbars/ # 标题栏、状态栏和控制栏
|
||||
│ └── windows/ # 独立窗口和模态对话框
|
||||
└── assets/ # 字体、图标、布局和本地化资源
|
||||
├── ui/ # Slint 声明式界面
|
||||
│ ├── crossdesk_ui.slint # 界面组件导出入口
|
||||
│ ├── common.slint # 共享控件、字体尺寸、颜色和图标字形
|
||||
│ ├── main_window.slint # 主窗口、面板、设置及对话框
|
||||
│ ├── stream_window.slint # 串流窗口、标签页和控制栏
|
||||
│ ├── server_window.slint # 被控端窗口
|
||||
│ ├── ui_localization.h # 本地化数据到 Slint 属性的映射
|
||||
│ └── icons/ # SVG 图标资源
|
||||
└── assets/ # 嵌入字体和本地化数据
|
||||
```
|
||||
|
||||
平台私有 GUI 实现统一位于 `apps/desktop/src/platform/<os>/gui/`,包括托盘、macOS Metal 渲染与权限、Windows 服务运行时等;Windows 与 Linux 共用的 OpenGL 渲染器位于 `apps/desktop/src/platform/common/gui/`。
|
||||
@@ -47,8 +51,9 @@ apps/desktop/src/gui/
|
||||
```text
|
||||
Render
|
||||
└── GuiApplication
|
||||
├── SDL/ImGui 生命周期
|
||||
├── views/panels / views/toolbars / views/windows
|
||||
├── Slint 窗口、事件循环和定时器
|
||||
├── ui/ 声明式组件与回调
|
||||
├── SlintVideoPresenter → 平台 VideoRenderer
|
||||
└── GuiRuntime
|
||||
├── SessionDeviceManager
|
||||
├── KeyboardController
|
||||
@@ -83,17 +88,19 @@ Render
|
||||
|
||||
### GuiApplication
|
||||
|
||||
`GuiApplication` 是 SDL/ImGui 应用外壳,负责:
|
||||
`GuiApplication` 是 Slint 应用外壳,负责:
|
||||
|
||||
- 初始化日志、配置、SDL 和功能模块;
|
||||
- 创建、销毁原生窗口及 ImGui 上下文;
|
||||
- 执行主事件循环;
|
||||
- 分发 SDL 事件;
|
||||
- 调用面板、工具栏和窗口的绘制方法;
|
||||
- 创建、销毁 Slint 主窗口、串流窗口和被控端窗口;
|
||||
- 运行 Slint 事件循环,通过定时器执行 `Tick()` 和视频帧调度;
|
||||
- 将 Slint 回调转换为连接、键盘和鼠标操作,并处理 SDL 退出及剪贴板事件;
|
||||
- 将运行时状态同步到 Slint 属性和模型,并管理原生视频呈现;
|
||||
- 在程序退出时按顺序清理资源。
|
||||
|
||||
它不应实现连接协议、文件传输、剪贴板或设备控制细节。
|
||||
|
||||
SDL 仍用于音频、显示器信息、剪贴板等平台能力。旧 ImGui 视图、窗口事件处理和专用资源已移除;`ui/common.slint` 中的 `ImGuiLineStyle`、`ImGuiFontStyle` 和 `ImGuiCheckBox` 是当前界面使用的 Slint 组件,名称表示沿用的视觉风格,不依赖 ImGui 库。`assets/fonts/fa_solid_900.h` 仍为 Slint 窗口提供 Font Awesome 图标字体。
|
||||
|
||||
### GuiRuntime
|
||||
|
||||
`GuiRuntime` 是 GUI 进程的非界面协调层,负责:
|
||||
@@ -125,7 +132,8 @@ Render
|
||||
|
||||
| 文件 | 状态范围 |
|
||||
| --- | --- |
|
||||
| `application/application_state.h` | SDL 窗口、渲染上下文、交互标志和 UI 显示状态 |
|
||||
| `application/application_state.h` | 应用退出、交互、更新、窗口生命周期请求和共享 UI 状态 |
|
||||
| `GuiApplication::SlintUi` | Slint 窗口句柄、定时器、视频呈现器、托盘和界面同步缓存 |
|
||||
| `runtime/runtime_state.h` | 配置、Peer、连接表、在线探测和平台集成状态 |
|
||||
| `runtime/remote_session.h` | 单个远端会话独占的连接、媒体、控制和文件状态 |
|
||||
| `runtime/gui_state.h` | 仅组合 `ApplicationState` 与 `RuntimeState` |
|
||||
@@ -147,20 +155,23 @@ Render::Run
|
||||
→ 初始化路径、日志和配置
|
||||
→ 初始化 SDL 和功能模块
|
||||
→ GuiRuntime::CreateConnectionPeer
|
||||
→ 创建主窗口
|
||||
→ GuiApplication::MainLoop
|
||||
→ GuiApplication::InitializeUi 创建主窗口并绑定回调
|
||||
→ 启动 Tick 定时器和视频帧调度
|
||||
→ slint::run_event_loop
|
||||
→ Tick 协调连接、处理后台事件并同步窗口状态
|
||||
```
|
||||
|
||||
### 建立远端连接
|
||||
|
||||
```text
|
||||
remote_peer_panel
|
||||
MainWindow::connect_requested
|
||||
→ GuiApplication::ConnectFromUi
|
||||
→ GuiRuntime::ConnectTo
|
||||
→ 在线状态探测
|
||||
→ 创建或复用 RemoteSession
|
||||
→ MiniRTC JoinConnection
|
||||
→ PeerEventHandler 接收连接状态
|
||||
→ 创建串流窗口并开始渲染
|
||||
→ SyncStreamWindow 创建串流窗口并开始呈现视频
|
||||
```
|
||||
|
||||
### 接收远端数据
|
||||
@@ -178,12 +189,11 @@ MiniRTC callback
|
||||
### 退出和清理
|
||||
|
||||
```text
|
||||
SDL quit / tray exit
|
||||
Slint quit / SDL quit / tray exit
|
||||
→ GuiApplication::Cleanup
|
||||
→ CloseAllRemoteSessions
|
||||
→ 停止设备及后台任务
|
||||
→ 销毁 Peer
|
||||
→ 销毁 ImGui 上下文和 SDL 窗口
|
||||
→ CloseAllRemoteSessions 并等待会话清理
|
||||
→ 分离视频呈现器并释放 Slint 窗口和托盘
|
||||
→ SDL_Quit
|
||||
```
|
||||
|
||||
@@ -193,7 +203,8 @@ SDL quit / tray exit
|
||||
|
||||
| 功能 | 目录 |
|
||||
| --- | --- |
|
||||
| SDL 初始化、事件循环、窗口生命周期 | `application/` |
|
||||
| Slint/SDL 初始化、UI 回调、状态同步和窗口生命周期 | `application/` |
|
||||
| Slint 与原生视频渲染器的衔接 | `rendering/` |
|
||||
| 连接、会话、Peer 回调和平台运行时 | `runtime/` |
|
||||
| 视频、音频、鼠标、键盘设备生命周期 | `features/devices/` |
|
||||
| 键盘状态与桌面输入处理 | `features/input/` |
|
||||
@@ -201,8 +212,10 @@ SDL quit / tray exit
|
||||
| 剪贴板同步 | `features/clipboard/` |
|
||||
| 文件传输 | `features/file_transfer/` |
|
||||
| 配置持久化 | `features/settings/` |
|
||||
| 主窗口内嵌区域 | `views/panels/` |
|
||||
| 标题栏、状态栏、控制栏 | `views/toolbars/` |
|
||||
| 独立窗口和对话框 | `views/windows/` |
|
||||
| 主窗口内嵌区域、设置和对话框 | `ui/main_window.slint` |
|
||||
| 串流标签页、控制栏和统计面板 | `ui/stream_window.slint` |
|
||||
| 被控端窗口 | `ui/server_window.slint` |
|
||||
| 共享控件、字体尺寸、颜色和图标字形 | `ui/common.slint` |
|
||||
| 系统托盘 | `apps/desktop/src/platform/<os>/gui/tray/` |
|
||||
| 字体、图标、布局和本地化数据 | `assets/` |
|
||||
| 嵌入字体和本地化数据 | `assets/` |
|
||||
| SVG 图标资源 | `ui/icons/` |
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
# **更新内容**
|
||||
|
||||
1. 新增原生iOS/iPadOS客户端v0.0.1,支持远程画面与音频、触控鼠标和键盘输入、多显示器切换、双向文件传输及接收远端文本剪贴板。
|
||||
2. 完善iOS远程操作体验,提供相对位置与绝对位置鼠标模式、捏合缩放及悬浮控制菜单,支持查看连接状态、P2P/中继模式、分辨率与码率;修复切回前台后画面无法恢复、相对鼠标跳动及灵动岛遮挡控件等问题。
|
||||
3. 新增帧率优先、画质优先和平衡三种画面偏好,优化带宽变化时的分辨率、帧率与码率调节,提升远程桌面的清晰度和流畅度。
|
||||
4. 优化Windows与macOS原生视频采集、硬件编码和渲染流程,减少画面拷贝;Linux新增CUDA/OpenGL视频渲染,提升硬件解码画面的显示效率。
|
||||
5. 优化P2P连接建立与UPnP支持,支持连接从中继升级为P2P,并改进ICE连接、视频恢复及音视频时间戳处理,提升弱网和网络变化时的连接稳定性。
|
||||
6. 修复Windows锁屏界面无法远程控制,以及部分设备因OpenGL初始化失败导致启动崩溃的问题,优化锁屏画面采集与恢复。
|
||||
7. 修复桌面端与iOS端设备在线状态更新不及时、桌面端启动后托盘图标未显示的问题,并将连接清理移出界面线程,减少断开连接时的卡顿。
|
||||
8. 完善iOS与桌面端跨平台构建和打包流程,更新界面截图、构建指南、自托管说明及常见问题文档。
|
||||
|
||||
PC客户端版本为v1.5.0,iOS/iPadOS客户端使用独立版本号,本次为v0.0.1。iOS/iPadOS客户端要求iOS 16.0及以上版本和arm64真机,提供的构建包为未签名应用,需要自行签名后安装;目前仅支持作为控制端连接电脑。
|
||||
@@ -1,10 +0,0 @@
|
||||
# **更新内容**
|
||||
|
||||
1. 新增Windows、macOS与Linux X11隐私屏,支持遮蔽被控端本地画面、屏蔽本地键鼠输入,并在断开连接或异常时自动恢复;远程会话保持正常操作。
|
||||
2. 增强桌面端与iOS端P2P穿透能力,优化UDP打洞、ICE连接建立与带宽恢复,支持使用服务器下发的连接配置,并改善加密传输与旧版客户端的兼容性。
|
||||
3. 新增Windows屏幕采集方式设置,支持DXGI、WGC与GDI;修复锁屏、隐私屏及未连接物理鼠标时远程光标不可见、位置异常和拖动窗口时出现重复光标的问题。
|
||||
4. 优化画面缩小时的显示清晰度、帧率与分辨率恢复,修复Windows、macOS与Linux系统音频采集可能卡住的问题,提升远程画面与音频的稳定性。
|
||||
5. 修复Linux X11远程键盘输入与macOS窗口缩放光标识别,改进鼠标操作和光标状态传输的可靠性;优化控制栏提示、网络状态布局与加密状态显示,并修复部分平台的Dock及任务栏图标显示问题。
|
||||
6. 完善iOS/iPadOS连接失败提示,保留密码错误、设备不可用和网络中断等具体原因,简化服务器配置并优化原生客户端构建流程。
|
||||
|
||||
PC客户端版本为v1.5.1,iOS/iPadOS客户端暂未上架App Store,目前仅支持作为控制端连接远端电脑。隐私屏需控制端与被控端均支持,暂不支持Web及旧版客户端;macOS要求14.0及以上版本,Linux仅支持X11会话。
|
||||
Reference in New Issue
Block a user