Описать архитектуру приложения в readme
Opened this issue · 0 comments
@AndrewCrewKuznetsov, необходимо высокоуровневое описание того, как приложение работает и почему именно так. Например, изучая код (к сожалению, он не содержит коментариев), я нашел, что на самом верхнем уровне приложение выглядит так:
- Регистрируются обработчики сигналов
Lines 445 to 449 in 362019a
- Создается невидимое окно приложения, которое будет получать события от клавиатуры и мыши
xneur-devel/xneur/lib/main/window.c
Lines 60 to 67 in 362019a
- Создается окно для отображения флага (почему этим занимается сам xneur, а не его gxneur и kxneur?)
xneur-devel/xneur/lib/main/window.c
Lines 69 to 79 in 362019a
- Создаются обработчики событий подсистеы X Window
xneur-devel/xneur/lib/main/program.c
Line 3514 in 362019a
- Создаются обработчики смены фокуса активного окна
xneur-devel/xneur/lib/main/program.c
Line 3515 in 362019a
- При смене фокуса основное окно приложения подписывается на интересующие его события сфокусированного окна и отписывается от событий ранее сфокусированного окна
xneur-devel/xneur/lib/main/focus.c
Lines 220 to 234 in f66723f
- При смене фокуса основное окно приложения подписывается на интересующие его события сфокусированного окна и отписывается от событий ранее сфокусированного окна
- Запускается бесконечный цикл ожидания событий от X Window
xneur-devel/xneur/lib/main/program.c
Lines 328 to 334 in 362019a
Хотелось бы более подробное и официальное описание работы. Например,
- почему сделаны постоянные подписывания/отписывания от события? Чем это лучше, если бы основное окно подписалось на все события?
- Каким образом осуществляется само действие смены раскладки?
- Зачем вообще создается окно приложения, почему нельзя было сразу подписать root window?
- Зачем реализована система аля классы C++, хотя везде всего одна "реализация" (т.е. есть структура с функциями, при вызове методов
structname_init
туда записываются адреса функций, а далее вызываются они через указатели из структуры). Эти косвенные вызовы усложняет анализ кода, а преимуществ не видно - Жизненный цикл плагинов