mirror of
https://gitlab.freedesktop.org/wayland/wayland.git
synced 2025-11-03 09:01:42 -05:00
server: Start documenting the server side API
This is now public, stable API, so it seems prudent to actually document it.
This commit is contained in:
parent
cf4f5995dc
commit
b583b54560
1 changed files with 130 additions and 0 deletions
|
|
@ -348,12 +348,30 @@ wl_client_connection_data(int fd, uint32_t mask, void *data)
|
|||
return 1;
|
||||
}
|
||||
|
||||
/** Flush pending events to the client
|
||||
*
|
||||
* \param client The client object
|
||||
*
|
||||
* Events sent to clients are queued in a buffer and written to the
|
||||
* socket later - typically when the compositor has handled all
|
||||
* requests and goes back to block in the event loop. This function
|
||||
* flushes all queued up events for a client immediately.
|
||||
*
|
||||
* \memberof wl_client
|
||||
*/
|
||||
WL_EXPORT void
|
||||
wl_client_flush(struct wl_client *client)
|
||||
{
|
||||
wl_connection_flush(client->connection);
|
||||
}
|
||||
|
||||
/** Get the display object for the given client
|
||||
*
|
||||
* \param client The client object
|
||||
* \return The display object the client is associated with.
|
||||
*
|
||||
* \memberof wl_client
|
||||
*/
|
||||
WL_EXPORT struct wl_display *
|
||||
wl_client_get_display(struct wl_client *client)
|
||||
{
|
||||
|
|
@ -364,6 +382,28 @@ static void
|
|||
bind_display(struct wl_client *client,
|
||||
void *data, uint32_t version, uint32_t id);
|
||||
|
||||
/** Create a client for the given file descriptor
|
||||
*
|
||||
* \param display The display object
|
||||
* \param fd The file descriptor for the socket to the client
|
||||
* \return The new client object or NULL on failure.
|
||||
*
|
||||
* Given a file descriptor corresponding to one end of a socket, this
|
||||
* function will create a wl_client struct and add the new client to
|
||||
* the compositors client list. At that point, the client is
|
||||
* initialized and ready to run, as if the client had connected to the
|
||||
* servers listening socket. When the client eventually sends
|
||||
* requests to the compositor, the wl_client argument to the request
|
||||
* handler will be the wl_client returned from this function.
|
||||
*
|
||||
* The other end of the socket can be passed to
|
||||
* wl_display_connect_to_fd() on the client side or used with the
|
||||
* WAYLAND_SOCKET environment variable on the client side.
|
||||
*
|
||||
* On failure this function sets errno accordingly and returns NULL.
|
||||
*
|
||||
* \memberof wl_display
|
||||
*/
|
||||
WL_EXPORT struct wl_client *
|
||||
wl_client_create(struct wl_display *display, int fd)
|
||||
{
|
||||
|
|
@ -417,6 +457,25 @@ err_client:
|
|||
return NULL;
|
||||
}
|
||||
|
||||
/** Return Unix credentials for the client
|
||||
*
|
||||
* \param client The display object
|
||||
* \param pid Returns the process ID
|
||||
* \param uid Returns the user ID
|
||||
* \param gid Returns the group ID
|
||||
*
|
||||
* This function returns the process ID, the user ID and the group ID
|
||||
* for the given client. The credentials come from getsockopt() with
|
||||
* SO_PEERCRED, on the client socket fd. All the pointers can be
|
||||
* NULL, if the caller is not interested in a particular ID.
|
||||
*
|
||||
* Be aware that for clients that a compositor forks and execs and
|
||||
* then connects using socketpair(), this function will return the
|
||||
* credentials for the compositor. The credentials for the socketpair
|
||||
* are set at creation time in the compositor.
|
||||
*
|
||||
* \memberof wl_client
|
||||
*/
|
||||
WL_EXPORT void
|
||||
wl_client_get_credentials(struct wl_client *client,
|
||||
pid_t *pid, uid_t *uid, gid_t *gid)
|
||||
|
|
@ -429,6 +488,17 @@ wl_client_get_credentials(struct wl_client *client,
|
|||
*gid = client->ucred.gid;
|
||||
}
|
||||
|
||||
/** Look up an object in the client name space
|
||||
*
|
||||
* \param client The client object
|
||||
* \param id The object id
|
||||
* \return The object or NULL if there is not object for the given ID
|
||||
*
|
||||
* This looks up an object in the client object name space by its
|
||||
* object ID.
|
||||
*
|
||||
* \memberof wl_client
|
||||
*/
|
||||
WL_EXPORT struct wl_resource *
|
||||
wl_client_get_object(struct wl_client *client, uint32_t id)
|
||||
{
|
||||
|
|
@ -522,6 +592,17 @@ wl_resource_find_for_client(struct wl_list *list, struct wl_client *client)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
/** Look up an object in the client name space
|
||||
*
|
||||
* \param client The client object
|
||||
* \param id The object id
|
||||
* \return The object or NULL if there is not object for the given ID
|
||||
*
|
||||
* This looks up an object in the client object name space by its
|
||||
* object ID.
|
||||
*
|
||||
* \memberof wl_client
|
||||
*/
|
||||
WL_EXPORT struct wl_client *
|
||||
wl_resource_get_client(struct wl_resource *resource)
|
||||
{
|
||||
|
|
@ -833,12 +914,30 @@ wl_global_destroy(struct wl_global *global)
|
|||
free(global);
|
||||
}
|
||||
|
||||
/** Get the current serial number
|
||||
*
|
||||
* \param display The display object
|
||||
*
|
||||
* This function returns the most recent serial number, but does not
|
||||
* increment it.
|
||||
*
|
||||
* \memberof wl_display
|
||||
*/
|
||||
WL_EXPORT uint32_t
|
||||
wl_display_get_serial(struct wl_display *display)
|
||||
{
|
||||
return display->serial;
|
||||
}
|
||||
|
||||
/** Get the next serial number
|
||||
*
|
||||
* \param display The display object
|
||||
*
|
||||
* This function increments the display serial number and returns the
|
||||
* new value.
|
||||
*
|
||||
* \memberof wl_display
|
||||
*/
|
||||
WL_EXPORT uint32_t
|
||||
wl_display_next_serial(struct wl_display *display)
|
||||
{
|
||||
|
|
@ -1221,6 +1320,22 @@ wl_display_remove_global(struct wl_display *display, struct wl_global *global)
|
|||
wl_global_destroy(global);
|
||||
}
|
||||
|
||||
/** Add support for a wl_shm pixel format
|
||||
*
|
||||
* \param display The display object
|
||||
* \param format The wl_shm pixel format to advertise
|
||||
*
|
||||
* Add the specified wl_shm format to the list of formats the wl_shm
|
||||
* object advertises when a client binds to it. Adding a format to
|
||||
* the list means that clients will know that the compositor supports
|
||||
* this format and may use it for creating wl_shm buffers. The
|
||||
* compositor must be able to handle the pixel format when a client
|
||||
*
|
||||
* The compositor by default supports WL_SHM_FORMAT_ARGB8888 and
|
||||
* WL_SHM_FORMAT_XRGB8888.
|
||||
*
|
||||
* \memberof wl_display
|
||||
*/
|
||||
WL_EXPORT void
|
||||
wl_display_add_shm_format(struct wl_display *display, uint32_t format)
|
||||
{
|
||||
|
|
@ -1230,6 +1345,21 @@ wl_display_add_shm_format(struct wl_display *display, uint32_t format)
|
|||
*p = format;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get list of additional wl_shm pixel formats
|
||||
*
|
||||
* \param display The display object
|
||||
*
|
||||
* This function returns the list of addition wl_shm pixel formats
|
||||
* that the compositor supports. WL_SHM_FORMAT_ARGB8888 and
|
||||
* WL_SHM_FORMAT_XRGB8888 are always supported and not included in the
|
||||
* array, but all formats added through wl_display_add_shm_format()
|
||||
* will be in the array.
|
||||
*
|
||||
* \sa wl_display_add_shm_format()
|
||||
*
|
||||
* \memberof wl_display
|
||||
*/
|
||||
struct wl_array *
|
||||
wl_display_get_additional_shm_formats(struct wl_display *display)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue