Yong Bakos [Thu, 11 Aug 2016 21:33:00 +0000 (14:33 -0700)]
protocol: Capitalize ID for consistency
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Yong Bakos [Thu, 11 Aug 2016 21:32:59 +0000 (14:32 -0700)]
protocol: Hyphenate subsurface
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Yong Bakos [Thu, 11 Aug 2016 21:32:58 +0000 (14:32 -0700)]
protocol: Add summary attributes to request params and enum entries
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Yong Bakos [Thu, 11 Aug 2016 19:13:37 +0000 (12:13 -0700)]
server: Add doxygen comment for wl_client_for_each
Commit
596024f728b0a1292ee69a80dd72a85167870936 includes a doc comment
with a link to the wl_client_for_each macro, causing an error when generating
documentation.
Add a doc comment to wl_client_for_each, enabling the hyperlink and removing
the error.
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Giulio Camuffo [Fri, 12 Aug 2016 07:33:06 +0000 (09:33 +0200)]
Add API to install protocol loggers on the server wl_display
The new wl_display_add_protocol_logger allows to set a function as
a logger, which will get called when a new request is received or an
event is sent.
This is akin to setting WAYLAND_DEBUG=1, but more powerful because it
can be enabled at run time and allows to show the log e.g. in a UI view.
A test is added for the new functionality.
Signed-off-by: Giulio Camuffo <giulio.camuffo@kdab.com>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Giulio Camuffo [Thu, 11 Aug 2016 15:23:10 +0000 (17:23 +0200)]
Add API to retrieve and iterate over the resources list of a client
To complement on the new resource created signal, this allows to
iterate over the existing resources of a client.
Signed-off-by: Giulio Camuffo <giulio.camuffo@kdab.com>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
[Pekka: added empty lines, init ret in for_each_helper()]
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Giulio Camuffo [Thu, 11 Aug 2016 15:23:09 +0000 (17:23 +0200)]
Add a resource creation signal
This change allows to add a resource creation listener to a wl_client,
which will be notified when a new resource is created for that client.
The alternative would be to have a per wl_display listener, but i think
that resources are really client specific objects, so it makes sense
to use the wl_client as the context.
Signed-off-by: Giulio Camuffo <giulio.camuffo@kdab.com>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
[Pekka: added wl_list_remove() in TEST(new_resource).]
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Giulio Camuffo [Tue, 9 Aug 2016 10:46:53 +0000 (12:46 +0200)]
Add API to get the list of connected clients
This patch chooses the wl_list_for_each-style of iterating over
the clients, instead of using an iterator function, because i think
it is easier to use.
Signed-off-by: Giulio Camuffo <giulio.camuffo@kdab.com>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Giulio Camuffo [Tue, 9 Aug 2016 10:46:52 +0000 (12:46 +0200)]
Add API to retrieve the interface name of a wl_resource
Signed-off-by: Giulio Camuffo <giulio.camuffo@kdab.com>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Yong Bakos <ybakos@humanoriented.com>
Sungjae Park [Tue, 9 Aug 2016 10:46:51 +0000 (12:46 +0200)]
server: add listener API for new clients
Using display object, Emit a signal if a new client is created.
In the server-side, we can get the destroy event of a client,
But there is no way to get the created event of it.
Of course, we can get the client object from the global registry
binding callbacks.
But it can be called several times with same client object.
And even if A client creates display object,
(so there is a connection), The server could not know that.
There could be more use-cases not only for this.
Giulio: a test is added for the new functionality
Signed-off-by: Sung-jae Park <nicesj@nicesj.com>
Signed-off-by: Giulio Camuffo <giulio.camuffo@kdab.com>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Quentin Glidic [Tue, 5 Jul 2016 18:41:50 +0000 (20:41 +0200)]
scanner: Generate all SINCE_VERSION macros for everyone
Practical example: a client supporting version 2 of wl_output will wait
for the wl_output.done event before starting wl_output-related
operations. However, if the server only supports version 1, no event
will ever come, and it must fallback to use the wl_output.geometry event
alone.
Without this macro, it cannot check for that in a nice way.
This patch introduces the same #defines in both server and client
headers. We rely on both being generated from the same XML file and
https://gcc.gnu.org/onlinedocs/cpp/Undefining-and-Redefining-Macros.html
to not cause compiler errors or warning due to redefinitions. We also
assume that no-one uses the same name in the same interface for both a
request and an event.
If this patch does cause grief due to identical redefinitions, the
contingency plan is to change the generator to produce
#ifndef/#define/#endif instead of just #define.
Signed-off-by: Quentin Glidic <sardemff7+git@sardemff7.net>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
[Pekka: add paragraphs to commit message.]
Quentin Glidic [Tue, 5 Jul 2016 18:41:49 +0000 (20:41 +0200)]
protocol: Add release (destructor) request to wl_output
Outputs come and go, and this is needed to clean up wl_resources on the
server side. All protocol objects need a way to be destroyed.
Cc: Neil Roberts <neil@linux.intel.com>
Cc: Jason Ekstrand <jason@jlekstrand.net>
Signed-off-by: Quentin Glidic <sardemff7+git@sardemff7.net>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Yong Bakos <ybakos@humanoriented.com>
[Pekka: added commit message]
Yong Bakos [Mon, 18 Jul 2016 17:46:00 +0000 (12:46 -0500)]
display-test: Remove redundant stdbool include
display-test.c includes stdbool.h twice. Remove the redundant include.
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Yong Bakos [Mon, 18 Jul 2016 17:42:25 +0000 (12:42 -0500)]
(multiple): Include stdint.h
Some headers and source files have been using types such as uint32_t
without explicitly including stdint.h.
Explicitly include stdint.h where appropriate.
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
Khem Raj [Fri, 15 Jul 2016 23:23:48 +0000 (16:23 -0700)]
scanner: Use uint32_t instead of uint
uint32_t is C99 defined stdint type
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Bryce Harrington [Fri, 8 Jul 2016 23:51:16 +0000 (16:51 -0700)]
scanner: Improve documentation for strtouint()
Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Yong Bakos <ybakos@humanoriented.com>
Bryce Harrington [Sat, 9 Jul 2016 02:00:20 +0000 (19:00 -0700)]
tests: Require base 10 for the string specifying the number of open fd's
The third arg to strtol() specifies the base to assume for the number.
When 0 is passed, as is currently done in wayland-client.c, hexadecimal
and octal numbers are permitted and automatically detected and
converted.
exec-fd-leak-checker's single argument is the count of file descriptors
it should expect to be open. We should expect this to be specified only
as a decimal number, there's no reason why one would want to use octal
or hexadecimal for that.
Suggested by Yong Bakos.
Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Yong Bakos <ybakos@humanoriented.com>
Yong Bakos [Tue, 7 Jun 2016 15:19:39 +0000 (10:19 -0500)]
scanner: Move PROGRAM_NAME define
PROGRAM_NAME was defined within the if block of HAVE_LIBXML, causing a
compilation failure when libxml is not present.
Move the define of PROGRAM_NAME out of the if block.
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
Yong Bakos [Tue, 24 May 2016 23:10:17 +0000 (17:10 -0600)]
server-core, event-loop: Fix parameter alignment.
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Yong Bakos [Tue, 24 May 2016 19:55:12 +0000 (13:55 -0600)]
scanner: Replace #define tab with space
wayland-client-protocol.h and wayland-server-protocol.h use a tab
between the identifier and token of generated #defines for request/event
opcodes and versions. While this sometimes enables vertical alignment,
it more frequently doesn't, and leads to awkward spacing.
Replace the tab with a space, for consistency and readability.
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Quentin Glidic <sardemff7+git@sardemff7.net>
Tested-by: Quentin Glidic <sardemff7+git@sardemff7.net>
Yong Bakos [Mon, 23 May 2016 23:59:33 +0000 (17:59 -0600)]
server, server-core: Minimize fwd decs, use macro, and format
wayland-server.h: Adjust line breaks between prototypes.
wayland-server-core.h:
Adjust line breaks between prototypes.
Adjust space between splats and identifiers.
Remove unconventional linebreak before first parameter.
Add line breaks after return types.
Remove unnecessary forward declarations, and:
- move 'struct wl_client' declaration close to the dependent typedef
- tastefully move 'wl_shm_buffer_get' to leverage the return type
Replace explicit __attribute__ with WL_PRINTF macro.
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Yong Bakos [Mon, 23 May 2016 23:06:09 +0000 (17:06 -0600)]
client-core: Add missing line breaks
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Yong Bakos [Sat, 21 May 2016 04:23:58 +0000 (22:23 -0600)]
event-loop: Include wayland-util.h
event-loop.c uses WL_EXPORT and wl_list, which are defined in
wayland-util.h.
Include wayland-util.h explicitly, rather than transitively through
wayland-server-core.h.
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Sam Spilsbury <smspillaz@gmail.com>
Yong Bakos [Sat, 21 May 2016 04:18:36 +0000 (22:18 -0600)]
wayland-shm: Include wayland-util.h
wayland-shm.c uses WL_EXPORT and wl_array, which are defined in
wayland-util.h.
Include wayland-util.h explicitly, rather than transitively through
wayland-server.h.
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Sam Spilsbury <smspillaz@gmail.com>
Bryce Harrington [Mon, 6 Jun 2016 17:58:56 +0000 (10:58 -0700)]
scanner: Fix reported executable name to 'wayland-scanner'
'wayland-scanner -v' (correctly) reports the program as named
"wayland-scanner", but 'wayland-scanner -h' was inconsistent, referring
to it as './scanner'.
Also refactor this and other references to the program name to use a
common #define, PROGRAM_NAME.
Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Yong Bakos <ybakos@humanoriented.com>
Tested-by: Yong Bakos <ybakos@humanoriented.com>
Yong Bakos [Wed, 18 May 2016 03:02:01 +0000 (21:02 -0600)]
wayland-server: Clarify included header dependencies
wayland-server.c directly depends on wayland-util.h, and will include
wayland-server-protocol.h via wayland-server.h.
Explicitly include wayland-util.h, making this dependency clear.
Remove the redundant inclusion of wayland-server-protocol.h.
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Yong Bakos [Mon, 16 May 2016 18:05:39 +0000 (12:05 -0600)]
event-loop: Make transitive include explicit
The explicit inclusion of wayland-server.h hides the real dependency, which
is wayland-server-core.h.
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
Yong Bakos [Thu, 12 May 2016 20:52:39 +0000 (15:52 -0500)]
doc: Unpublish global_zombie_object and wl_interface_equal
Both global_zombie_object and wl_interface_equal are private, yet were
part of public documentation despite not being part of the public API.
Move these two definitions to the top of an existing doxygen \cond block,
which removes them from the public documentation.
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Yong Bakos [Thu, 12 May 2016 20:52:38 +0000 (15:52 -0500)]
doc: Unpublish wl_log* and wl_abort
The public documentation included descriptions of wl_log_stderr_handler,
wl_log_func_t wl_log_handler, wl_log and wl_abort. These are not accessible
via the public API.
Move the doxygen \endcond command to wrap these definitions, removing them
from publication.
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Yong Bakos [Thu, 12 May 2016 20:52:37 +0000 (15:52 -0500)]
doc: Unpublish wl_display_get_additional_shm_formats
The Wayland docbook and the doxygen html docs had been presenting
wl_display_get_additional_shm_formats as part of the public API, but the
prototype for this function is in wayland-private.h.
Add a \private annotation to the doc comment, preventing doxygen from
publishing this function as public.
Add logic to the publican xsl to only transform elements with a "prot"
attribute value of "public".
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Pekka Paalanen [Wed, 1 Jun 2016 08:08:02 +0000 (11:08 +0300)]
configure.ac: bump version to 1.11.90 for open development
As announced in 1.11.0 release notes, master is open again.
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Bryce Harrington [Wed, 1 Jun 2016 00:11:20 +0000 (17:11 -0700)]
configure.ac: bump to version 1.11.0 for the official release
Bryce Harrington [Tue, 24 May 2016 19:29:59 +0000 (12:29 -0700)]
configure.ac: bump to version 1.10.93 for the RC1 release
Yong Bakos [Fri, 20 May 2016 02:31:16 +0000 (20:31 -0600)]
scanner: Remove unused forward decs from client protocol
wayland-client-protocol.h had forward declarations for wl_client and
wl_resource, yet nothing on the client side references these types.
Add a 'side' condition to only generate these forward declarations in the
server protocol header.
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: <pekka.paalanen@collabora.co.uk>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Marek Chalupa [Fri, 13 May 2016 13:01:18 +0000 (15:01 +0200)]
display-test: move a misplaced comment
we split a function while refactoring in c643781 and now
the comment makes no sense
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Yong Bakos [Thu, 19 May 2016 16:27:29 +0000 (10:27 -0600)]
tests: Check for client/server-core.h inclusion
The purpose of wayland-*-protocol-core.h is to mimc the
wayland-*-protocol.h generated by scanner --include-core-only.
The only difference being what wayland-*-protocol.h should include.
Add an include check in the headers-protocol-core-test, to be sure that
a wayland-*-protocol.h generated with the --include-core-only option
properly includes wayland-*-core.h.
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Bryce Harrington [Wed, 18 May 2016 05:07:48 +0000 (22:07 -0700)]
configure.ac: bump to version 1.10.92 for the beta release
Yong Bakos [Sat, 7 May 2016 14:11:30 +0000 (09:11 -0500)]
private: Remove unnecessary forward declarations
Declarations for wl_connection and wl_closure are not needed here.
wl_closure already has a complete definition.
Removing these forward declarations results in a clean, warning-free compile.
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
[Updated to apply to trunk]
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Yong Bakos [Sun, 8 May 2016 13:44:08 +0000 (08:44 -0500)]
connection: Move wl_interface_equal to util
Move the wl_interface_equal prototype to the top of wayland-private, where
it is not buried in the middle of map, connection and closure functions.
Move the implementation out of connection and into util. This is a utility
function, not specific to connections, and has call sites within connection,
wayland-client and wayland-server.
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Yong Bakos [Sun, 8 May 2016 19:42:28 +0000 (14:42 -0500)]
doc: Formalize file comment in wayland-client.h, wayland-server.h
Publican was generating a subtle error during a build:
Error: no ID for constraint linkend: Server-wayland-server-core_8h.
This was caused by doxygen applying the doc comment at the top of
wayland-server.h as the documentation for struct wl_object. As such, the
generated documentation for wl_object was also very incorrect.
Make the file doc comments in wayland-client.h and wayland-server.h real
doxygen file doc comments with the \file command, add a \brief, make the
inclusion warning a \warning, correct the language of the comment in
wayland-server.h, and remove one unnecessary line break.
This squelches the publican error, removes the bad wl_object documentation,
and makes the comment appear in the generated html documentation.
References:
d74a9c079b1aeb44f69b4132dc2c38362e21f281
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Yong Bakos [Sat, 7 May 2016 23:14:11 +0000 (18:14 -0500)]
protocol: Remove double line break
All vertical whitespace should manifest as a single blank line, never two.
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
Armin Krezović [Thu, 5 May 2016 15:27:57 +0000 (17:27 +0200)]
scanner: Add version argument to wayland-scanner
This adds a command line argument to print wayland-scanner version.
It also makes wayland-scanner emit a comment with wayland library
version to every file it generates.
v2: separate variable definitions into their own lines and remove
old style "version" argument
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Yong Bakos <ybakos@humanoriented.com>
Tested-by: Yong Bakos <ybakos@humanoriented.com>
Signed-off-by: Armin Krezović <krezovic.armin@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Bryce Harrington [Wed, 4 May 2016 00:56:22 +0000 (17:56 -0700)]
configure.ac: bump to version 1.10.91 for the alpha release
Auke Booij [Sat, 5 Dec 2015 12:39:12 +0000 (12:39 +0000)]
protocol: add support for cross-interface enum attributes
The enum attribute, for which scanner support was introduced in
1771299, can be used to link message arguments to <enum>s. However,
some arguments refer to <enum>s in a different <interface>.
This adds scanner support for referring to an <enum> in a different
<interface> using dot notation. It also sets the attributes in this
style in the wayland XML protocol (wl_shm_pool::create_buffer::format
to wl_shm::format, and wl_surface::set_buffer_transform::transform to
wl_output::transform), and updates the documentation XSL so that this
new style is supported.
Changes since v2:
- add object:: prefix for all enumerations in the documentation
- fix whitespace in scanner.c
- minor code fixup to return early and avoid casts in scanner.c
Changes since v1:
- several implementation bugs fixed
Signed-off-by: Auke Booij <auke@tulcod.com>
Reviewed-by: Nils Christopher Brause <nilschrbrause@googlemail.com>
Reviewed-by: Bill Spitzak <spitzak@gmail.com>
[Pekka: rebased across
cde251a124d41977b447098cc530fcad2834a45f]
[Pekka: wrap lines and space fixes in scanner.c]
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Yong Bakos [Sat, 30 Apr 2016 12:35:50 +0000 (07:35 -0500)]
protocol: Add summaries to event parameters
All event arg elements now have an appropriate summary attribute.
This was conducted mostly in response to the undocumented parameter
warnings generated during 'make check'.
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Eric Engestrom [Mon, 2 May 2016 08:49:37 +0000 (09:49 +0100)]
tests: fix typo
Signed-off-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Armin Krezović <krezovic.armin@gmail.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Eric Engestrom [Mon, 2 May 2016 08:49:36 +0000 (09:49 +0100)]
doc: fix typos
Signed-off-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Armin Krezović <krezovic.armin@gmail.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Eric Engestrom [Mon, 2 May 2016 08:49:35 +0000 (09:49 +0100)]
util: fix typo
Signed-off-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Armin Krezović <krezovic.armin@gmail.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Eric Engestrom [Mon, 2 May 2016 08:49:34 +0000 (09:49 +0100)]
server: fix typo
Signed-off-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Armin Krezović <krezovic.armin@gmail.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Eric Engestrom [Mon, 2 May 2016 08:49:33 +0000 (09:49 +0100)]
client: fix typo
Signed-off-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Armin Krezović <krezovic.armin@gmail.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Yong Bakos [Thu, 28 Apr 2016 17:01:34 +0000 (12:01 -0500)]
protocol: Hyphenate compound adjective surface-local
Remove superfluous 'local' from 'buffer local'.
In addition, simplify the phrasing of local x/y coordinates in parameter
summaries.
See https://lists.freedesktop.org/archives/wayland-devel/2016-April/028249.html.
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Yong Bakos [Thu, 28 Apr 2016 17:01:33 +0000 (12:01 -0500)]
doc: Hyphenate compound adjectives window-local, surface-local
See https://lists.freedesktop.org/archives/wayland-devel/2016-April/028249.html.
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Jonas Ådahl [Wed, 27 Apr 2016 07:37:41 +0000 (15:37 +0800)]
client: Fix wl_display_roundtrip_queue() race condition
Without this commit, wl_display_roundtrip_queue() is vulnerable to a
race condition, causing the callback to be dispatched on the wrong
queue.
The race condition happens if some non-main thread calls
wl_display_roundtrip_queue() with its thread local queue, and the main
thread reads and dispatches the callback event from the
wl_display_sync() call before the thread local queue is set.
The issue is fixed by using a proxy wrapper, making the initialization
of the callback proxy atomic, effectively making it no longer possible
for some other thread to dispatch the proxy before the correct thread
local queue is set.
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
[Pekka: check display_wrapper]
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Jonas Ådahl [Fri, 29 Apr 2016 11:30:23 +0000 (19:30 +0800)]
tests/queue-test: Add tests for proxy wrappers
Test that doing wl_display.sync on a wrapped proxy with a special queue
works as expected.
Test that creating a wrapper on a destroyed but not freed proxy fails.
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Jonas Ådahl [Fri, 29 Apr 2016 11:30:22 +0000 (19:30 +0800)]
client: Introduce proxy wrappers
Using the libwayland-client client API with multiple threads with
thread local queues are prone to race conditions.
The problem is that one thread can read and queue events after another
thread creates a proxy but before it sets the queue.
This may result in the event to the proxy being silently dropped, or
potentially dispatched on the wrong thread had the creating thread set
the implementation before setting the queue.
This patch introduces API to solve this case by introducing "proxy
wrappers". In short, a proxy wrapper is a wl_proxy struct that will
never itself proxy any events, but may be used by the client to set a
queue, and use it instead of the original proxy when sending requests
that creates new proxies. When sending requests, the wrapper will
work in the same way as the normal proxy object, but the proxy created
by sending a request (for example wl_display.sync) will inherit to the
same proxy queue as the wrapper.
https://bugs.freedesktop.org/show_bug.cgi?id=91273
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
Jonas Ådahl [Wed, 27 Apr 2016 06:46:54 +0000 (14:46 +0800)]
client: Make proxy_destroy a static function
proxy_destroy() is just the implementation of the atomic part of
wl_proxy_destroy(), so lets make it static.
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Marek Chalupa [Fri, 22 Apr 2016 15:46:00 +0000 (17:46 +0200)]
connection: remove redundant assignment
the code is something like:
if (object == NULL && ...) {
object = NULL;
return;
}
first, the object is already NULL, second, the assignment has no effect
since we return from the function right away
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
Yong Bakos [Tue, 5 Apr 2016 23:24:01 +0000 (18:24 -0500)]
protocol: Correct grammar and spelling
Fix grammar, spelling, tense, and other inconsistencies, based on
correctness, consistency, and precedence both here and influenced
by wayland-protocols.
- Standardize lower case for summary attribute values.
- Minor vertical whitespace removal consistency.
- Standarize references to coordinates, preferring 'surface local'
- Fix spelling, grammar, tense, and punctuation.
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Emil Velikov [Sun, 17 Apr 2016 11:29:24 +0000 (12:29 +0100)]
utils: move include directives before extern "C" wrapper
Analogous to last two commits.
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Quentin Glidic <sardemff7+git@sardemff7.net>
Emil Velikov [Sun, 17 Apr 2016 11:29:23 +0000 (12:29 +0100)]
server: move include directives before extern "C" wrapper
Analogous to previous commit but for the server(-core) header.
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Quentin Glidic <sardemff7+git@sardemff7.net>
Emil Velikov [Sun, 17 Apr 2016 11:29:22 +0000 (12:29 +0100)]
scanner: move include directives before extern "C" wrapper
Adding extern "C" wrapper before includes (especially system ones) is
illadvised as the headers themselves can behave diffently in that case.
See the section "Including C Headers in C++ Code" in the following
http://www.oracle.com/technetwork/articles/servers-storage-dev/mixingcandcpluspluscode-305840.html
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Quentin Glidic <sardemff7+git@sardemff7.net>
Eric Engestrom [Sat, 2 Apr 2016 16:04:05 +0000 (17:04 +0100)]
wayland-client: fix spelling mistake
Signed-off-by: Eric Engestrom <eric@engestrom.ch>
Eric Engestrom [Sat, 2 Apr 2016 16:04:04 +0000 (17:04 +0100)]
protocol: fix spelling mistake
Signed-off-by: Eric Engestrom <eric@engestrom.ch>
Yong Bakos [Thu, 31 Mar 2016 23:55:54 +0000 (18:55 -0500)]
scanner: Fix spacing of @param
Adds one space to the @param lines in generated .h files,
aligning the indentation with the rest of the comment block.
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Yong Bakos [Fri, 11 Mar 2016 04:31:59 +0000 (22:31 -0600)]
ignore: Add *.dtd.embed
Although autogen.sh has a --disable-dtd-validation option, it is
on by default, so it seems convenient to add the generated symlink
to .gitignore.
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Yong Bakos [Thu, 10 Mar 2016 20:36:08 +0000 (14:36 -0600)]
doc: Ignore html subdirectory.
Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Derek Foreman [Tue, 9 Feb 2016 22:29:49 +0000 (16:29 -0600)]
shm: Log a warning if a shm buffer address is requested when it may be invalid
If wl_shm_buffer_get_data() is called on a shm pool that has an external
reference and a pending resize, then the buffer may be outside the pool's
current mapping.
Log a warning if this happens.
Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Derek Foreman [Tue, 9 Feb 2016 22:03:48 +0000 (16:03 -0600)]
shm: Defer wl_shm_pool_resize if a pool has external references
If a compositor is rendering in one thread while dispatching wayland
events in another, a wl_shm_pool_resize() could change the memory
mappings it's rendering from and cause a crash.
Now we defer wl_shm_pool_resize() if the compositor has references on a
pool, and perform the actual resize when it drops those references.
Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Derek Foreman [Tue, 9 Feb 2016 22:03:47 +0000 (16:03 -0600)]
shm: Split pool reference counting into external and internal references
This is a preliminary step towards deferring shm resize operations until
after the compositor has released all external references on a pool.
Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Sergi Granell [Thu, 18 Feb 2016 22:59:29 +0000 (23:59 +0100)]
server: Fix shm_create_pool size fail path fd leak
If the client passed a size <= 0 to shm_create_pool, it would
go to err_free, which wouldn't close the fd, and thus leave it opened.
We can also move the size check before the struct wl_shm_pool
malloc, so in case the client passes a wrong size, it won't
do an unnecessary malloc and then free.
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Bryce Harrington [Fri, 4 Mar 2016 18:50:23 +0000 (10:50 -0800)]
doc: Note strong recommendation to use S-o-b in contributions
Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Peter Hutterer [Mon, 29 Feb 2016 23:28:49 +0000 (09:28 +1000)]
doc: link between client and server doc and to the wayland book
And insert "client" or "server" into the PROJECT_NAME to know which one we
have.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Peter Hutterer [Mon, 29 Feb 2016 23:26:21 +0000 (09:26 +1000)]
doc: generate doxygen html output from the scanner
This switches the scanner to generate doxygen-compatible tags for the
generated protocol headers, and hooks up the doxygen build to generate server
and client-side API documentation. That documentation is now in
Client/ and Server/, respectively.
GENERATE_HTML is on by default and must be disabled for the xml/man targets to
avoid messing up the new documentation. We disable all three three targets in
the doxyfile (xml and man default to NO anyway) to make it obvious that they
need to be set in the per-target instructions.
Each protocol is a separate doxygen @page, with each interface a @subpage.
Wayland only has one protocol, wayland-protocols will have these nested.
Each protocol page has a list of interfaces and the copyright and description
where available.
All interfaces are grouped by doxygen @defgroup and @ingroups and appear in
"Modules" in the generated output. Each interface subpage has the description
and a link to the actual API doc.
Function, struct and #defines are documented in doxygen style and associated
with the matching interface.
Note that pages and groups have fixed HTML file names and are directly
linkable/bookmark-able.
The @mainpage is a separate file that's included at build time. It doesn't
contain much other than links to where the interesting bits are. It's a static
file though that supports markdown, so we can extend it easily in the future.
For doxygen we need the new options EXTRACT_ALL and OPTIMIZE_OUTPUT_FOR_C so
it scans C code properly. EXTRACT_STATIC is needed since most of the protocol
hooks are static.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Pekka Paalanen [Wed, 2 Mar 2016 09:00:35 +0000 (11:00 +0200)]
scanner: avoid executable stack
Before this patch:
$ scanelf -lpqe ./wayland-scanner
RWX --- --- ./wayland-scanner
That indicates the stack is executable, which is a bad thing for
security. Wayland-scanner does not actually need an executable stack, it
is just an oversight from using an .S file in the sources.
Add a special incantation in dtddata.S to make it not cause the stack to
become executable.
Reported-by: Mart Raudsepp <leio@gentoo.org>
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Tested-by: Mart Raudsepp <leio@gentoo.org>
Pekka Paalanen [Mon, 29 Feb 2016 12:59:51 +0000 (14:59 +0200)]
build: fix ./configure --disable-dtd-validation
When configured with --disable-dtd-validation:
CPPAS src/dtddata.o
src/dtddata.S: Assembler messages:
src/dtddata.S:39: Error: file not found: src/wayland.dtd.embed
Makefile:1520: recipe for target 'src/dtddata.o' failed
This is because the variable name used does not match the implicit
variable name in autoconf.
Fix the variable name, making both --disable-dtd-validation and
--enable-dtd-validation to what they should.
Do not try to build dtddata.S if dtd-validation is disabled. It depends
on wayland.dtd.embed which is created by configure only if
dtd-validation is enabled.
If not building dtddata.S, also make sure the extern definitions in
scanner.c are compiled out.
Bugzilla: https://bugs.gentoo.org/show_bug.cgi?id=575212
Reported-by: leio@gentoo.org
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Quentin Glidic <sardemff7+git@sardemff7.net>
Tested-by: Bryce Harrington <bryce@osg.samsung.com>
Marek Chalupa [Mon, 22 Feb 2016 13:37:00 +0000 (14:37 +0100)]
tests: add test for receiving an error on destroyed object
test if receiving an error on already destroyed object won't
do any harm
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Tested-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Jonas Ådahl [Mon, 22 Feb 2016 05:37:26 +0000 (13:37 +0800)]
client: Don't segfault when receiving error on destroyed object
If an error is received on a destroyed object, we'd get NULL passed
to display_handle_error() instead of a pointer to a valid wl_proxy.
The logging is changed to report [unknown interface] and [unknown id]
instead of the actual interface name and id.
The wl_display_get_protocol_error() documentation is updated to handle
the situation. For when the proxy was NULL, the object id 0 and
interface NULL is written.
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
[Pekka: changed the error message wording]
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Acked-by: Jonas Ådahl <jadahl@gmail.com>
Bill Spitzak [Fri, 6 Nov 2015 16:27:27 +0000 (08:27 -0800)]
doc: Use enum argument type to make links in protocol documentation
Reviewed-by: Auke Booij <auke@tulcod.com>
Derek Foreman [Fri, 19 Feb 2016 00:23:05 +0000 (18:23 -0600)]
Revert "server: validate resource versions at creation time"
This reverts commit
88ff135ad46b556b6fdeb1244ffd019a262967bc.
The parent interface version may be higher than this interface version,
and the child object should inherit that version.
This check is wrong.
Derek Foreman [Wed, 17 Feb 2016 15:12:58 +0000 (09:12 -0600)]
Revert "build: build distcheck with --enable-fatal-warnings"
This reverts commit
8125919b0d8e7c776652e4f1d829b9edfa6c4a68.
This makes things far more annoying than intended, especially since
the list of default warnings isn't consistent from distro to distro.
Derek Foreman [Fri, 15 Jan 2016 19:33:53 +0000 (13:33 -0600)]
build: build distcheck with --enable-fatal-warnings
Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Derek Foreman [Fri, 15 Jan 2016 19:33:52 +0000 (13:33 -0600)]
build: Add an --enable-fatal-warnings configure option
New --enable-fatal-warnings ./configure option that just adds -Werror
to GCC_CFLAGS
Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Derek Foreman [Fri, 15 Jan 2016 16:06:48 +0000 (10:06 -0600)]
server: validate resource versions at creation time
We shouldn't ever create a resource with version less than 1 or
greater than the interface version.
Reviewed-by: Marek Chalupa <mchqwerty@gmail.com>
Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Derek Foreman [Thu, 14 Jan 2016 20:32:38 +0000 (14:32 -0600)]
resource-test: Use wl_seat instead of wl_display for testing
We're creating resources with versions up to 4. wl_display isn't version 4,
so this is technically verifying that we can do something we shouldn't.
wl_seat already has versions this high, so switch to that.
Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Bryce Harrington [Wed, 17 Feb 2016 01:15:26 +0000 (17:15 -0800)]
configure.ac: bump to version 1.10.90 for open development
Master is open for new feature development again.
Bryce Harrington [Tue, 16 Feb 2016 20:03:40 +0000 (12:03 -0800)]
configure.ac: bump to version 1.10.0 for the official release
Jonas Ådahl [Wed, 10 Feb 2016 15:35:44 +0000 (23:35 +0800)]
connection: Don't add uninitialized memory as 4 byte alignment padding
When we are adding padding bytes making our wl_buffer buffer content 4
byte aligned, we are just moving the pointer. Since the buffer is
allocated using plain malloc(), this means our padding bytes are
effectively uninitialized data, which could be anything previously
allocated in the server process. As we'll be sharing this buffer
content with arbitrary clients, we are effectively sharing private
memory with every client, and even though a well behaving client will
discard any such memory, a malicious client may not.
Therefor, to avoid any potential missuse of the uninitialized padding
memory shared between the server and client, initialize the buffer
content to 0, making the padding bytes always 0.
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Bryce Harrington [Tue, 9 Feb 2016 21:26:21 +0000 (13:26 -0800)]
configure.ac: bump to version 1.9.93 for the RC1 release
Sergi Granell [Thu, 4 Feb 2016 20:48:21 +0000 (21:48 +0100)]
cosmetic: add an space after if
Sergi Granell [Thu, 4 Feb 2016 20:35:07 +0000 (21:35 +0100)]
cosmetic: use tabs instead of spaces
Derek Foreman [Tue, 2 Feb 2016 20:56:57 +0000 (14:56 -0600)]
scanner: Fix oddities in copyright printing
Some copyright strings could result in broken generated header files with
unmatched */
This change:
Runs the loop long enough so the copyright[i] == 0 test can actually
happen. (if there was no \n no copyright text was printed, */ still was)
Prints the opening /* even if there was whitespace at the start of
the very first line.
Only emits a */ if a /* was printed.
Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Jon A. Cruz <jonc@osg.samsung.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Bryce Harrington [Tue, 2 Feb 2016 23:30:36 +0000 (15:30 -0800)]
configure.ac: bump to version 1.9.92 for the beta release
Jonas Ådahl [Mon, 25 Jan 2016 09:28:06 +0000 (17:28 +0800)]
scanner: Print filename on DTD validation error
Don't just print prefix the errors with "protocol", but the actual file
name, if wayland-scanner was passed with the filename of the protocol
file. If wayland-scanner is reading from stdin, errors will be prefixed
with "<stdin>" instead of "protocol".
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: David Fort <contact@hardening-consulting.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Derek Foreman [Thu, 14 Jan 2016 19:33:52 +0000 (13:33 -0600)]
server: Fail to bind object when requested version is 0
0 is not a valid version number for registry bind requests, so
let's check for it in registry_bind.
Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Marek Chalupa [Wed, 27 Jan 2016 09:06:28 +0000 (10:06 +0100)]
cosmetic: return NULL instead of 0
we're returning a pointer
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Jonas Ådahl [Mon, 18 Jan 2016 10:18:16 +0000 (18:18 +0800)]
protocol: Add note about per version requirements to wl_data_device_manager
Add a note to the wl_data_device_manager global interface about the
different requirements for operating the objects created from the bound
global.
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Carlos Garnacho <carlosg@gnome.org>
Sergi Granell [Mon, 1 Feb 2016 18:35:51 +0000 (19:35 +0100)]
server: Fix possible wl_display_add_socket_fd memleak
If wl_event_loop_add_fd failed, the fail path didn't free the
newly allocated struct wl_socket.
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
Bryce Harrington [Tue, 19 Jan 2016 22:54:32 +0000 (14:54 -0800)]
configure.ac: re-bump to version 1.9.91 for the alpha release
Sung-Jin Park [Thu, 14 Jan 2016 07:03:43 +0000 (16:03 +0900)]
server: Add an API to get the file descriptor for a client
This adds an API to get the file descriptor for a client.
The client file descriptor can be used for a wayland compositor to validate
a request from a client if there are any additional information provided from
the client's file descriptor.
For instance, this will be helpful in some linux distributions, in which SELinux
or SMACK is enabled. In those environments, each file (including socket) will have
each security contexts in its inode as xattr member variable. A wayland compositor
can validate a client request by getting the file descriptor of the client and
by checking the security contexts associated with the file descriptor.
Signed-off-by: Sung-Jin Park <input.hacker@gmail.com>
Bryce Harrington [Tue, 19 Jan 2016 22:30:33 +0000 (14:30 -0800)]
configure.ac: bump to version 1.9.91 for the alpha release