A Canonical lançou a versão 2.26.0 do Mir — um novo compositor e conjunto de bibliotecas para a criação de shells e ambientes gráficos baseados em Wayland.
Wayland e novos protocolos
- Adicionada uma implementação MVP do protocolo ext-input-triggers (V1).
- Esboço do protocolo implementado ext-input-triggers para processar gatilhos de entrada em Wayland. Essa funcionalidade é considerada privilegiada e não é ativada por padrão.
- Arquivo de especificação atualizado ext-input-trigger-action-v1.xml: foram adicionadas clarificações sobre a validade e acessibilidade dos tokens.
- Adicionada implementação parcial de ext_image_copy_capture_v1 para sessões de cursor.
- Implementado transmissão de imagem do cursor via ext_image_copy_capture_v1.
Rust e o desenvolvimento da arquitetura
- Iniciada a implementação do frontend do Wayland em Rust.
- O trabalho na plataforma de entrada baseada em Rust continuou. Este ainda não é o caminho principal para o processamento de entrada, mas já é um passo prático para a integração gradual do Rust no projeto.
Subsistema de entrada: evdev-rs
- Implementado suporte a eventos de toque (touch events).
- Código do módulo de dispositivo limpo.
- Corrigida a manipulação dos eventos dos dispositivos apontadores: o estado dos botões foi transferido para o armazenamento no nível dos dispositivos individuais.
- A lógica de processamento de eventos foi reformulada para aumentar a clareza e a manutenibilidade do código.
Cursor, janelas, API e infraestrutura interna
- Para CursorObservers adicionada a possibilidade de rastrear alterações na imagem do cursor.
- Componente CursorObserverMultiplexer agora envia o estado inicial para novos observadores registrados.
- Refatoração realizada MinimalWindowManager.
- Adicionada a possibilidade de definir o canal alpha da janela e obtê-lo através de WindowInfo.
- Adicionados aos templates libmiral requires clauses, o que melhora a rigorosidade das restrições ao nível do código template C++.
- Realizada a transferência APIs de logging e valores padrão para mircore.
- Chamada strerror() substituída por strerror_r() seguro para threads.
Correções de bugs
- Corrigido erro em que BasicXCBConnection::destroy_window chamava xcb_map_window ao invés de xcb_destroy_window.
- Corrigido problema onde as respostas do XCB nem sempre eram liberadas.
- Corrigido erro: a reprodução em tela cheia de vídeos no Google Chrome podia não funcionar se a janela não estivesse em modo de tela cheia antecipadamente.
- Para o X11, foi adicionada a configuração correta de _NET_CLIENT_LIST_STACKING.
- Corrigida implementação não segura de manuseio de sinal fatal, que foi explicitamente descrita na versão como «extremamente insegura».
- Corrigido erro onde a verificação DRM_CLIENT_CAP_ATOMIC era realizada através de uma chamada ioctl incorreta.
- Limpeza e aprimoramento da lógica foram realizados mgk::find_crtc_with_primary_plane.
- Comportamento de oclusão corrigido: se a superfície tem uma área opaca, mas seu alpha não é igual a 1.0, ela não deve mais ser usada como totalmente cobridora.
Outros
- Foi notado um aumento no número de novos participantes do projeto: o lançamento do Mir 2.26.0 inclui contribuições de vários novatos, que os desenvolvedores interpretam como um sinal de crescimento da comunidade em torno do Mir.
Fonte: linux.org.ru
