banner

Nachricht

Sep 11, 2023

Wine und Wayland kommen durch die Zusammenführung von mehr Code einen weiteren Schritt näher

Die laufende Arbeit, Wine und Wayland Schritt für Schritt dazu zu bringen, unter Linux vollständig zusammenzuarbeiten, ist mit der Annahme eines dritten großen Zusammenführungsantrags einen weiteren Schritt vorangekommen. Wine 8.4 von Mitte März war die erste Entwicklungsversion, die tatsächlich einige der ersten Wayland-Arbeiten enthielt.

Aus der jetzt akzeptierten Zusammenführungsanforderung:

In diesem MR werden die Treibermechanismen zur Verarbeitung dynamischer Ereignisse vom Wayland-Compositor vorgestellt, wobei wl_output-Ereignisse als leitender Anwendungsfall dienen (d. h. wir möchten die Win32U-Anzeigeeinstellungen aktualisieren, wenn sich die Hosteinstellungen ändern).

In diesem Design erstellen wir einen dedizierten Thread zum Lesen und Versenden von Wayland-Ereignissen, die vom Compositor empfangen werden. Wenn ein Wayland-Ereignishandler möchte, dass Code im Kontext eines bestimmten HWND-Threads ausgeführt wird, kann er ein internes Ereignis zu einer benutzerdefinierten Warteschlange hinzufügen, die wir für jeden (GUI-aktivierten) Thread haben. Der ProcessEvents-Treiberrückruf verarbeitet interne Ereignisse aus dieser Warteschlange. Um wartende Threads aufzuwecken, verwenden wir eine Pipe, um über neue interne Ereignisse zu benachrichtigen, wobei das Leseende als Host-Warteschlange fd des Threads fungiert. Dies ähnelt der Funktionsweise von winemac.drv.

Wir verwenden die oben genannten Mechanismen, um Win32U-Anzeigegeräteaktualisierungen im Desktop-Fenster-Thread in die Warteschlange zu stellen. Da viele Teile zusammenpassen müssen, erreicht dieser MR nach und nach das endgültige Design:

Warum ist das eigentlich nötig? Nun, derzeit verwendet Wine X11, und daher wird es für jeden, der Wayland ausführt, über XWayland ausgeführt, was im Grunde genommen X ist, das wie eine Kompatibilitätsschicht unter Wayland ausgeführt wird. Wie Collabora in ihrer ursprünglichen Ankündigung im Jahr 2020 darüber sagte, sei es „eine Quelle von Komplexität und möglichen Ineffizienzen“ und daher wäre es „ideal, wenn Wine direkt mit Wayland sprechen könnte, um einen schlankeren und effizienteren Stack auf modernen Systemen zu ermöglichen.“ "

Das Endergebnis sollte also sein, dass die Benutzer von Wayland, also letztendlich alle, Wine ohne die XWayland-Ebene nutzen können und dass alles auch in Zukunft gut funktioniert.

Liam Dawe Über den Autor – Liam Dawe
AKTIE