La empresa Canonical ha presentado el lanzamiento de Mir 2.26.0, una nueva versión del compositor y conjunto de bibliotecas para la construcción de entornos de escritorio y gráficos basados en Wayland.
Wayland y nuevos protocolos
- Se ha añadido una implementación MVP del protocolo ext-input-triggers (V1).
- Se ha implementado un borrador del protocolo ext-input-triggers para el manejo de los disparadores de entrada en Wayland. Esta funcionalidad se considera privilegiada y no se incluye por defecto.
- Se ha actualizado el archivo de especificación ext-input-trigger-action-v1.xml: se han añadido aclaraciones sobre la validez y disponibilidad de los tokens.
- Se ha añadido implementación parcial de ext_image_copy_capture_v1 para sesiones de cursor.
- Se ha implementado transmisión de la imagen del cursor a través de ext_image_copy_capture_v1.
Rust y desarrollo de la arquitectura
- Se ha iniciado la implementación del frontend de Wayland en Rust.
- Se ha continuado con el trabajo sobre la plataforma de entrada basada en Rust. Este aún no es el camino principal para el manejo de entradas, pero ya es un paso práctico hacia la integración gradual de Rust en el proyecto.
Subsistema de entrada: evdev-rs
- Se ha implementado el soporte para eventos táctiles (touch events).
- Se ha limpiado el código del módulo de dispositivo.
- Se ha corregido el manejo de eventos de dispositivos señaladores: el estado de los botones se ha trasladado al almacenamiento a nivel de dispositivos individuales.
- La lógica de manejo de eventos ha sido revisada para mejorar la claridad y mantenibilidad del código.
Cursor, ventanas, API e infraestructura interna
- Para CursorObservers se ha añadido la capacidad de rastrear cambios en la imagen del cursor.
- Componente CursorObserverMultiplexer ahora envía el estado inicial a los nuevos observadores registrados.
- Se ha realizado una refactorización MinimalWindowManager.
- Se ha añadido la posibilidad de especificar el canal alpha de la ventana y obtenerlo a través de WindowInfo.
- Se han añadido a las plantillas de libmiral cláusulas requires, lo que mejora la estricta imposición de restricciones a nivel de código templado en C++.
- Se ha llevado a cabo la transferencia de APIs de logging y valores por defecto a mircore.
- La llamada a strerror() ha sido reemplazada por strerror_r() segura para hilos.
Corrección de errores
- Se ha corregido un error en el que BasicXCBConnection::destroy_window llamaba a xcb_map_window en lugar de xcb_destroy_window.
- Se ha solucionado un problema por el que las respuestas de XCB no se liberaban siempre.
- Se ha corregido un error: la reproducción de video en pantalla completa en Google Chrome podría no funcionar si la ventana no estaba previamente en modo de pantalla completa.
- Para X11 se ha añadido una correcta configuración de _NET_CLIENT_LIST_STACKING.
- Se ha corregido una implementación insegura de manejo de señales fatales, que en el lanzamiento fue descrita como «extremadamente insegura».
- Se ha corregido un error en el que la verificación de DRM_CLIENT_CAP_ATOMIC se realizaba a través de una llamada ioctl incorrecta.
- Se realizó la limpieza y mejora de la lógica mgk::find_crtc_with_primary_plane.
- Se corrigió el comportamiento de la oclusión: si la superficie tiene un área opaca, pero su alpha no es igual a 1.0, ya no debe utilizarse como cubriente total.
Otros
- Se ha observado un aumento en el número de nuevos participantes en el proyecto: el lanzamiento de Mir 2.26.0 incluye contribuciones de varios novatos, lo que los desarrolladores interpretan como un signo de crecimiento de la comunidad alrededor de Mir.
Fuente: linux.org.ru
