V2-202509
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
# demo.c - 多屏幕信息窗口演示程序
|
||||
|
||||
## 概述
|
||||
一个基于GTK+和Xrandr的多屏幕信息演示程序。在所有连接的显示器上依次创建信息窗口,显示屏幕分辨率、位置等信息,支持多轮测试和窗口位置校验。
|
||||
|
||||
## 程序结构
|
||||
|
||||
### 全局变量
|
||||
| 变量 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| `info_windows` | `GtkWidget**` | 各屏幕信息窗口指针数组 |
|
||||
| `total_screens` | `int` | 连接的显示器总数 |
|
||||
| `screen_widths/heights` | `int*` | 各屏幕宽高 |
|
||||
| `screen_x_offsets/y_offsets` | `int*` | 各屏幕坐标偏移 |
|
||||
| `screen_names` | `char**` | 屏幕接口名(如HDMI-1) |
|
||||
| `current_test_round` | `int` | 当前测试轮次 |
|
||||
| `total_test_rounds` | `int` | 总测试轮次 |
|
||||
| `win_time_delay` | `int` | 窗口创建间隔(ms),默认50 |
|
||||
|
||||
## 工作原理
|
||||
|
||||
1. **屏幕信息获取**: 使用Xrandr扩展查询所有已连接的输出设备及其CRTC信息
|
||||
2. **窗口创建**: 每个屏幕创建一个比屏幕尺寸小20像素的窗口,偏移(10,10)
|
||||
3. **定时创建**: 窗口按`win_time_delay`毫秒间隔依次创建
|
||||
4. **空格键控制**: 用户按空格键关闭所有窗口,进入下一轮测试
|
||||
5. **窗口校验**: 每轮结束后校验窗口位置和大小(允许±5像素误差)
|
||||
6. **日志记录**: 所有操作记录到`screen_demo.log`文件
|
||||
|
||||
## 关键函数
|
||||
|
||||
| 函数 | 功能 |
|
||||
|------|------|
|
||||
| `get_screen_info()` | 通过Xrandr获取所有屏幕信息 |
|
||||
| `create_info_window()` | 创建单个屏幕的信息窗口 |
|
||||
| `create_next_window()` | 定时回调,依次创建窗口 |
|
||||
| `verify_windows()` | 校验窗口位置和大小 |
|
||||
| `start_next_test_round()` | 开始新一轮测试 |
|
||||
| `on_key_press()` | 空格键事件处理 |
|
||||
|
||||
## 窗口布局
|
||||
```
|
||||
窗口位置: (screen_x + 10, screen_y + 10)
|
||||
窗口大小: (screen_width - 20) x (screen_height - 20)
|
||||
```
|
||||
|
||||
## 调用方式
|
||||
```bash
|
||||
./demo
|
||||
```
|
||||
|
||||
## 依赖
|
||||
- GTK+ 3.x
|
||||
- X11 + Xrandr扩展
|
||||
Reference in New Issue
Block a user