Компания 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 за сесии с курсор.
- Реализирано передача на изображението на курсора чрез ext_image_copy_capture_v1.
Rust и развитието на архитектурата
- Започва реализацията на Wayland frontend на Rust.
- Продължава работата по платформата за въвеждане на базата на Rust. Това все още не е основният метод за обработка на вход, но е практическа стъпка към постепенно интегриране на Rust в проекта.
Подсистема за вход: evdev-rs
- Реализирана е поддръжка за събития при допир (touch events).
- Кодът на модула устройство е почистен.
- Коригирана е обработката на събития от указателни устройства: състоянието на бутоните е пренесено в хранилището на ниво отделни устройства.
- Логиката за обработка на събития е преработена за повишаване на яснотата и поддръжката на кода.
Курсор, прозорци, 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
