summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* scanner: Handle unrecognized invocation modeKristian Høgsberg2013-10-071-1/+3
| | | | | Print usage if we don't recognize the invocation mode. Also fixes uninitialized variable warning.
* client: Fix handling display->reader_count if poll failsNeil Roberts2013-09-251-1/+3
| | | | | | | | | | In wl_display_dispatch_queue, if poll fails then it would previously return immediately and leak a reference in display->reader_count. Then if the application ignores the error and tries to read again it will block forever. This can happen for example if the poll fails with EINTR which the application might consider to be a recoverable error. This patch makes it cancel the read so the reader_count will be decremented when poll fails.
* Export the Wayland protocol XML fileJason Ekstrand2013-09-212-0/+4
| | | | Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
* client: fix an inconsistency in documentationChang Liu2013-09-211-1/+1
| | | | | The errno is set to EAGAIN when there are undispatched events, according to L1066 of wayland-client.c.
* doc: Slight tweaks to wl_listenerAaron Faanes2013-09-211-4/+6
| | | | | Prefer \comment over // in code blocks for consistency's sake and keep variable definitions separated by a line from the rest of the body.
* utils: Document wl_container_ofAaron Faanes2013-09-211-0/+35
|
* wayland-server: Improve wording for wl_signal_get's docAaron Faanes2013-09-161-1/+1
| | | | | The old description was a bit vague; this commit hopefully improves describing what is returned.
* utils: Add doxygen for wayland-util.hAaron Faanes2013-09-161-0/+5
| | | | | | This is needed for doxygen to generate output for macro definitions, such as wl_container_of, that are contained by this file. Classes like wl_list would be documented regardless.
* utils: Reference some useful methods in wl_signal's doxygenAaron Faanes2013-09-161-1/+6
| | | | This commit adds a bit more detail on the lifecycle of a signal.
* wayland-server: Document wl_listenerAaron Faanes2013-09-161-0/+45
| | | | | This patch takes Kristian's comments into account, adding a demonstration and giving a more thorough idea of how wl_listener is used.
* wayland-server: Add a wl_resource_for_each_safe macroRob Bradford2013-09-111-0/+8
| | | | | A version of wl_resource_for_each that is safe for iteration when items in the list are removed.
* utils: tweak wl_list for better doxygen outputAaron Faanes2013-09-111-2/+3
|
* wayland-server: Document wl_signalAaron Faanes2013-09-111-0/+37
|
* wayland-server: Fix a uninitialized warning from clangAaron Faanes2013-09-111-1/+1
| | | | | This warning is unnecessary, since the pointer in question is only used for pointer arithmetic, but setting it explicitly to NULL doesn't hurt.
* scanner: Emit wl_*_destroy stub even if interface has a destructorKristian Høgsberg2013-08-301-1/+1
| | | | | | | If an interface has a destructor but no 'destroy' method we used to not emit a destroy method. Now with the fix for missing destroy requests for wl_pointer etc we need to emit the local wl_*_destroy always.
* Add support for client-side language bindingsJason Ekstrand2013-08-192-9/+86
| | | | | | | This commit adds support for language bindings on the client half of the library. The idea is the same as for server-side dispatchers. Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
* Add support for server-side language bindingsJason Ekstrand2013-08-195-25/+120
| | | | | | | | | | | | | | | | | | This commit adds support for server-side languages bindings. This is done in two ways: 1. Adding a wl_resource_set_dispatcher function that corresponds to wl_resource_set_interface. The only difference between the two functions is that the new version takes a dispatcher along with the implementation, data, and destructor. This allows for runtime calling of native language functions for callbacks instead of having to generate function pointers. 2. Adding versions of wl_resource_post_event and wl_resource_queue_event that take an array of wl_argument instead of a variable argument list. This allows for easier run-time argument conversion and removes the need for libffi-based calling of variadic functions. Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
* wayland-client: Add wl_proxy_get_listenerRob Bradford2013-08-122-0/+20
| | | | | | This is the mirror function to wl_proxy_add_listener and is useful inside client libraries to differentiate events on listeners for which multiple proxies have been created.
* wayland-server: Add a wl_resource_for_each macroRob Bradford2013-08-121-0/+5
| | | | | This macro allows you to correctly iterate through a list of resources handling the opaque nature of this type.
* client: Improve spelling and grammar in commentsBryce W. Harrington2013-08-081-6/+6
| | | | Signed-off-by: Bryce Harrington <b.harrington@samsung.com>
* server: Release additional_shm_formats array at display destructionTomeu Vizoso2013-08-081-0/+2
|
* scanner: expand help stringPeter Hutterer2013-08-071-0/+4
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* scanner: support help and --helpPeter Hutterer2013-08-071-6/+23
| | | | | | | | | wayland-scanner without arguments prints out usage. With help or --help it waits for stdin to supply something which isn't quite as informative as printing out the help. This patch also moves the strcmp for args up to have all of them in one location.
* Don't include wayland-server.h in wayland-private.hKristian Høgsberg2013-08-071-1/+2
| | | | We just declare struct wl_display manually instead.
* shm: Add API for renderers to register additional pixel formatsTomeu Vizoso2013-08-064-13/+58
|
* server: Set client->error when we fail to send a closureKristian Høgsberg2013-08-061-14/+4
| | | | | | | We we're using wl_event_loop_add_idle() here, but if we're failing because of OOM, that will typically also fail. Instead, use the existing client->error flag, which will break out of the event handling loop and shut down the client.
* server: Handle OOM properly when we fail to allocate a send closureKristian Høgsberg2013-08-061-2/+6
| | | | | If we can't allocate a closure, don't just silently continue. Set client->error so we shut down the client when we're done processing events.
* client: Simply wl_display_dispatch_queue_pending() and fix return valueJiergir Ogoerg2013-07-291-7/+4
| | | | | We're supposed to return number of events dispatched on success, not 0. Refactor to avoid goto and just return ret.
* wayland-client: Handle potential NULL-derefKristian Høgsberg2013-07-131-0/+2
| | | | | Instead, return -1 on out-of-memory. errno will be set to ENOMEM by the failing malloc.
* scanner: Fail more gracefully on out-of-memoryKristian Høgsberg2013-07-131-18/+41
| | | | | Failing with an error message and error code is little nicer. I doubt we'll hit this case much, but it makes the static analysis happy.
* connection: Handle empty signature and signature with just a version.Mariusz Ceier2013-07-121-0/+1
| | | | | | | | | | | | Functions like wl_argument_from_va_list expect from get_next_argument, to initialize details->type but when the signature is empty or contains only version (like in desktop-shell-protocol.c in weston) it is left uninitialized. This patch fixes it, by initializing details->type with '\0' value, signaling end of arguments. Signed-off-by: Mariusz Ceier <mceier+wayland@gmail.com>
* Replace two remaining wl_display_add_gloavl() occurencesKristian Høgsberg2013-07-091-1/+1
|
* wayland-server: Don't close display fd in fatal error handlerKristian Høgsberg2013-07-091-4/+1
| | | | | | | We can't do that there, we have to make sure it stays a valid fd until the application calls wl_display_disconnect(). Otherwise the application may end up poll()ing on a stale or wrong fd in case another part of the application (or another thread) triggered a fatal error.
* wayland-server: Return 0 from read_events() in case of EAGAINKristian Høgsberg2013-07-091-2/+4
| | | | | | | | | Getting no data from the socket is not an error condition. This may happen in case of calling prepare_read() and then read_events() with no other pending readers and no data in the socket. In general, read_events() may not queue up events in the given event queue. From a given threads point of view it doesn't matter whether events were read and put in a different event queue or no events were read at all.
* wayland-client: Treat EOF when reading the wayland socket as an errorNeil Roberts2013-07-091-0/+8
| | | | | | | | | | | | | | | | | If EOF is encountered while reading from the Wayland socket, make wl_display_read_events() return -1 so that it will be treated as an error. The documentation for this function states that it will set errno when there is an error so it additionally makes up an errno of EPIPE. If we don't do this then when the compositor quits the Wayland socket will be become ready for reading but wl_display_dispatch will do nothing which typically makes the application take up 100% CPU. In particular eglSwapBuffers will likely get stuck in an infinite busy loop because it repeatedly calls wl_display_dispatch_queue while it waits for the frame callback. https://bugzilla.gnome.org/show_bug.cgi?id=703892
* wayland-server: Add wl_global_create/destroy()Kristian Høgsberg2013-07-092-17/+60
| | | | | | | | | | | | | | | This patch introduces wl_global_create() and wl_global_destroy() as replacements for wl_display_add_global() and wl_display_remove_global(). The add/remove_global API did not allow a compositor to indicate the implemented version of a global, it just took the version from the interface meta data. The problem is that the meta data (which lives in libwayland-server.so) can get out of sync with a compositor implementation. The compositor will then advertise a higher version of a global than what it actually implements. The new API lets a compositor pass in a version when it registers a global, which solves the problem. The add/remove API is deprecated with this patch and will be removed.
* build: Add wayland-scanner.pc.Daiki Ueno2013-07-033-0/+18
| | | | | To allow user program to include wayland-scanner.m4 in tarball, move the path variables from it into wayland-scanner.pc.
* wayland-server: Free non-legacy wl_resource structs during wl_client_destroyKristian Høgsberg2013-07-021-3/+6
| | | | We need to free the non-legacy resources during client shutdown as well.
* wayland-server: Remove left-over double free in unbind_resource() helperKristian Høgsberg2013-07-021-1/+0
|
* wayland-server: Remove error event posting from wl_resource_createKristian Høgsberg2013-07-023-9/+60
| | | | | | | | | | | | | | | | The wl_client_add/new_object() functions sends out an NO_MEMORY error if the allocation fails. This was convenient in a couple of places where that was all the error handling that was needed. Unfortunately that looks like out-of-memory isn't handled at the call site and set a bad precedent for not cleaning up properly or not handling at all. As we're introducing wl_resource_create() as a replacement for those two functions, let's remove the automatic error event posting and require the caller to do that if necessary. This commit also introduces a new helper, wl_client_post_no_memory() to make it possible to send NO_MEMORY events from bind where we don't have a wl_resource.
* wayland-server: Mark wl_client_add/new_object as deprecatedKristian Høgsberg2013-07-022-54/+70
|
* wayland-server: Dont free resource in user data destroy callbackKristian Høgsberg2013-07-021-1/+0
|
* wayland-server: Verify request versions before invoking handlerJason Ekstrand2013-07-021-0/+15
| | | | | | | | | | | This commit provides a layer of protection for the compositor in the form of message version checking. We track version information in the wl_resource and now use this version information to verify that a request exists in that protocol version before invoking it. This way libwayland won't accidentally invoke a request that does not exist and thereby cause the compositor to crash. Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
* Add wl_resource_create() and a version field to wl_resourceJason Ekstrand2013-07-023-32/+80
| | | | | | | | | | | | | | A new function, wl_resource_create(), lets the compositor create a wl_resource for a given version of the interface. Passing 0 for the object ID will allocate a new ID. The implementation, user data and destructor can be set with wl_resource_set_implementation(). These two functions deprecates wl_client_add/new_object and the main difference and motivation is the ability to provide a version number for the resource. This lets the compositor track which version of the interface a client has created and we'll use that to verify incoming requests. Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
* Add version information to wl_message signatures.Jason Ekstrand2013-07-023-12/+50
| | | | | | | | | | | | This commit adds version information to wl_message signatures and a wl_message_get_since function to retrieve. The since version comes in the form of a (possible) integer at the begining of the message. If the message starts with an integer, then it specifies the "since" version of that message. Messages present in version one do not get this "since" information. In this way we can run-time detect the version information for a structure on a per-message basis. Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
* server: Make wl_object and wl_resource opaque structsKristian Høgsberg2013-07-028-39/+53
| | | | | | | | | | With the work to add wl_resource accessors and port weston to use them, we're ready to make wl_resource and wl_object opaque structs. We keep wl_buffer in the header for EGL stacks to use, but don't expose it by default. In time we'll remove it completely, but for now it provides a transition paths for code that still uses wl_buffer. Reviewed-by: Jason Ekstrand<jason@jlekstrand.net>
* Change wl_shm_buffer to use a resource pointerJason Ekstrand2013-06-212-37/+19
| | | | | | | This commit also has the effect of making wl_shm_buffer no longer a wl_buffer derivative. Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
* Change SHM wl_buffer functions to use the wl_shm_buffer structureJason Ekstrand2013-06-212-26/+25
| | | | | | | This commit does not break ABI. It merely changes the types of some things and adds a wl_shm_buffer_get function. Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
* Add a wl_resource_instance_of functionJason Ekstrand2013-06-214-4/+21
| | | | Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
* Free non-legacy resources inside wl_resource_destroyJason Ekstrand2013-06-201-1/+4
| | | | | | | | | | | | This commit makes wl_resource_destroy automatically free all non-legacy resource structures. Since wl_resource is now an opaque structure it doesn't make sense for the clients to be freeing it. This checks to make sure that it was added through wl_client_add_object or wl_client_new_object and not wl_client_add_resource before it frees it. This way if it is a legacy resources embedded in a structure somewhere we don't have an invalid free. Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>