<div dir="ltr">Hi Pekka,<br><div class="gmail_extra"><br></div><div class="gmail_extra">Sorry in advance for my (too) late comment... Just one thing I would have mentioned (see below).</div><div class="gmail_extra"><br><div class="gmail_quote">On 18 August 2017 at 15:29, Pekka Paalanen <span dir="ltr"><<a href="mailto:ppaalanen@gmail.com" target="_blank">ppaalanen@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-">From: Pekka Paalanen <<a href="mailto:pekka.paalanen@collabora.co.uk">pekka.paalanen@collabora.co.<wbr>uk</a>><br>
<br>
This is a rough intro to what Xwayland is and does, with just one<br>
implementation detail so far (Window identification).<br>
<br>
I paid no attention to formatting details, those can be polished in<br>
follow-ups. I just want the prose out.<br>
<br>
I also just quickly whacked up the diagram, would be happy to see<br>
someone replace it with a nicer one. I just didn't have time to learn<br>
dot for now.<br>
<br>
v2:<br>
- typo fix<br>
- rephrase "talking to hardware" as "driving the displays"<br>
- mention circular dependency in intro<br>
- add section to explain rootless and rootful modes<br>
- remove paragraph about Xwayland protocol usage<br>
- move TBD part to the end under a new section header<br>
<br>
v3:<br>
- use "advantage" and "disadvantage" instead of "pro" and "con"<br>
- slight rewording on rootful mode and rootless mode paragraphs<br>
- removed the paragraph about the lack of shell and special Wayland<br>
  protocol extensions<br>
- removed the commented out list of ideas to write<br>
<br>
</span>v4:<br>
- typo fixes pointed out by Yong<br>
<div><div class="gmail-h5"><br>
Cc: Olivier Fourdan <<a href="mailto:ofourdan@redhat.com">ofourdan@redhat.com</a>><br>
Cc: Jonas Ådahl <<a href="mailto:jadahl@gmail.com">jadahl@gmail.com</a>><br>
Cc: Daniel Stone <<a href="mailto:daniel@fooishbar.org">daniel@fooishbar.org</a>><br>
Signed-off-by: Pekka Paalanen <<a href="mailto:pekka.paalanen@collabora.co.uk">pekka.paalanen@collabora.co.<wbr>uk</a>><br>
---<br>
 doc/publican/Makefile.am                           |   5 +-<br>
 doc/publican/sources/Wayland.<wbr>xml                   |   1 +<br>
 doc/publican/sources/Xwayland.<wbr>xml                  | 170 +++++++++++++++++++++<br>
 .../sources/images/xwayland-<wbr>architecture.png       | Bin 0 -> 7611 bytes<br>
 4 files changed, 175 insertions(+), 1 deletion(-)<br>
 create mode 100644 doc/publican/sources/Xwayland.<wbr>xml<br>
 create mode 100644 doc/publican/sources/images/<wbr>xwayland-architecture.png<br>
<br>
diff --git a/doc/publican/Makefile.am b/doc/publican/Makefile.am<br>
index 57728a0..e861fe6 100644<br>
--- a/doc/publican/Makefile.am<br>
+++ b/doc/publican/Makefile.am<br>
@@ -24,9 +24,11 @@ publican_sources = \<br>
        $(srcdir)/sources/Preface.xml \<br>
        $(srcdir)/sources/Revision_<wbr>History.xml \<br>
        $(srcdir)/sources/Protocol.xml \<br>
+       $(srcdir)/sources/Xwayland.xml \<br>
        $(srcdir)/sources/Compositors.<wbr>xml \<br>
        $(srcdir)/sources/images/icon.<wbr>svg  \<br>
        $(srcdir)/sources/images/<wbr>wayland.png \<br>
+       $(srcdir)/sources/images/<wbr>xwayland-architecture.png \<br>
        $(srcdir)/sources/Client.xml \<br>
        $(srcdir)/sources/Server.xml<br>
<br>
@@ -43,7 +45,8 @@ css_sources = \<br>
<br>
 img_sources = \<br>
        $(srcdir)/sources/images/icon.<wbr>svg \<br>
-       $(srcdir)/sources/images/<wbr>wayland.png<br>
+       $(srcdir)/sources/images/<wbr>wayland.png \<br>
+       $(srcdir)/sources/images/<wbr>xwayland-architecture.png<br>
<br>
 doxygen_img_sources := \<br>
        $(doxydir)/xml/wayland-<wbr>architecture.png \<br>
diff --git a/doc/publican/sources/<wbr>Wayland.xml b/doc/publican/sources/<wbr>Wayland.xml<br>
index 2f47f13..0457c15 100644<br>
--- a/doc/publican/sources/<wbr>Wayland.xml<br>
+++ b/doc/publican/sources/<wbr>Wayland.xml<br>
@@ -11,6 +11,7 @@<br>
   <xi:include href="Compositors.xml" xmlns:xi="<a href="http://www.w3.org/2001/XInclude" rel="noreferrer" target="_blank">http://www.w3.org/<wbr>2001/XInclude</a>" /><br>
   <xi:include href="Architecture.xml" xmlns:xi="<a href="http://www.w3.org/2001/XInclude" rel="noreferrer" target="_blank">http://www.w3.org/<wbr>2001/XInclude</a>" /><br>
   <xi:include href="Protocol.xml" xmlns:xi="<a href="http://www.w3.org/2001/XInclude" rel="noreferrer" target="_blank">http://www.w3.org/<wbr>2001/XInclude</a>" /><br>
+  <xi:include href="Xwayland.xml" xmlns:xi="<a href="http://www.w3.org/2001/XInclude" rel="noreferrer" target="_blank">http://www.w3.org/<wbr>2001/XInclude</a>" /><br>
   <xi:include href="ProtocolSpec.xml" xmlns:xi="<a href="http://www.w3.org/2001/XInclude" rel="noreferrer" target="_blank">http://www.w3.org/<wbr>2001/XInclude</a>" /><br>
   <xi:include href="Client.xml" xmlns:xi="<a href="http://www.w3.org/2001/XInclude" rel="noreferrer" target="_blank">http://www.w3.org/<wbr>2001/XInclude</a>"/><br>
   <xi:include href="Server.xml" xmlns:xi="<a href="http://www.w3.org/2001/XInclude" rel="noreferrer" target="_blank">http://www.w3.org/<wbr>2001/XInclude</a>"/><br>
diff --git a/doc/publican/sources/<wbr>Xwayland.xml b/doc/publican/sources/<wbr>Xwayland.xml<br>
new file mode 100644<br>
</div></div>index 0000000..a39866f<br>
<span class="gmail-">--- /dev/null<br>
+++ b/doc/publican/sources/<wbr>Xwayland.xml<br>
@@ -0,0 +1,170 @@<br>
+<?xml version='1.0' encoding='utf-8' ?><br>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "<a href="http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" rel="noreferrer" target="_blank">http://www.oasis-open.org/<wbr>docbook/xml/4.5/docbookx.dtd</a>" [<br>
+<!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent"><br>
+%BOOK_ENTITIES;<br>
+]><br>
+<chapter id="chap-X11-Application-<wbr>Support"><br>
+  <title>X11 Application Support</title><br>
+  <section id="sect-X11-Application-<wbr>Support-introduction"><br>
+    <title>Introduction</title><br>
+    <para><br>
+      Being able to run existing X11 applications is crucial for the adoption<br>
+      of Wayland, especially on desktops, as there will always be X11<br>
+      applications that have not been or cannot be converted into Wayland<br>
+      applications, and throwing them all away would be prohibitive.<br>
+      Therefore a Wayland compositor often needs to support running X11<br>
+      applications.<br>
+    </para><br>
+    <para><br>
+      X11 and Wayland are different enough that there is no "simple" way to<br>
+      translate between them. Most of X11 is uninteresting to a Wayland<br>
</span>+      compositor. That, combined with the gigantic implementation effort needed<br>
+      to support X11, makes it intractable to just write X11 support directly in<br>
+      a Wayland compositor. The implementation would be nothing short of a<br>
<span class="gmail-">+      real X11 server.<br>
+    </para><br>
+    <para><br>
</span>+      Therefore, Wayland compositors should use Xwayland, the X11 server that<br>
<div><div class="gmail-h5">+      lives in the Xorg server source code repository and shares most of the<br>
+      implementation with the Xorg server. Xwayland is a complete X11 server,<br>
+      just like Xorg is, but instead of driving the displays and opening input<br>
+      devices, it acts as a Wayland client. The rest of this chapter talks<br>
+      about how Xwayland works.<br>
+    </para><br>
+    <para><br>
+      For integration and architecture reasons, while Xwayland is a Wayland<br>
+      client of the Wayland compositor, the Wayland compositor is an X11 client<br>
+      of Xwayland. This circular dependency requires special care from the<br>
+      Wayland compositor.<br>
+    </para><br>
+  </section><br>
+  <section id="sect-X11-Application-<wbr>Support-two-modes"><br>
+    <title>Two Modes for Foreign Windows</title><br>
+    <para><br>
+      In general, windows from a foreign window system can be presented in one<br>
+      of two ways: rootless and rootful (not rootless).<br>
+    </para><br>
+    <para><br>
+      In rootful mode, the foreign window system as a whole is represented as a<br>
+      window (or more) of its own. You have a native window, inside which all<br>
+      the foreign windows are. The advantage of this approach in Xwayland's<br>
+      case is that you can run your favourite X11 window manager to manage your<br>
+      X11 applications. The disadvantage is that the foreign windows do not<br>
+      integrate with the native desktop. Therefore this mode is not usually<br>
+      used.<br>
+    </para><br>
+    <para><br>
+      In rootless mode, each foreign window is a first-class resident among the<br>
+      native windows. Foreign windows are not confined inside a native window<br>
+      but act as if they were native windows. The advantage is that one can<br>
+      freely stack and mix native and foreign windows, which is not possible in<br>
+      rootful mode. The disadvantage is that this mode is harder to implement<br>
+      and fundamental differences in window systems may prevent some things<br>
+      from working. With rootless Xwayland, the Wayland compositor must take<br>
+      the role as the X11 window manager, and one cannot use any other X11<br>
+      window manager in its place.<br>
+    </para><br>
+    <para><br>
+      This chapter concentrates on the rootless mode, and ignores the rootful<br>
+      mode.<br>
+    </para><br>
+  </section><br>
+  <section id="sect-X11-Application-<wbr>Support-architecture"><br>
+    <title>Architecture</title><br>
+    <para><br>
+      A Wayland compositor usually takes care of launching Xwayland.<br>
+      Xwayland works in cooperation with a Wayland compositor as follows:<br>
+    </para><br>
+    <figure><br>
+      <title>Xwayland architecture diagram</title><br>
+      <mediaobjectco><br>
+        <imageobjectco><br>
+          <imageobject><br>
+            <imagedata fileref="images/xwayland-<wbr>architecture.png" format="PNG" /><br>
+          </imageobject><br>
+        </imageobjectco><br>
+      </mediaobjectco><br>
+    </figure><br>
+    <para><br>
+      An X11 application connects to Xwayland just like it would connect to any<br>
+      X server. Xwayland processes all the X11 requests. On the other end,<br>
+      Xwayland is a Wayland client that connects to the Wayland compositor.<br>
+    </para><br>
+    <para><br>
+      The X11 window manager (XWM) is an integral part of the Wayland<br>
+      compositor. XWM uses the usual X11 window management protocol to manage<br>
+      all X11 windows in Xwayland. Most importantly, XWM acts as a bridge<br>
+      between Xwayland window state and the Wayland compositor's window manager<br>
+      (WWM). This way WWM can manage all windows, both native Wayland and X11<br>
+      (Xwayland) windows. This is very important for a coherent user<br>
+      experience.<br>
+    </para><br>
+    <para><br>
+      Since Xwayland uses Wayland for input and output, it does not have any<br>
+      use for the device drivers that Xorg uses. None of the xf86-video-* or<br>
+      xf86-input-* modules are used. There also is no configuration file for<br>
+      the Xwayland server. For optional hardware accelerated rendering,<br>
+      Xwayland uses GLAMOR.<br>
+    </para><br>
+    <para><br>
+      A Wayland compositor usually spawns only one Xwayland instance. This is<br>
+      because many X11 applications assume they can communicate with other X11<br>
+      applications through the X server, and this requires a shared X server<br>
</div></div>+      instance. This also means that Xwayland does not protect nor isolate X11<br>
<span class="gmail-">+      clients from each other, unless the Wayland compositor specifically<br>
+      chooses to break the X11 client intercommunications by spawning<br>
+      application specific Xwayland instances. X11 clients are naturally<br>
</span>+      isolated from Wayland clients.<br>
<span class="gmail-">+    </para><br>
+    <para><br>
+      Xwayland compatibility compared to a native X server will probably never<br>
+      reach 100%. Desktop environment (DE) components, specifically X11 window<br>
+      managers, are practically never supported. An X11 window manager would<br>
+      not know about native Wayland windows, so it could manage only X11<br>
</span>+      windows. On the other hand, there must be an XWM that reserves the<br>
+      exclusive window manager role so that the Wayland compositor could show<br>
+      the X11 windows appropriately. For other DE components, like pagers and<br>
+      panels, adding the necessary interfaces to support them in WWM through XWM<br>
+      is often considered not worthwhile.<br>
<span class="gmail-">+    </para><br>
+  </section><br>
+  <section id="sect-X11-Application-<wbr>Support-xwm"><br>
+    <title>X Window Manager (XWM)</title><br>
+    <para><br>
+      From the X11 point of view, the X window manager (XWM) living inside a<br>
+      Wayland compositor is just like any other window manager. The difference<br>
+      is mostly in which process it resides in, and the few extra conventions<br>
+      in the X11 protocol to support Wayland window management (WWM)<br>
+      specifically.<br>
+    </para><br>
+    <para><br>
</span>+      There are two separate asynchronous communication channels between<br>
<span class="gmail-">+      Xwayland and a Wayland compositor: one uses the Wayland protocol, and the<br>
</span>+      other one, solely for XWM, uses X11 protocol. This setting demands great<br>
<span class="gmail-">+      care from the XWM implementation to avoid (random) deadlocks with<br>
+      Xwayland. It is often nearly impossible to prove that synchronous or<br>
+      blocking X11 calls from XWM cannot cause a deadlock, and therefore it is<br>
+      strongly recommended to make all X11 communications asynchronous. All<br></span></blockquote><div><br></div><div>That is not possible using Xlib which waits for a reply (_XReply) for many things, so maybe it would be worth mentioning that xcb is better suited for this?</div><div> <br></div><div>(for example mutter is using Xlib and seems a lot more sensitive to such dead locks than weston which uses xcb)</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-">
+      Wayland communications are already asynchonous by design.<br>
+    </para><br>
+    <section id="sect-X11-Application-<wbr>Support-xwm-window-<wbr>identification"><br>
+      <title>Window identification</title><br>
+      <para><br>
+        In Xwayland, an X11 window may have a corresponding wl_surface object<br>
+        in Wayland. The wl_surface object is used for input and output: it is<br>
+        referenced by input events and used to provide the X11 window content<br>
+        to the Wayland compositor. The X11 window and the wl_surface live in<br>
+        different protocol streams, and they need to be matched for XWM to do<br>
+        its job.<br>
+      </para><br>
+      <para><br>
+        When Xwayland creates a wl_surface on Wayland, it will also send an X11<br>
+        ClientMessage of type atom "WL_SURFACE_ID" to the X11 window carrying<br>
+        the wl_surface Wayland object ID as the first 32-bit data element. This<br>
</span>+        is how XWM can associate a wl_surface with an X11 window. Note that<br>
<div><div class="gmail-h5">+        the request to create a wl_surface and the ID message may arrive in any<br>
+        order in the Wayland compositor.<br>
+      </para><br>
+    </section><br>
+  </section><br>
+</chapter><br>
diff --git a/doc/publican/sources/images/<wbr>xwayland-architecture.png b/doc/publican/sources/images/<wbr>xwayland-architecture.png<br>
new file mode 100644<br>
index 000000000000000000000000000000<wbr>0000000000..<wbr>f24dc1837f2e190c9d38719420a844<wbr>aeb5997efa<br>
GIT binary patch<br>
literal 7611<br>
zcmb`M2UJsQx`q)I=^!9T^#n0UM?<wbr>ktDD2S1wp?9SBE*;SWNbe|<wbr>wdJqEAdq)riaw1JY<br>
zdI<=j_Yz7d_jk&fxpU8)nLBH;Ru(%<wbr>DcK+=D``+()-yQZ;^$`Ur6Da`!<wbr>0mWmbhj0Rd<br>
z3&P-OMob8PGhO9-27X+<wbr>0lYgv1OiVm6t2P5(k~k~rx)Bgu`<wbr>TFB|p*~_UlYoHL=<!22<br>
z4X?EIDc`5+R?}Cu7GqzjJmeT7B&<wbr>uRfR*KUvRxFBE-A`wIwDohZj^<wbr>jp0mriUtcXote<br>
z1D{br`g%p<-FIbtbEJ{<uRE9{8pN-<wbr>;bN7CSy>;nSoP6=<(bY%PJS4RoeR$<wbr>L|+aL!!<br>
zA=*3MPc}fDv(MW#10#VRS&Z!>$><wbr>Qx_-M^G(a<qf(^=c9l7Vel9?)x@6x^<wbr>&Znf?$Rq<br>
zp5zmI{^;eVr|Rkn%23)y(gPee$@<wbr>mN_5a7~!zfh}qyxc5=jA+Mxcd><wbr>7Cd3iQzOl4uh<br>
zsf918tD~gtqe_Yh`tHTkH7nUv8UF^<wbr>m&K(mOnZCZ~E}~?g*g0rlDJVe+B4U*<wbr>Z=phIK<br>
zUU{JlIzi@yWyI)9CRcxa>L0x!<wbr>PMcGhkI$j&9p8zos;a7wk7P^tY0L|&<wbr>kf<4$(Y{x?<br>
zugXP+ugmV++uLX~I&mN+<wbr>C1rS6t2rGGBQE!T$}0LZkN40VcE~<wbr>Lkp3lq0rQ7JS-tc0T<br>
zl1=)<)7y$oT+wrWetzui>?^CQ!<wbr>S7B^`~m{b>+0&>y`vA|+k!Q%Z11d?)<wbr>5z1%(gp?w<br>
zer{`{=hG8OS$_&sfevOp2oZIf<`<wbr>rq)?qrT(yLUVjNENhNF<$$LXZt;>i;<wbr>;nt?anHX<br>
z95Xo)L!^$rexX+3knIaY!}<wbr>K2RkSnO?*{XSDR8&bYWDs@OL-suprl<wbr>>@CVCzo_XqFoB<br>
ziQaUnqrl}g9yu#ZOGz_4P8z>WN=!<wbr>TxlUHj@(ok6`%)?XI)YMc|#49XZSy*<wbr>UiK7sD*<br>
zJO3Ub(9qauXJ^-AS^3pSOKW&<wbr>yLSIjhiI#TvJ^gi=QlF-#<7>aHt*<wbr>za)8}3F3hfr7e<br>
z?5}{A*^gpq3X>=fFCPz%&=<wbr>fIyx16p!2@46$yLxMBz1zo~<1y#<wbr>WXUD5ouU@sVun@3)<br>
zJ-b_i>bmT<w^e^;KkU60Q@k2evzXo<wbr>^NktaJ&}(@?C&XNmtXk6F=NVa9U^R;<wbr>D-`U<j<br>
z-2c$2Rf6j3YP7jfd7-mYdU|>Z<I?<wbr>hAUajMlYmW|Fw`n<X*BaFAcyHM><wbr>iQw~#y`^Vo<br>
zrn-V!&VQ{r7WJg43LRd5e}7Z$S@?~<wbr>YhqGYYe0+S;B*P!FGm1G*<wbr>COdhUn0zu9iaN3^<br>
z&L3Lwoc7LZXc*7WF0-7hbFn{7U!I%<wbr>0`KR(m9@-r?E*s&Gemo>z5J%5((<wbr>1fM3W%hp><br>
z<Ndw5c9*rWvC*%wpG|<wbr>UebsZQSJhIpbD3X%0-?Ptf@f-CSx%<wbr>B2i-e3m`#mUL34zshh<br>
z)zjBM@;DyEM6tZ@uk`NRmJ^za`D?-<wbr>QLFQ*#14)DB*TP4?Gor4b-JgVog|)<wbr>V}Ha9m%<br>
z(DTtW($jl?+HS=l9G5o(&V8+{7C(<wbr>njsb$LWdGPV>yqXJ?7(8|N@UXP7(<wbr>A3sehpDTp<br>
zmm0T}XmEG%heN<(1g#n}e=7{<wbr>Djmi2#?b6=f-i3+ak?Y0A_U@<wbr>xgW72bnW&4J-0*MHO<br>
zE*x%pYT;2vPfsuEw$QDfry6D$TKK&<wbr>8clvntRQakwv!AZc#?n%m4G9%hrie{<wbr>Eu|;`S<br>
zVd0a~5i+qWL_`_V-lqP3mfgv-k#<<wbr>bwM4Kt0Ki#>ry*5@!seN>O{PO(t08}<wbr>17e;BKw<br>
zq2cW8tnA5F;OFYWJT)<wbr>g9o98Q0k2qV$iik-`NsX#<wbr>jl3GrXVyJlP_Zr;bU7s0>PY>r}<br>
zK0@AIa?91B7clbMn3PDRx~_zTe>B><wbr>}qB(-xU%dEuw2(>^*m{fxn@r2h?<wbr>7KdGSKu*p<br>
zLD^+(vVIWyjs<nPqTM3TO9Fu*<wbr>U3V9HMBUzWn2y!E<t4SpoAlDf^;<wbr>CtC45su{Ej!Rc<br>
zThqAMS8Zr%b17171}C7(KTD_^L@)@<wbr>Hl$PctnzmJODyOobyeEPlH?5y`Z)|<wbr>L=j+90i<br>
zcDMn#IzL3o5<|cyHh6AMfAl?QFA3%<wbr>2(JB)6I}}9jogQFXytdzuVx`3##;<wbr>ay#OctZ%<br>
zK0Y=x%XW)_dWD3ClUm7YZ+ik+<wbr>ZCbV0`s8A8|Ng5{&6800ie`Y^<wbr>N19y9-b$-J101WT<br>
zfQse)`}aLPYezL-r6NQf#t$$7n<?<wbr>eLb;*CM%zxOr|CYA@<<wbr>qU6xz8jlbEpkpy(Zw%A<br>
z1_lOd?8n*!7U$=4^710|sUqVw)(<wbr>B1Pm)si;4-e<(&0#hwDk^q%g`?<wbr>M6KbZ9HQNxfG<br>
zIXUL*<JGIf#Zq2dzsP6JOlWdz`<wbr>ugJQ-4?~8@e8R=8<>_GG&F6c-^F`D)<wbr>3LL^Z*I<@<br>
z9{Bc+j+ND+T!$Ev2(Q*F9$768DO><wbr>JynasH7OL*}jIE979El3U$<wbr>d5fRF7lV<NmBqZp<br>
zZ^Xqa_r)bAUuR)qp{K90?q|<(><wbr>5OD_aB#>BIP-q_@+|ZGWO1U_3Dw!<wbr>TQ+OK*O<4Y#<br>
z^&nNu2^!R$E+xjzU67mmhI(hc7Ne-<wbr>3@Ns`we|VyHS&jJFZMyaK^$<$d?`k><wbr>1!oonB<br>
z4ww3~%gO{t)+#u&r*q27<<wbr>1njXw4C9FU89A?#hPH8R5z5As9K*<wbr>aWyiR>xq+8s_F%}=<br>
z*Vm_tI=oL@ac|h#a?aO)5yvTU_*<wbr>s24D($zvjbs+J7Y{g-MrwGy89m?(<wbr>O75|I$%j#a<br>
zCNM@R!tz^9wtmgi($JtgKgs{_!<wbr>5OE+=5_dHrWNgXa_FL?qob}qh<uU+<wbr>Rm+$h8$;LL<br>
zkbODX*S9&SCW}nmn5gXo$AzWM?-<wbr>PkGUHUdOw7<9aZFpEO&w8#iYG`<wbr>PPjDdgNiL`JH<br>
zuaAi^9<~<g=;%<)F8}a>7|n8vO4{$<wbr>i){J>>PR`nBd7yD`SJx926>Jjd2A;<wbr>RD8!~=M<br>
zTn<i7U{Zn|PaK$P^i)d|e};sEz3!<wbr>4!U}a^Mlas?@u_r3e-}(pO&5b_#+!<wbr>Yno;!j${<br>
zVj+m^`PU&%#B6EZ<))&kgM))<wbr>WaN7BU6iSq#(|2Ekx=854g2e$<wbr>5H68iB9;@sX4d?bC<br>
z*}B<eNB9>Y$z2pgDCg(rn`&=<wbr>ofBUA9fadVH=17j-W6{*qWQuxIw!<wbr>Mr)2wQ1sYSzCr<br>
zh<R=96CEBNewmD(THamKP*Za#<wbr>n2dpmnHh+?yJY%mgl?IMoPt8|Dr*0_<wbr>QtqO)qhoYr<br>
zB!|G6d!q^XuHb91phz(9?d|OJ><wbr>zuP%S^@x;xVZ^Kg68T}QbobcS>8YX`<wbr>t@sbvy8lw<br>
zlarIR^-{5Z?VF`OCqW^hoiA^B_$<wbr>NH6=GVlO5#Pr$MPgx~>>k%i_~O><wbr>QcNZkqB%Zeg<br>
z#mCc}370e-?Jg$0dxzWKPnYqRl#$<wbr>5*l*GluGbhWKnwI7_^XURCU#rlt+_<wbr>d8fULAJj<br>
z$`vF$ztTgK<B&YI(#t~#Ku}|2<B>&<wbr>3rXvH3gzNm2Cx(KYocH$a8U4<f8v-<wbr>X*e10bW<br>
z&d#yMzRLqhF7@2Ky**`wQ1H1k=<wbr>IbdJQY}N8goMQ9`*e8gTXg$a(V~))<wbr>Qr(MHdPvUy<br>
zfts#dD@DalY*$iWx|Ft#&absiyS-<wbr>9KB$6obHJrOC_e(%!5Ver!#w7R*<wbr>UgPGID6#2e<br>
zVXNLJcv|`K@o~$Z6m0j@zB9PWN><wbr>83NI?ob9IHaU}ds6O#frXIr+*<wbr>lbZtgNhb@YxA?<br>
z4uwJ;G0o{tTmk~61qJYYjo|=4y@?<wbr>u!32>ci9VSG(&!VED>b|2ti2K4V!><wbr>uxVC@CpH<br>
zsfHSM#K7V3A~nZ*7iIb>Z$jR}<wbr>jtXCvy-J5o(*3}of17RpYYO_$`<wbr>8p10XM6w1NK$Gl<br>
zkH@tcOSXGH^A+VyB8bz|)8OD>Q|${<wbr>|^5UtNP2xOz5P&Jb^rvqOe^&<wbr>3lJaCFXP=~{R<br>
zv<$e^Hnz4q+uOS3roqZkx9R&%%}<wbr>2SrqP=ssk-cmeJD(~lDjFJ2fyvy#<wbr>A0z=y;Ns?9<br>
z0T@dkVKJDif<M?~Xng;yb&S_5w6x{<wbr>y7;}DB+hGa`@;kyNQL#x=<wbr>gTKiMwbCXl=Ysae<br>
zAD$fgZES9ypKb;SI6lq}GXI&gEJM(<wbr>HL&kv}F@v**DrYpRr7A(|?%_!<wbr>i7KaC+@gy5P<br>
z=0fXZl_At^V=k*UgN@UDm-@0tRu}<wbr>s+WdqLq&K71rhvX?EcBXwdx5e<s$<wbr>K95d581Dl<br>
ze!AL*M>rB~T2b=-^pnY0g~g+<wbr>2maC1i{cXR`bHBqke={--#3&d3=9_<wbr>hQId-wRs_6wI<br>
zt0WMhO+Z<IrU%6W@dsKTX2=xzx~i&<wbr>*PrqiXOF}|od3pJyV(XsTYA+>o`<wbr>UOm%Uwuwa<br>
z&YL%HYNvfx54Y!N!sh4E3A(<wbr>zv6ciKy6ikzd%<lhRVmu>@7li;<wbr>sBTp7Kj#h(0=10rT<br>
zz_~e9(|!ul;Y^qlzi}foG&J=1*<wbr>hgLofS<d&NWeB3EMKp9A<y8oN<j1+<wbr>Zf%VA`t=X+<br>
zd~O~d5(pn3pNosj+<wbr>1VKooRTSRryLFLCotG><wbr>iD9GTR72nuDsDQ`avt^|YWZ1<<KyGD<br>
z&z~C`8t6znz`kE2Rq*umR9220v!_<wbr>2!?pf&U?ELWI_SpiErow`P+<wbr>eiihBZCTa66Cjq<br>
zr}|*>u!uW<vKGmZaD$47B*F{&t$}<wbr>iq69sA&R@a*WJ_jU|a4;IBk}L?<wbr>hdDHBYXWBhq<br>
zT$A_i+61d*`{h<Sp%4qOVW3U*<wbr>oBbq^B3xWHc-%UGszvSP|26iqjY><wbr>zXMG^-nm_^fM<br>
z12XjPy~CZ7K;(Ztauh;zTZ_P96hs%<wbr>}k6?=Ly2r=$!2H)LTwPhQ*<wbr>McCFdHDI+#2gJ=<br>
zT<#z>3Wu6;<92zf>EE?4|<wbr>NV56HDMNWEGj86s&j?}sOwl@FvmtG6<wbr>^hwh{QRO!Q3?tQ<br>
zN((%UazbEI0!|qI_6>9t5}m;5><wbr>EWSQsvv~$IM^_h|2198^EMK&gKK?S=<wbr>HP8)qvvLZ<br>
zxXXJOa=h9uY5(GIfB#iFIt?<wbr>SEUJRYq*g>t@!cd{MnVA{Z)!WF3?Z?<wbr>t%yAu-=S*1L-<br>
zy1c!;!KgZ^_}qdwz@dIB`<wbr>HJPGkH9jt94hGQB1%g)uRGFfFEOQ{<wbr>46?{JQ^YT$TwLp$<br>
z8XA1;%}Ay%qTNZ;!am&w#QqQdyp*<wbr>84*IxAec%%jN<f7BrZsz&g`no>=^I*<wbr>!$moJx><br>
zm$PeL>HXQfLX|!4gGNDHoBXQ44X~<wbr>U@YSVI^_t`%l3VhUQgjSV~KZ%<wbr>KHLldsb^U5j^<br>
z9|1UbcxlHdeUVK=jGBezBo%Ygxo{<wbr>5-s?}yNS2uI`XHH;%F3LLS1w0=<wbr>yEvKWSGilq?<br>
z@G_VR{1bK0K@g6gea72^mbbUQHc&<wbr>kOaYT_**PY0`yt$dA#9>*f%b!$gP!<wbr>C^o)%i9t<br>
z;XB)Qc{pRJ1wXY3X2UIyYXn>Bz*<wbr>LqV_t>QM5SA?+S-q;LsL<ek8;T@|<wbr>oNo5Vv){a_<br>
zU95M@0}@2NgOWYl4!QC2`j~%ai!<wbr>2UIJe5ot|40}i^%Zq(W`wl&4p2!<wbr>F2squ7Bz}J+<br>
z{<}T>KbPYFhuY`T>KenR?s~Ggt!<wbr>aFBh*d`Yfv%)HA<+(g^w5wT?G6%-{<wbr>H(0k)UJTp<br>
z!XCQr%s-Y_dhp<)9fQziwP15eD97&<wbr>K1VUB?igJ;WkpUKKe}<wbr>6wHHa9nSY03I5Y4<kL<br>
zwmK!#^|I)xMD#?Zm70mkFEC_<wbr>5Q4vQFkgxWRjw3vNadB~C#0}7$gxf+<wbr>SvzTgfV~KG~<br>
zMr^F$%ag;gN-IpAOCV-}Gt=+=)7$<wbr>d$@<3b2NJ$f6*qp}+1%-u2)j(c=$N;<wbr>GUf<sw*<br>
zpLnd%)9LBc*e(5Z(eoWL%8=<Qn}<wbr>p0v%%}|MePRg4|6r=nsAxD4tTH$x#<wbr>Ph`qF1qkM<br>
zwM=fhaNwl?h*ysB?%<wbr>hf40h9XKvu7tgZ+Wx<l0Ab77&X<<wbr>IqiJAVkanNcVbJ(jC|LxV<br>
zqO5w;NGK?fiMAps@87crw*E3?>#(<wbr>83l@5}T#ms=|krB=+YZ0bmt%<?G>>*<wbr>oP8k$1~<br>
z+iJb+elOgbuCcN4a|vGFNMjy*<<wbr>LrL%NkXK1TM)^uTelRm<65{<wbr>hObz2dXLWt~QbZN4<br>
z1659rjf;bLT$3dwBb)nt_h%ltn+<wbr>Sm_`>_g#i5foR<}`RpVq%p)9=E?<wbr>bvRep%(aWn&<br>
zgZoyH5(iE5v(k~>zQf;CD|H=!P0-?<wbr><AEdtREqI+AhfYMB1M8X_<wbr>yonhc1Odf*txcuB<br>
zd}x_JLV3ZNEOFrGqv$65M&s+(uR)<wbr>XUT}Hc$@6F82C`Iq+>?WIkx5ov?$H(<wbr>I~F`3E9<br>
zO2oQNUfY>xdz`ZxqO!8*<wbr>5dzIi8yh9X#dlMC{LIYF=ZkbJ&<wbr>v3OZQ_cRMje>_$T}Lqs<br>
zNlm7vreD5%@$vP2^5n^SL|8-w4;<wbr>L5cz1n3b5vCt%(b?WU>NI$k)E2b9d&<wbr>=qvRD5m+<br>
z+qKx6&cn-F)m*9!oiir#?PonY_<wbr>cU31-dpAJ4_as-j+*%4hQnwzxre~?<wbr>2^}&Y_y;L$<br>
zW@z!-Ul|%5)u}hgNJ@INw$<wbr>MF1JRB5s>1?d87St)&Lxgf}zcu*p1?<wbr>SY^uAtbaCh2+u<br>
zHemGkS2RQPe>s;5^EurgIoO!8`<M=<wbr>3`WTPj6$@e0Ghh?8Vn>*v?M3tQ@~<wbr>FtkLk&YO<br>
zt_7j;rJ)G%i;Ti7C^U9wWyKbhLb=_<wbr>A+7R<-Mq7WPHnz^Li_Bh^iT^9j|<wbr>DPtM{XFL{<br>
z7e0NuudSUV47=djF3Xq*LyiW6NML+<wbr>o0>3r;V3FbuXiySbsJIip=FO4a7J!<wbr>SALXuba<br>
z^lKe04n}5x>Rn@ImhzAy+pzt!<wbr>E4ksf^?Ee8uI<yOPe2$Agol4kK%}<wbr>Hd)*xR=9j{gP<br>
z$v=1iI=h{}{Ti6s2Je)c2rvC{<wbr>nENj!FispjFYegw>qC`*o?k01&<wbr>dbeBQHJJGUU)#u<br>
ziAaP$>wF;~aBQ4kPyoyBr<VVxs`$~<wbr>JujLeM)ALHexNV`p9TXK5xK5W)0LA(<wbr>HD4B6;<br>
zqwZ!}PebNktsCf!L$X{}*_Q_FacR=<wbr>t@zeufzs9DeoeWer0j1wPe*zo;n~a~<wbr>1weg?*<br>
z9FOOh6xBSyI1SFT@?bQps6?se-<wbr>OQd~^_-tHFVHB!;c#w?y)G;VJz|*<wbr>2mH=4}jv$>L<br>
zA{G=NR!%{|r%1S_mex)bSk-Uf<<|<wbr>uy0q72}RI<Rq0mvXPx3FVD`R|}<wbr>PNrTxrIC8+W<br>
z`sJ7V`5LMzB99L<-~NsAjv20*Vb+<wbr>b$kG1XXd5zgxZUV9Z=6mnpASNcp$<<wbr>dLmcM0cN<br>
z&X|r7Lb>41x5dQ79w{o)<wbr>6mqVXo1t7?T~*V><ydYF&gxA^<wbr>G777vODYfplcxlS$A4vG<br>
zWc0><d8_SThYJ5|Ecv$_{nsTA)W?<wbr>qlntUJ#mrUz@{P-~gzkw1A_NA}<wbr>SxWXJHR&(d4<br>
znDg!P!fjUK|E0oM=DSQP&z{A#<wbr>ntZjb_EU>e1d8kH<5Q*QATQrWtzV-^<wbr>+;3a0nEfLW<br>
z1Tfv^s-u(q6=g3fCMx<PJo#`P?+7-<wbr>Q7x30~a==@D-r&ZB03YA_>Z+<wbr>9gvAdt&iL+vD<br>
zOT_6?+p`Mb&{Uwb$g0v(0cq(bkU(<wbr>ZVmG(c@$a?DT>4|D@2gI6Gf~^ez90?<wbr>>OqGJa)<br>
z;e-KU!*v&D=cn9nDHkE{y0A=<wbr>9mg4t}hrnVMdr~<kS$Z}i-&*x$T-7!<wbr>l8mLGAeh?$8<br>
zlDi*=WiS^)^jqg7GLaKCKeGnpAJ><wbr>I_U_WMwDH3xOj{W<a0Xy$a*BZx?#<wbr>9p3w%?j@L<br>
z8%Z{t8m{4+mcp*FuuM)(^#}-nP#<wbr>KVKSCT+pBJ|cR2TZg7>G8gNU)<wbr>IRZgmJm4f`^9(<br>
z3>Lm0`WLq?-ax^5tFop>3&8ErN<)<wbr>KWmP>o1u$D9@0u^)PV0Rb4H>k#<wbr>i1Ydg>9Iq6X<br>
zE~zEh7?QU90*E{!0_=w%*EZh?ucX~<wbr>@5v0bx(&+*3mA^yaaZWj%n$6BW#<wbr>4xreRjjnC<br>
z>YIrmd4M~<ar7V#Z4SI$nQQ^TA_<wbr>qsug`|jx2viiawt;~%7s#qgKjOyo)$<wbr>@Wf9+YAq<br>
z)q8ETL*~Jqr0SBa`g(7G$+!m-Zi><wbr>H0&e5)(o#BfdyBkxD@ccdC>=<wbr>FlXIFEdd@o(QA<br>
z8o%oX<`o!^FW4QR_08o-q(<wbr>XN8uOQr4bOU+OU)KL4X8qnC#{JfIq{<wbr>Q$6$6)gW-~~Xc<br>
zSl6S4o>bt8xsc~aeE~oQ2nh)fZ%U-<wbr>~uWy=StU$5|hy|xs3ZnJ%S*if)<wbr>XhFz4u(*i><br>
zH8rC32EBcYpLOk8EV8hbeKJz6^<wbr>Tez~Rvf~&ZdstBSx;PzjErn;xm%><wbr>aPciajBq&o2<br>
zV=%@#I@YHlv0dbplsi^-y$<wbr>SL0LgM1$X&JqEsRX$a<ptu>{<wbr>tYaMsFXPF+_?jikCGdP<br>
z+;8<-+}Fr^r)8Sx;w5P4G7||<wbr>nKXXzL{1?&&kv2P~$tLfF79~b62~<wbr>hoOW5NR7LVGw|<br>
zgMHCes2jLaC)M)=dp@VWn;$<wbr>tnu4OE|O^^VQG;s6dj9?PjIyl@4YDb<wbr>|W3`19mTU_Qf<br>
zO4GVyW2w(-5d_2#FClRfqYH%p`aa)<wbr>pqoGe$Y+`I|tiK;(%0<A|X<8n6*xZ+<wbr>J1iXhI<br>
zZ}^2*cV1QM{@JF)%Xn?wUt=PWPJ`$<wbr>B4K<#~HrpL{hvd3L!0lIp#|o+sOXN*<wbr>{{vZCR<br>
Bvx)!!<br>
<br>
literal 0<br>
HcmV?d00001<br>
<br>
--<br>
</div></div>2.13.0<br>
<div class="gmail-HOEnZb"><div class="gmail-h5"><br>
______________________________<wbr>_________________<br>
wayland-devel mailing list<br>
<a href="mailto:wayland-devel@lists.freedesktop.org">wayland-devel@lists.<wbr>freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/wayland-devel" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/wayland-devel</a><br>
</div></div></blockquote></div><br></div><div class="gmail_extra">Cheers,</div><div class="gmail_extra">Olivier</div><div class="gmail_extra"><br></div></div>