Компания Canonical представи релиз Mir 2.26.0 — нова версия на композитора и набор от библиотеки за изграждане на обвивки и графични среди на базата на Wayland.
Wayland и новите протоколи
- Добавена MVP-реализация на протокола ext-input-triggers (V1).
- Реализиран черновик на протокола ext-input-triggers за обработка на тригери за въвеждане в Wayland. Тази функционалност се счита за привилегирована и не се включва по подразбиране.
- Актуализиран файл на спецификацията ext-input-trigger-action-v1.xml: в него са добавени уточнения относно валидността и достъпността на токените.
- Добавена е частична реализация на ext_image_copy_capture_v1 за cursor sessions.
- Реализирана передача на изображението на курсора чрез ext_image_copy_capture_v1.
Rust и развитието на архитектурата
- Започнала е реализация на Wayland frontend на Rust.
- Продължава работата по платформата за въвеждане на базата на Rust. Това все още не е основният начин за обработка на введените данни, но вече е практическа стъпка към постепенното интегриране на Rust в проекта.
Подсистема за въвеждане: evdev-rs
- Реализирана е поддръжка на събития на докосване (touch events).
- Почистен е кодът на модула device.
- Коригирана е обработката на събития от указателни устройства: състоянието на бутоните е преместено в хранилището на ниво отделни устройства.
- Логиката на обработка на събитията е преработена за повишаване на яснотата и поддръжката на кода.
Курсор, прозорци, API и вътрешна инфраструктура
- За CursorObservers добавена е възможността за проследяване на промените в изображението на курсора.
- Компонент CursorObserverMultiplexer сега изпраща началното състояние на новозаписаните наблюдатели.
- Проведен е рефакторинг MinimalWindowManager.
- Добавена е възможност да задавате alpha-канала на прозореца и да го получавате чрез WindowInfo.
- В шаблоните libmiral са добавени requires clauses, което подобрява строгостта на ограниченията на ниво шаблонен код C++.
- Извършен е пренос logging APIs и стойности по подразбиране в mircore.
- Викът на strerror() е заменен с потокобезопасен strerror_r().
Поправки на грешки
- Коригирана е грешка, при която BasicXCBConnection::destroy_window е извиквал xcb_map_window вместо xcb_destroy_window.
- Премахната е проблема, поради която отговорите на XCB не винаги са освобождавали.
- Коригирана е грешка: пълноекранното възпроизвеждане на видео в Google Chrome можеше да не работи, ако прозорецът предварително не е бил в режим на пълноекран.
- За X11 е добавена коректна настройка _NET_CLIENT_LIST_STACKING.
- Коригирана е небезопасната реализация на fatal signal handling, която в релиза е била наречена "wildly unsafe".
- Коригирана е грешка, при която проверката DRM_CLIENT_CAP_ATOMIC беше изпълнявана чрез неверен ioctl-вик.
- Проведено почистване и подобряване на логиката mgk::find_crtc_with_primary_plane.
- Коригирано поведение на затъмнението (occlusion): ако повърхността има непрозрачна област, но alpha не е равна на 1.0, тя вече не трябва да се използва като напълно покриваща.
Други
- Отбелязано е увеличение на броя на новите участници в проекта: релизът Mir 2.26.0 включва приноса на няколко новаци, което разработчиците интерпретират като признак за растеж на общността около Mir.
Източник: linux.org.ru
