banner

Nouvelles

Jun 09, 2023

Wine et Wayland font un pas de plus avec plus de code fusionné

Le travail en cours petit à petit pour que Wine et Wayland travaillent pleinement ensemble sur Linux a franchi une nouvelle étape, avec une troisième grande demande de fusion acceptée. Wine 8.4 de la mi-mars a été la première version de développement à contenir une partie du travail initial de Wayland.

À partir de la demande de fusion qui est maintenant acceptée :

Ce MR présente les mécanismes de pilote pour gérer les événements dynamiques du compositeur Wayland, en utilisant les événements wl_output comme cas d'utilisation guidant (c'est-à-dire que nous voulons mettre à jour les paramètres d'affichage win32u lorsque les paramètres de l'hôte changent).

Dans cette conception, nous créons un fil dédié pour lire et envoyer les événements Wayland reçus du compositeur. Si un gestionnaire d'événements Wayland souhaite que du code soit exécuté dans le contexte d'un thread HWND particulier, il peut ajouter un événement interne à une file d'attente personnalisée que nous avons pour chaque thread (activé par l'interface graphique). Le rappel du pilote ProcessEvents traite les événements internes de cette file d'attente. Afin de réveiller les threads en attente, nous utilisons un tube pour notifier les nouveaux événements internes, la fin de lecture agissant comme la file d'attente hôte du thread fd. Ceci est similaire au fonctionnement de winemac.drv.

Nous utilisons les mécanismes susmentionnés pour mettre en file d'attente les mises à jour du périphérique d'affichage win32u dans le thread de la fenêtre du bureau. Puisqu'il y a beaucoup de pièces qui doivent se mettre en place, ce MR atteint progressivement la conception finale :

Pourquoi est-ce réellement nécessaire ? Eh bien, actuellement, Wine utilise X11, et donc pour toute personne exécutant Wayland, il sera ensuite exécuté via XWayland, qui est essentiellement X exécuté sous Wayland comme une couche de compatibilité. Comme Collabora l'a dit dans son annonce initiale en 2020, ils ont dit que c'était "une source de complexité et d'éventuelles inefficacités" et donc ce serait "l'idéal si Wine pouvait parler directement à Wayland pour permettre une pile plus légère et plus efficace sur les systèmes modernes "

Ainsi, le résultat final devrait être pour les utilisateurs de Wayland, qui seront finalement tout le monde, que Wine fonctionne sans la couche XWayland et que tout fonctionne bien dans le futur.

Liam Dawe À propos de l'auteur - Liam Dawe
PARTAGER