[refactor] 整理注释
This commit is contained in:
+16
-21
@@ -9,36 +9,35 @@
|
||||
#include <pic.h>
|
||||
#include <string_utils.h>
|
||||
|
||||
// --- Layer list (sorted by z, lowest first) ---
|
||||
// 图层列表(按 z 排序,最低在前)
|
||||
|
||||
static layer_t g_layers[LAYER_MAX];
|
||||
static UINT32 g_layer_count = 0;
|
||||
static layer_t* g_layer_list = NULL;
|
||||
|
||||
// Compositor back buffer
|
||||
// 合成器后台缓冲区
|
||||
static EFI_GRAPHICS_OUTPUT_BLT_PIXEL* g_back_buffer = NULL;
|
||||
|
||||
// Focus tracking
|
||||
// 焦点追踪
|
||||
static layer_t* g_focused = NULL;
|
||||
|
||||
// Shift+F10 state (set by IRQ handler, consumed by compositor)
|
||||
// Shift+F10 状态(由 IRQ 处理函数设置,合成器消费)
|
||||
static volatile bool g_shift_held = false;
|
||||
static volatile bool g_switch_pending = false;
|
||||
static volatile layer_t* g_switch_target = NULL;
|
||||
|
||||
// PS/2 scan code set 1
|
||||
// PS/2 扫描码集 1
|
||||
#define PS2_F10 0x44
|
||||
#define PS2_LSHIFT 0x2A
|
||||
#define PS2_RSHIFT 0x36
|
||||
#define PS2_BREAK_BIT 0x80
|
||||
|
||||
// Forward declare
|
||||
// 前向声明
|
||||
static void layer_insert_sorted(layer_t* layer);
|
||||
static void layer_remove(layer_t* layer);
|
||||
static layer_t* find_next_window(layer_t* from);
|
||||
|
||||
// --- PS/2 keyboard IRQ handler ---
|
||||
|
||||
// PS/2 键盘 IRQ 处理
|
||||
static void ps2_irq_handler(trap_frame* frame) {
|
||||
(void)frame;
|
||||
pic_send_eoi(1);
|
||||
@@ -63,8 +62,7 @@ static void ps2_irq_handler(trap_frame* frame) {
|
||||
}
|
||||
}
|
||||
|
||||
// --- Layer management ---
|
||||
|
||||
// 图层管理
|
||||
layer_t* layer_create(const char* name, layer_type_t type, UINT32 w, UINT32 h) {
|
||||
if (g_layer_count >= LAYER_MAX) {
|
||||
serial_write("LAYER: limit reached\n");
|
||||
@@ -162,8 +160,7 @@ void layer_set_visible(layer_t* layer, bool visible) {
|
||||
layer->visible = visible;
|
||||
}
|
||||
|
||||
// --- Sorted insert/remove ---
|
||||
|
||||
// 有序插入/移除
|
||||
static void layer_insert_sorted(layer_t* layer) {
|
||||
layer->next = NULL;
|
||||
|
||||
@@ -216,8 +213,7 @@ static layer_t* find_next_window(layer_t* from) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// --- Initialization ---
|
||||
|
||||
// 初始化
|
||||
void layer_init(void) {
|
||||
UINT32 hr = g_gfx.hr;
|
||||
UINT32 vr = g_gfx.vr;
|
||||
@@ -235,7 +231,7 @@ void layer_init(void) {
|
||||
p++;
|
||||
}
|
||||
|
||||
// Register keyboard IRQ and unmask
|
||||
// 注册键盘 IRQ 并取消屏蔽
|
||||
idt_set_handler(PIC_IRQ_BASE + 1, ps2_irq_handler);
|
||||
pic_unmask_irq(1);
|
||||
|
||||
@@ -244,8 +240,7 @@ void layer_init(void) {
|
||||
serial_write(" bytes)\n");
|
||||
}
|
||||
|
||||
// --- Compositor task ---
|
||||
|
||||
// 合成器任务
|
||||
void layer_compositor_task(void) {
|
||||
serial_write("LAYER: compositor task running\n");
|
||||
|
||||
@@ -253,7 +248,7 @@ void layer_compositor_task(void) {
|
||||
UINT32 vr = g_gfx.vr;
|
||||
|
||||
while (1) {
|
||||
// Process deferred Shift+F10 switch (safe: not inside IRQ)
|
||||
// 处理延迟的 Shift+F10 窗口切换
|
||||
if (g_switch_pending) {
|
||||
g_switch_pending = false;
|
||||
layer_t* target = (layer_t*)g_switch_target;
|
||||
@@ -266,13 +261,13 @@ void layer_compositor_task(void) {
|
||||
}
|
||||
}
|
||||
|
||||
// Clear back buffer
|
||||
// 清除后台缓冲区
|
||||
EFI_GRAPHICS_OUTPUT_BLT_PIXEL black = {0, 0, 0, 0};
|
||||
draw_set_target(g_back_buffer, hr, vr);
|
||||
draw_rect(0, 0, hr, vr, black);
|
||||
draw_set_default_target();
|
||||
|
||||
// Composite layers from lowest z to highest
|
||||
// 按 z 从低到高合成图层
|
||||
layer_t* cur = g_layer_list;
|
||||
while (cur) {
|
||||
if (cur->visible && cur->buffer) {
|
||||
@@ -302,7 +297,7 @@ void layer_compositor_task(void) {
|
||||
cur = cur->next;
|
||||
}
|
||||
|
||||
// Blit to screen
|
||||
// Blit 到屏幕
|
||||
uefi_call_wrapper(g_gfx.GOP->Blt, 10,
|
||||
g_gfx.GOP,
|
||||
g_back_buffer,
|
||||
|
||||
Reference in New Issue
Block a user