voidwl_client_add_destroy_late_listener(structwl_client*client,structwl_listener*listener)
Add a listener to be called at the end of wl_client destruction
The listener provided will be called when wl_client destroy is nearly complete, after all of that
client's resources have been destroyed.
There is no requirement to remove the link of the wl_listener when the signal is emitted.
Since
1.22.0
voidwl_client_add_destroy_listener(structwl_client*client,structwl_listener*listener)
Add a listener to be called at the beginning of wl_client destruction
The listener provided will be called when wl_client destroy has begun, before any of that client's
resources have been destroyed.
There is no requirement to remove the link of the wl_listener when the signal is emitted.
voidwl_client_add_resource_created_listener(structwl_client*client,structwl_listener*listener)
Add a listener for the client's resource creation signal
Parametersclient The client object
listener The listener to be added
When a new resource is created for this client the listener will be notified, carrying the new resource
as the data argument.
voidwl_client_flush(structwl_client*client)
Flush pending events to the client
Parametersclient 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.
voidwl_client_for_each_resource(structwl_client*client,wl_client_for_each_resource_iterator_func_titerator,void*user_data)
Iterate over all the resources of a client
Parametersclient The client object
iterator The iterator function
user_data The user data pointer
The function pointed by iterator will be called for each resource owned by the client. The user_data will
be passed as the second argument of the iterator function. If the iterator function returns
WL_ITERATOR_CONTINUE the iteration will continue, if it returns WL_ITERATOR_STOP it will stop.
Creating and destroying resources while iterating is safe, but new resources may or may not be picked up
by the iterator.
Seealsowl_iterator_resultstructwl_client*wl_client_from_link(structwl_list*link)
Get a wl_client by its link
Parameterslink The link of a wl_clientSeealsowl_client_for_each()wl_display_get_client_list()wl_client_get_link()voidwl_client_get_credentials(conststructwl_client*client,pid_t*pid,uid_t*uid,gid_t*gid)
Return Unix credentials for the client
Parametersclient The display object
pid Returns the process ID
uid Returns the user ID
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.
Note, process IDs are subject to race conditions and are not a reliable way to identify a client.
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.
structwl_display*wl_client_get_display(structwl_client*client)
Get the display object for the given client
Parametersclient The client object
Returns
The display object the client is associated with.
intwl_client_get_fd(structwl_client*client)
Get the file descriptor for the client
Parametersclient The display object
Returns
The file descriptor to use for the connection
This function returns the file descriptor for the given client.
Be sure to use the file descriptor from the client for inspection only. If the caller does anything to
the file descriptor that changes its state, it will likely cause problems.
See also wl_client_get_credentials(). It is recommended that you evaluate whether
wl_client_get_credentials() can be applied to your use case instead of this function.
If you would like to distinguish just between the client and the compositor itself from the client's
request, it can be done by getting the client credentials and by checking the PID of the client and the
compositor's PID. Regarding the case in which the socketpair() is being used, you need to be careful.
Please note the documentation for wl_client_get_credentials().
This function can be used for a compositor to validate a request from a client if there are additional
information provided from the client's file descriptor. For instance, suppose you can get the security
contexts from the client's file descriptor. The compositor can validate the client's request with the
contexts and make a decision whether it permits or deny it.
structwl_list*wl_client_get_link(structwl_client*client)
Get the link by which a client is inserted in the client list
Parametersclient The client object
Seealsowl_client_for_each()wl_display_get_client_list()wl_client_from_link()structwl_resource*wl_client_get_object(structwl_client*client,uint32_tid)
Look up an object in the client name space
Parametersclient The client object
id The object id
Returns
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.
voidwl_client_post_implementation_error(structwl_client*client,charconst*msg,...)
Report an internal server error
Parametersclient The client object
msg A printf-style format string
... Format string arguments
Report an unspecified internal implementation error and disconnect the client.
voidwl_client_set_max_buffer_size(structwl_client*client,size_tmax_buffer_size)
Adjust the maximum size of the client connection buffers
Parametersclient The client object
max_buffer_size The maximum size of the connection buffers
The actual size of the connection buffers is a power of two, the requested max_buffer_size is therefore
rounded up to the nearest power of two value.
Lowering the maximum size may not take effect immediately if the current content of the buffer does not
fit within the new size limit.
The minimum buffer size is 4096. The default buffers size can be set using
wl_display_set_default_max_buffer_size().
Seealsowl_display_set_default_max_buffer_size()Since
1.22.90