Copyright © 2008-2011 Kristian Høgsberg
Copyright © 2010-2011 Intel Corporation
Copyright © 2012-2013 Collabora, Ltd.
Copyright © 2023 Red Hat, Inc.
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation files
(the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge,
publish, distribute, sublicense, and/or sell copies of the Software,
and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice (including the
next paragraph) shall be included in all copies or substantial
portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
The core global object. This is a special singleton object. It
is used for internal ei protocol features.
The sync request asks the EIS implementation to emit the 'done' event
on the returned ei_callback object. Since requests are
handled in-order and events are delivered in-order, this can
be used as a synchronization point to ensure all previous requests and the
resulting events have been handled.
The object returned by this request will be destroyed by the
EIS implementation after the callback is fired and as such the client must not
attempt to use it after that point.
The callback_data passed in the callback is always zero.
Provides the client with an object to initialize and setup the connection.
This event is sent immediately after the client connects to the EIS
implementation.
A client should configure itself through that object, if applicable,
and complete this configuration with the ei_connection_setup.done event.
The object returned by this request will be destroyed by the
EIS implementation after that done event and a client must not
attempt to use it after that point.
The version sent by the server is the highest supported version
of the connection setup interface. A client must only use
requests supported by that version (or any lower version).
A reason why a client was disconnected.
This event may be sent by the EIS implementation immediately before
the client is disconnected.
Where a client is disconnected by EIS directly, the reason is
disconnect_reason.disconnected and the explanation is NULL.
Where a client is disconnected due to some invalid request or other
protocol error, the reason is disconnect_reason.error and
explanation may contain a string explaining why. This string is
intended to help debugging only and is not guaranteed to stay constant.
There is no guarantee this event is sent - the connection may be closed
without a disconnection event.
Notification that a new seat has been added.
The interface version is equal or less to the client-supported
version in ei_connection_setup.interface for the "ei_seat"
interface.
Clients can handle the 'done' event to get notified when
the related request is done.
Notify the client when the related request is done.
Notify the EIS implementation that configuration is complete.
The ei_conection_setup object will be destroyed by the
EIS implementation after this request is processed and
the client must not attempt to use it after that point.
Notify the EIS implementation of the type of this context.
This request is optional, the default client type is context_type.receiver.
This request must not be sent more than once.
Notify the EIS implementation of the client name. The name is a
human-presentable UTF-8 string. There is no requirement
for the EIS implementation to use this name.
This request is optional, the default client name is implementation-defined.
This request must not be sent more than once.
Notify the EIS implementation that the client supports the
given named interface with the given maximum version number.
In the future, objects created by the EIS implementation will
use the respective interface version (or any lesser version).
This request must be sent for the ei_connection interface, failing to do
so will result in the EIS implementation disconnecting the client
on ei_connection_setup.done.
This request must not be sent more than once per interface.
Notification that the client is no longer interested in this seat.
The EIS implementation will release any resources related to this seat and
send the ei_seat.destroyed event once complete.
Bind to the bitmask of capabilities given.
This seat has been removed and a client should release all
associated resources.
The name of this seat, if any. This event is optional and sent once immediately
after object creation.
A bitmask of the capabilities of this seat.
Notification that the initial burst of events is complete and
the client can set up this seat now.