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.