Доки
This commit is contained in:
76
wayland/docs/uml/diagram-activity-render.puml
Normal file
76
wayland/docs/uml/diagram-activity-render.puml
Normal file
@@ -0,0 +1,76 @@
|
||||
@startuml
|
||||
title Цикл отрисовки окна (window_thread)
|
||||
|
||||
start
|
||||
|
||||
:window_thread запущен;
|
||||
|
||||
:Создать event queue;
|
||||
:window_init();
|
||||
:Запустить aux_thread для анимации;
|
||||
|
||||
while (окно не закрыто?) is (да)
|
||||
|
||||
:wl_display_dispatch_queue();
|
||||
note right: Ожидание событий Wayland
|
||||
|
||||
if (событие произошло?) then (да)
|
||||
|
||||
if (xdg_surface_configure?) then (да)
|
||||
:xdg_surface_ack_configure();
|
||||
if (буфер не создан?) then (да)
|
||||
:resize_canvas();
|
||||
endif
|
||||
:draw();
|
||||
endif
|
||||
|
||||
if (xdg_toplevel_configure?) then (да)
|
||||
if (размер изменился?) then (да)
|
||||
:resize_new(w, h);
|
||||
note right
|
||||
- Освободить старый буфер
|
||||
- Создать новый буфер
|
||||
- Обновить размеры draw_info
|
||||
end note
|
||||
endif
|
||||
endif
|
||||
|
||||
if (xdg_toplevel_close?) then (да)
|
||||
:Установить need_close = 1;
|
||||
endif
|
||||
|
||||
if (frame_callback?) then (да)
|
||||
:Уничтожить старый callback;
|
||||
:Создать новый callback;
|
||||
|
||||
partition "draw()" {
|
||||
:Залочить figure_mutex;
|
||||
|
||||
:Очистить фон (черный);
|
||||
|
||||
:figure_draw();
|
||||
note right
|
||||
- Получить текущую фигуру
|
||||
- Нарисовать границу и заливку
|
||||
- Цвет зависит от типа фигуры
|
||||
end note
|
||||
|
||||
:Разлочить figure_mutex;
|
||||
|
||||
:wl_surface_attach(buffer);
|
||||
:wl_surface_damage_buffer();
|
||||
:wl_surface_commit();
|
||||
}
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
endwhile (нет)
|
||||
|
||||
:window_destroy();
|
||||
:Уничтожить event queue;
|
||||
:signal_thread_exit();
|
||||
|
||||
stop
|
||||
|
||||
@enduml
|
||||
Reference in New Issue
Block a user