|
|
@ -88,42 +88,3 @@ commit event. |
|
|
|
leading to lost frames. Should never cause tearing though, we're |
|
|
|
leading to lost frames. Should never cause tearing though, we're |
|
|
|
changing the surface contents, not the server back buffer which is |
|
|
|
changing the surface contents, not the server back buffer which is |
|
|
|
what is scheduled for blitting at vsync time. |
|
|
|
what is scheduled for blitting at vsync time. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RMI |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The wayland protocol is a async object oriented protocol. All |
|
|
|
|
|
|
|
requests are method invocations on some object. The request include |
|
|
|
|
|
|
|
an object id that uniquely identifies an object on the server. Each |
|
|
|
|
|
|
|
object implements an interface and the requests include an opcode that |
|
|
|
|
|
|
|
identifies which method in the interface to invoke. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The server sends back events to the client, each event is emitted from |
|
|
|
|
|
|
|
an object. Events can be error conditions. The event includes the |
|
|
|
|
|
|
|
object id and the event opcode, from which the client can determine |
|
|
|
|
|
|
|
the type of event. Events are generated both in repsonse to a request |
|
|
|
|
|
|
|
(in which case the request and the event constitutes a round trip) or |
|
|
|
|
|
|
|
spontanously when the server state changes. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
the get_interface method is called on an object to get an object |
|
|
|
|
|
|
|
handle that implements the specified interface. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
EMBEDDING OTHER WINDOWS |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
X11 lets clients embed windows from other clients other copy pixmap |
|
|
|
|
|
|
|
contents rendered by another client into their window. This is often |
|
|
|
|
|
|
|
used for applets in a panel, browser plugins and similar. Wayland |
|
|
|
|
|
|
|
doesn't directly allow this, but clients can communicate GEM buffer |
|
|
|
|
|
|
|
names out-of-band, for example, using d-bus or as command line |
|
|
|
|
|
|
|
arguments when the panel launches the applet. Another option is to |
|
|
|
|
|
|
|
use a nested wayland instance. For this, the wayland server will have |
|
|
|
|
|
|
|
to be a library that the host application links to. The host |
|
|
|
|
|
|
|
application will then pass the wayland server socket name to the |
|
|
|
|
|
|
|
embedded application, and will need to implement the wayland |
|
|
|
|
|
|
|
compositor interface. The host application composites the client |
|
|
|
|
|
|
|
surfaces as part of it's window, that is, in the web page or in the |
|
|
|
|
|
|
|
panel. The benefit of nesting the wayland server is that it provides |
|
|
|
|
|
|
|
the requests the embedded client needs to inform the host about buffer |
|
|
|
|
|
|
|
updates and a mechanism for forwarding input events from the host |
|
|
|
|
|
|
|
application. |
|
|
|
|
|
|
|