Firma Canonical zaprezentowała wydanie Mir 2.26.0 — nowej wersji kompozytora i zestawu bibliotek do tworzenia powłok i środowisk graficznych opartych na Wayland.
Wayland i nowe protokoły
- Dodano wersję MVP protokołu ext-input-triggers (V1).
- Zrealizowano szkic protokołu ext-input-triggers do przetwarzania wyzwalaczy wejścia w Wayland. Ta funkcjonalność uznawana jest za uprzywilejowaną i nie jest włączana domyślnie.
- Zaktualizowano plik specyfikacji ext-input-trigger-action-v1.xml: dodano w nim szczegóły dotyczące ważności i dostępności tokenów.
- Dodano częściowa implementacja ext_image_copy_capture_v1 dla sesji kursora.
- Zrealizowano przesyłanie obrazu kursora przez ext_image_copy_capture_v1.
Rust i rozwój architektury
- Rozpoczęto implementację interfejsu Wayland w Rust.
- Kontynuowano prace nad platformą wejściową opartą na Rust. To jeszcze nie główny sposób przetwarzania wejścia, ale już praktyczny krok do stopniowej integracji Rust w projekcie.
Podsystem wejścia: evdev-rs
- Zrealizowano wsparcie dla zdarzeń dotykowych (touch events).
- Oczyściliśmy kod modułu device.
- Poprawiono przetwarzanie zdarzeń urządzeń wskaźnikowych: stan przycisków przeniesiono do przechowywania na poziomie poszczególnych urządzeń.
- Logika przetwarzania zdarzeń została przeprojektowana w celu poprawy jasności i możliwością śledzenia kodu.
Kursor, okna, API i wewnętrzna infrastruktura
- Dla CursorObservers dodano możliwość śledzenia zmian obrazu kursora.
- Komponent CursorObserverMultiplexer teraz wysyła początkowy stan nowym zarejestrowanym obserwatorom.
- Przeprowadzono refaktoryzację MinimalWindowManager.
- Dodano możliwość ustawić kanał alfa okna i uzyskać go przez WindowInfo.
- Dodano do szablonów libmiral klauzule requires, co poprawia surowość ograniczeń na poziomie kodu szablonu C++.
- Zrealizowano przeniesienie API rejestrowania i wartości domyślne do mircore.
- Wywołanie strerror() zostało zastąpione bezpiecznym dla wątków strerror_r().
Poprawki błędów
- Naprawiono błąd, w którym BasicXCBConnection::destroy_window wywoływał xcb_map_window zamiast xcb_destroy_window.
- Usunięto problem, przez który odpowiedzi XCB nie były zawsze zwalniane.
- Naprawiono błąd: pełnoekranowe odtwarzanie wideo w Google Chrome mogło nie działać, jeśli okno wcześniej nie było w trybie pełnoekranowym.
- Dla X11 dodano poprawne ustawienie _NET_CLIENT_LIST_STACKING.
- Poprawiono niebezpieczną implementację fatal signal handling, która została bezpośrednio określona w wydaniu jako «wildly unsafe».
- Naprawiono błąd, w którym weryfikacja DRM_CLIENT_CAP_ATOMIC była przeprowadzana przez nieprawidłowe wywołanie ioctl.
- Przeprowadzono oczyszczenie i ulepszenie logiki mgk::find_crtc_with_primary_plane.
- Poprawiono zachowanie zaciemnienia (occlusion): jeśli powierzchnia ma nieprzezroczysty obszar, ale jej alfa nie wynosi 1.0, nie powinna być już używana jako całkowicie przesłaniająca.
Inne
- Zauważono wzrost liczby nowych uczestników projektu: wydanie Mir 2.26.0 zawiera wkład kilku nowicjuszy, co deweloperzy interpretują jako oznakę wzrostu społeczności wokół Mir.
Źródło: linux.org.ru
