Bill Spitzak [Wed, 12 Nov 2014 02:42:58 +0000 (18:42 -0800)]
doc: removed some unnecessary nested listing from doxygen output
This makes the lists of parameters slightly smaller and removes some
bullets from see-also and since.
Bill Spitzak [Wed, 12 Nov 2014 02:42:57 +0000 (18:42 -0800)]
doc: Don't print dash if doxygen brief description missing
Bill Spitzak [Wed, 12 Nov 2014 02:42:56 +0000 (18:42 -0800)]
doc: preserve links produced by Doxygen
These links are pretty useful for navigation, though sometimes excessive
(you can turn them off by putting % before the word in the comment).
I had to turn off validation because it failed on missing and duplicate
target id's, which this produces.
Bill Spitzak [Wed, 12 Nov 2014 02:42:55 +0000 (18:42 -0800)]
doc: Preserve spaces
Slight variation on Pekka's patch. It seems harmless to put this anywhere.
Bill Spitzak [Wed, 12 Nov 2014 02:42:54 +0000 (18:42 -0800)]
doc: make rebuilds doxygen output on code changes
Reviewed-by: Bryce Harrington <b.harrington@samsung.com>
Imran Zaman [Mon, 24 Nov 2014 14:10:49 +0000 (16:10 +0200)]
server: increase listen queue to 128
This will allow more than 1 simultaneous client connections to the server
without the possibility of connection refused error.
Signed-off-by: Imran Zaman <imran.zaman@gmail.com>
http://utcc.utoronto.ca/~cks/space/blog/unix/ListenBacklogMeaning
http://stackoverflow.com/questions/
19221105/connect-with-unix-domain-socket-and-full-backlog
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Marek Chalupa [Mon, 27 Oct 2014 08:19:46 +0000 (09:19 +0100)]
client: read_events should return -1 after an error
When a thread is sleeping, waiting until another thread read
from the display, it always returns 0. Even when an error
occured. In documentation stands:
"return 0 on success or -1 on error. In case of error errno will
be set accordingly"
So this is a fix for this.
Along with the read_events, fix a test so that it now complies
with this behaviour (and we have this tested)
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Olivier Blin [Wed, 22 Oct 2014 16:44:59 +0000 (18:44 +0200)]
gitignore: adpat to scanner and protocol path changes
Since commit
4c163b9b001bd93aaf97d7e962873a379eb90bfd, wayland-scanner
is built in top builddir instead of src, and protocol files are
generated in protocol subdir instead of src.
Protocol files generated in the new path are already properly ignored
in the toplevel gitignore file.
Signed-off-by: Olivier Blin <olivier.blin@softathome.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Marek Chalupa [Wed, 19 Nov 2014 10:58:26 +0000 (11:58 +0100)]
tests: don't print '\0' character
print "" (which results in no output) instead of
printing '\0' (which is not visible, but is there)
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Marek Chalupa [Wed, 24 Sep 2014 12:37:08 +0000 (14:37 +0200)]
queue-test: put back timeout
In
93e654061b9 we removed call to alarm() that served as timeout in this test.
Now when we have test_set_timeout() func, return the timeout back.
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Giulio Camuffo <giuliocamuffo@gmail.com>
Marek Chalupa [Wed, 24 Sep 2014 12:37:07 +0000 (14:37 +0200)]
tests: use test_set_timeout in display-test
replace call to alarm() with test_set_timeout()
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Acked-by: Giulio Camuffo <giuliocamuffo@gmail.com>
Marek Chalupa [Wed, 12 Nov 2014 12:14:47 +0000 (13:14 +0100)]
tests: add timeout tests
sanity tests for timeouts.
v2:
use test_sleep instead of sleep
add few more test-cases
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Marek Chalupa [Wed, 12 Nov 2014 12:14:46 +0000 (13:14 +0100)]
tests: add test_usleep and test_sleep functions
The former one was already used in tests, but was private.
These functions can be shared across the tests, so make them
public.
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Marek Chalupa [Wed, 12 Nov 2014 12:16:42 +0000 (13:16 +0100)]
tests: add timeout
Add test_set_timeout() function that allows the test to
set timeout for its completition. Any other call to the function
re-sets the timeout to the new value. The timeouts can be turned off
(usefull when debugging) by setting evironment variable
WAYLAND_TESTS_NO_TIMEOUTS.
v2:
rename NO_TIMEOUTS to WAYLAND_TESTS_NO_TIMEOUTS
use unsigned int as argument of test_set_timeout()
improve printing of the message about timeout
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Ryo Munakata [Wed, 1 Oct 2014 12:17:18 +0000 (21:17 +0900)]
connection: abort if a listener function is NULL
Signed-off-by: Ryo Munakata <ryomnktml@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Carlos Olmedo Escobar [Wed, 12 Nov 2014 02:19:03 +0000 (03:19 +0100)]
Remove useless semicolon.
Signed-off-by: Carlos Olmedo Escobar <carlos.olmedo.e@gmail.com>
Reviewed-by: Marek Chalupa <mchqwerty@gmail.com>
Srivardhan Hebbar [Wed, 15 Oct 2014 09:21:27 +0000 (14:51 +0530)]
doc: Added API documentation for wl_display_destroy and wl_display_add_socket functions.
Signed-off-by: Srivardhan Hebbar <sri.hebbar@samsung.com>
[Pekka Paalanen: minor re-wording.]
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Bryce Harrington [Thu, 30 Oct 2014 07:52:39 +0000 (00:52 -0700)]
Don't document an absent parameter.
Quells a doxygen warning:
src/wayland-server.c:790: warning: argument 'None' of command @param is
not found in the argument list of wl_display::wl_display_create(void)
Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Imran Zaman [Wed, 5 Nov 2014 15:40:18 +0000 (17:40 +0200)]
scanner, client: Added more error checks when strtol function is used
Signed-off-by: Imran Zaman <imran.zaman@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Marek Chalupa [Wed, 24 Sep 2014 12:07:59 +0000 (14:07 +0200)]
tests: use our own XDG_RUNTIME_DIR for tests
Use $XDG_RUNTIME_DIR/wayland-tests for tests. This way we won't be
messing XDG_RUNTIME_DIR and it also fixes a bug, when socket-test
failed when another compositor was running.
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Giulio Camuffo <giuliocamuffo@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Philip Withnall [Sat, 1 Nov 2014 17:06:46 +0000 (17:06 +0000)]
queue-test: Add another assertion
Ensure that the round trip succeeds.
Signed-off-by: Philip Withnall <philip at tecnocode.co.uk>
Signed-off-by: Karsten Otto <ottoka at posteo.de>
Reviewed-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Philip Withnall [Sat, 1 Nov 2014 17:06:29 +0000 (17:06 +0000)]
wayland-server: Abort if a read from a client gives 0 length
This happens on EOF if using a poll function such as select() or
kqueue() which doesn’t distinguish EOF events.
Currently execution should never reach the point where recvmsg() returns
EOF (len == 0). Instead, epoll() will detect this and indicate EPOLLHUP,
which is handled a few lines above, closing the connection. However,
other event mechanisms may not be able to distinguish EOF from regular
readability (in the case of select()) or inconsistently across platforms
(in the case of POLLHUP). There is also the possibility of half-closed
connections (shutdown(), POLLRDHUP), though this may not be an issue
with Wayland.
This will not cause problems if the FD polls as readable but actually is
not — in that case, recvmsg() will return EAGAIN.
Signed-off-by: Philip Withnall <philip at tecnocode.co.uk>
Signed-off-by: Karsten Otto <ottoka at posteo.de>
Reviewed-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Philip Withnall [Sat, 1 Nov 2014 17:06:38 +0000 (17:06 +0000)]
event-loop.c: Use correct OS abstraction function for dupfd()
Signed-off-by: Philip Withnall <philip at tecnocode.co.uk>
Signed-off-by: Karsten Otto <ottoka at posteo.de>
Reviewed-by: David Fort <contact at hardening-consulting.com>
Reviewed-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Philip Withnall [Mon, 3 Nov 2014 09:49:03 +0000 (09:49 +0000)]
connection: Fix sendmsg() on FreeBSD
It expects ((msg_controllen == 0) == (msg_control == NULL)), and returns
EINVAL otherwise. It can't hurt to be tidy about things on other platforms
either though.
See: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=99356#c5
Signed-off-by: Philip Withnall <philip at tecnocode.co.uk>
Signed-off-by: Karsten Otto <ottoka at posteo.de>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
kabeer khan [Mon, 13 Oct 2014 05:04:26 +0000 (10:34 +0530)]
Protocol : Added destructor to wl_data_device interface
[Pekka Paalanen: removed trailing whitespace, adjust bz link.]
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=81745
Signed-off-by: kabeer khan <kabeer.khan@samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Derek Foreman [Fri, 3 Oct 2014 19:39:59 +0000 (14:39 -0500)]
cosmetic: convert some function returns from int to bool
[Pekka Paalanen: change is_nullable_type() return value to bool.]
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Benjamin Herr [Tue, 30 Sep 2014 12:43:03 +0000 (14:43 +0200)]
connection: Leave fd open in wl_connection_destroy
Calling close() on the same file descriptor that a previous call to
close() already closed is wrong, and racy if another thread received
that same file descriptor as a eg. new socket or actual file.
There are two situations where wl_connection_destroy() would close its
file descriptor and then another function up in the call chain would
close the same file descriptor:
* When wl_client_create() fails after calling wl_connection_create(),
it will call wl_connection_destroy() before returning. However, its
caller will always close the file descriptor if wl_client_create()
fails.
* wl_display_disconnect() unconditionally closes the display file
descriptor and also calls wl_connection_destroy().
So these two seem to expect wl_connection_destroy() to leave the file
descriptor open. The other caller of wl_connection_destroy(),
wl_client_destroy(), does however expect wl_connection_destroy() to
close its file descriptor, alas.
This patch changes wl_connection_destroy() to indulge this majority of
two callers by simply not closing the file descriptor. For the benefit
of wl_client_destroy(), wl_connection_destroy() then returns the
unclosed file descriptor so that wl_client_destroy() can close it
itself.
Since wl_connection_destroy() is a private function called from few
places, changing its semantics seemed like the more expedient way to
address the double-close() problem than shuffling around the logic in
wl_client_create() to somehow enable it to always avoid calling
wl_connection_destroy().
Signed-off-by: Benjamin Herr <ben@0x539.de>
Reviewed-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Benjamin Herr [Mon, 29 Sep 2014 15:26:13 +0000 (17:26 +0200)]
doc: Translate doxygen <sp/> tags to spaces
Doxygen represents all spacing in code blocks with <sp/> tags, so these
need to be turned back into spaces.
Signed-off-by: Benjamin Herr <ben@0x539.de>
Benjamin Herr [Mon, 29 Sep 2014 15:26:12 +0000 (17:26 +0200)]
doc: Mostly use apply-templates over value-of
xsl:value-of would strip all the nested markup of the selected doxygen
elements, so that \ref, \sa and \code formatting didn't actually work.
Signed-off-by: Benjamin Herr <ben@0x539.de>
Benjamin Herr [Mon, 29 Sep 2014 15:26:11 +0000 (17:26 +0200)]
doc: Mark up some code examples
These blocks were misformatted in normal paragraph style in the
generated docs. Also, added \comment{} for comments within one code
example.
Signed-off-by: Benjamin Herr <ben@0x539.de>
Daniel Stone [Wed, 8 Oct 2014 11:20:08 +0000 (12:20 +0100)]
README: Tiny cosmetic change
Pekka Paalanen [Wed, 1 Oct 2014 09:52:22 +0000 (12:52 +0300)]
protocol: define error codes for role reassignment
On the interfaces where it was missing:
- wl_data_device
- wl_shell
- wl_pointer
add an error code for requests that set a wl_surface role when the
wl_surface already has a different role.
This is needed for compositors to appropriately report wl_surface
role violations.
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Jasper St. Pierre <jstpierre@mecheye.net>
Acked-by: Jason Ekstrand <jason.ekstrand@intel.com>
Pekka Paalanen [Thu, 21 Aug 2014 09:50:50 +0000 (12:50 +0300)]
protocol: wl_shell.get_shell_surface gives a role
Now that we have defined "role", use the term.
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
Pekka Paalanen [Thu, 21 Aug 2014 09:42:50 +0000 (12:42 +0300)]
protocol: wl_subcompositor.get_subsurface gives a role
Reword the conditions to make use of the definition of "role".
It is still forbidden to create more than one wl_subsurface for a
wl_surface at a time.
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
Pekka Paalanen [Thu, 21 Aug 2014 09:38:18 +0000 (12:38 +0300)]
protocol: wl_data_device.start_drag may give a role
Now that we have defined "role", use the term.
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
Pekka Paalanen [Thu, 21 Aug 2014 09:32:56 +0000 (12:32 +0300)]
protocol: wl_pointer.set_cursor gives a role
Now that we have defined "role", use the term.
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
Pekka Paalanen [Mon, 18 Aug 2014 14:07:34 +0000 (17:07 +0300)]
protocol: define the concept of wl_surface role
Define what a role is, and what restrictions there are.
A change to existing behaviour is that a role cannot be changed at all
once set. However, this is unlikely to cause problems, as there is no
reason to re-use wl_surfaces in clients.
v2: give more concrete examples of roles, define losing a role, Jasper
rewrote the paragraph on how a role is set.
v3: make role permanent, there is no such thing as "losing a role".
Re-issuing the same role again must be allowed for wl_pointer.set_cursor
et al. to work.
v4: clarify the semantics of destroying a role object.
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
Jonas Ådahl [Mon, 22 Sep 2014 20:11:19 +0000 (22:11 +0200)]
scanner: Remove stray newline
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Jonas Ådahl [Mon, 22 Sep 2014 20:11:18 +0000 (22:11 +0200)]
scanner: Improve XML parse error reporting
Print the parse error and exit with a failure if expat can't parse the
XML.
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Peter Hutterer [Thu, 4 Sep 2014 07:32:10 +0000 (17:32 +1000)]
doc: replace publican with xmlto
Publican isn't packaged for some distros, xmlto is a lot more common. Most of
what publican provides for us is the stylesheet anyway, so we can just use
xmlto and the publican stylesheet to get roughly the same look.
PDF and XML generation has been dropped, this needs a bit more more effort
than a mere switchover to xmlto.
The top-level directory structure imposed by publican is kept for now
(specifically the Wayland/en-US/html tree). This makes it easier to transition over
for packagers. Note that the list of files inside has changed.
CSS files are taken from publican to keep a uniform look compared to previous
documentations. Stylesheets are licensed under CC0 1.0 Universal license, see
publican/LICENSE:
1. Files in the datadir/Common_Content directory and its subdirectories are
licensed under the CC0 1.0 Universal license.
To the extent possible under law, the developers of Publican waive all
copyright and related or neighboring rights to the files contained
in the datadir/Common_Content directory and its subdirectories.
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Pekka Paalanen [Mon, 22 Sep 2014 06:51:20 +0000 (09:51 +0300)]
configure.ac: bump version to 1.6.90
Master is open for new features again.
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Pekka Paalanen [Fri, 19 Sep 2014 09:36:04 +0000 (12:36 +0300)]
configure.ac: bump version to 1.6.0
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Pekka Paalanen [Fri, 12 Sep 2014 09:26:50 +0000 (12:26 +0300)]
configure.ac: bump version to 1.5.93 for rc2
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Derek Foreman [Wed, 10 Sep 2014 18:46:09 +0000 (13:46 -0500)]
shm: fix error in comment
Marek Chalupa [Wed, 10 Sep 2014 10:47:14 +0000 (12:47 +0200)]
client: cancel read in wl_display_read_events() when last_error is set
Calling wl_display_read_events() after an error should be equivalent
to wl_display_cancel_read(), so that display state is consistent.
Thanks to Pekka Paalanen <pekka.paalanen@collabora.co.uk>
for pointing that out.
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Marek Chalupa [Wed, 10 Sep 2014 10:47:13 +0000 (12:47 +0200)]
client: wake-up threads on all return paths from read_events
If wl_connection_read returned EAGAIN, we must wake up sleeping
threads. If we don't do this and the thread calling
wl_connection_read won't call wl_display_read_events again,
the sleeping threads will sleep indefinitely.
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Marek Chalupa [Wed, 10 Sep 2014 10:47:12 +0000 (12:47 +0200)]
display-test: test if threads are woken up on EAGAIN
When wl_connection_read() in wl_display_read_events() returns with EAGAIN,
we want the sleeping threads to be woken up. Test it!
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Marek Chalupa [Tue, 9 Sep 2014 09:11:52 +0000 (11:11 +0200)]
tests: use nanosleep instead of usleep
man usleep says that bahaviour of using usleep with SIGALRM signal
is unspecified. So create our own usleep that calls nanosleep instead.
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Pekka Paalanen [Fri, 5 Sep 2014 11:57:03 +0000 (14:57 +0300)]
configure.ac: bump version to 1.5.92 for rc1
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Bryce W. Harrington [Mon, 21 Jul 2014 19:23:49 +0000 (19:23 +0000)]
doc: Quell warnings about missing man3 directory before its been built
The shell command for dist_man3_MANS gets invoked several times during
the make process but before the man pages have been generated, which
causes the following warnings when running `make`:
find: `man/man3': No such file or directory
find: `man/man3': No such file or directory
find: `man/man3': No such file or directory
GEN xml/client/index.xml
Despite these error messages, the generated dist tarball contains the
man3 pages as intended, both before and after this patch.
$ make dist
$ tar xxf wayland-1.5.90.tar.xz
$ find wayland-1.5.90/doc/doxygen/man/man3 -name "wl_*.3" | wc -l
85
Signed-off-by: Bryce Harrington <b.harrington@samsung.com>
Acked-by: Peter Hutterer <peter.hutterer@who-t.net>
Tested-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Marek Chalupa [Fri, 29 Aug 2014 09:21:29 +0000 (11:21 +0200)]
display-test: make use of create_thread function
This function is used in one test only, but its functionality can be
used in another tests to (create thread and wait until it is sleeping).
We just need to pass the starting function for the thread as an argument.
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Marek Chalupa [Fri, 29 Aug 2014 09:21:28 +0000 (11:21 +0200)]
client: add display_wakeup_threads function
This helper function wraps the always-repeated pattern:
display->read_serial++;
pthread_cond_broadcast(&display->reader_cond);
[Pekka Paalanen: minor whitespace and comment fixes.]
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Nils Chr. Brause [Sat, 30 Aug 2014 15:12:26 +0000 (17:12 +0200)]
wayland-client: Initialize newly created wl_proxys to zero
Up until now, newly created wl_proxys (with proxy_create or
wl_proxy_create_for_id) are not initialized properly after memory
allocation. The wl_display object in contrast is. To prevent giving
uninitialized data to the user (e.g. user_data) an appropriate memset
has been added. Also, after a memset members don't have to be
explicitly initialized with zero anymore.
Signed-off-by: Nils Chr. Brause <nilschrbrause@googlemail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Peter Hutterer [Mon, 1 Sep 2014 23:50:14 +0000 (09:50 +1000)]
doc/publican: stop excessive rebuilds
Traced down to the server/client target always rebuilding, causing a rebuild
of everything else. Rework this so the target name is a file we actually
produce and can check for a timestamp.
Note: this also changes the generated file from the doxygen directory into the
en-US publican path and renames it to (server|client)API.xml.tmp to avoid
copying it into the xml output directory.
Pekka Paalanen [Fri, 22 Aug 2014 15:01:35 +0000 (18:01 +0300)]
configure.ac: Bump version to 1.5.91 for the alpha release
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Marek Chalupa [Fri, 22 Aug 2014 12:28:59 +0000 (14:28 +0200)]
client: check for error in wl_display_read_events
This prevents from blocking shown in one display test. Also, it
makes sense to not proceed further in the code of the function
when an error ocurred.
v2. set errno
put note about the errno into wl_display_prepare_read doc
check for error with mutex locked
v3.
set errno to display->last_error
check for the error only in wl_display_read_events. It's sufficient
as prevention for the hanging and programmer doesn't need to
check if wl_display_prepare_read (that was previously covered by
this patch too) returned an error or the queue just was not empty.
Without the check, it could result in indefinite looping.
Thanks to Pekka Paalanen <pekka.paalanen@collabora.co.uk> for
constant reviewing and discussing this patch.
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Marek Chalupa [Tue, 5 Aug 2014 09:42:01 +0000 (11:42 +0200)]
client: broadcast the right pthread_cond variable
In previous commit we removed unused variables. One of them was
pthread_cond_t that was formerly used when reading from display, but
later was (erroneously) made unused. This patch fixes this error
and is a fix for the failing test introduced few patches ago (tests:
test if thread can block on error)
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Olivier Blin [Thu, 21 Aug 2014 14:54:21 +0000 (16:54 +0200)]
client: drop unused event queue cond and list variables
The wl_event_queue cond variable has been replaced by the wl_display
reader_cond variable (commit
3c7e8bfbb4745315b7bcbf69fa746c3d6718c305).
This cond variable is never waited for anymore, just
signaled/broadcasted, and thus can be safely removed.
The wl_display event_queue_list and link from wl_event_queue
can be removed as well, since it was only used to iterate over
the event queue list in order to broadcast the now unused cond.
No regression on queue unit tests.
Signed-off-by: Olivier Blin <olivier.blin@softathome.com>
v2: fixed and rebased after
886b09c9a3a9d8672039f09fe7eaf3f2b2b012ca
added signed-off-by
v3: removed link from wl_event_queue
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Marek Chalupa [Tue, 5 Aug 2014 09:39:51 +0000 (11:39 +0200)]
tests: add test for reading after an error occurred
This test shows that it's possible to successfully call wl_display_prepare_read
and wl_display_read_events after an error occurred. That may lead to
deadlock.
When you call prepare read from two threads and then call read_events,
one thread gets sleeping. The call from the other thread will return -1 and invokes
display_fatal_error, but since
we have display->last_error already set, the broadcast is not called and
the sleeping thread sleeps indefinitely.
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Marek Chalupa [Tue, 5 Aug 2014 09:39:50 +0000 (11:39 +0200)]
tests: add tests for wl_display_cancel_read
Test if wl_display_cancel_read wakes up other threads.
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Marek Chalupa [Tue, 5 Aug 2014 09:39:49 +0000 (11:39 +0200)]
tests: test if thread can block on error
wl_display_read_events() can make a thread wait until some other thread
ends reading. Normally it wakes up all threads after the reading is
done. But there's a place when it does not get to waking up the threads
- when an error occurs. This test reveals bug that can block programs.
If a thread is waiting in wl_display_read_events() and another thread
calls wl_display_read_events and the reading fails,
then the sleeping thread is not woken up. This is because
display_handle_error is using old pthread_cond instead of new
display->reader_cond, that was added along with wl_display_read_events().
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Marek Chalupa [Mon, 26 May 2014 15:04:23 +0000 (17:04 +0200)]
tests: test posting errors
Test posting errors to one and more clients.
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Marek Chalupa [Thu, 21 Aug 2014 14:53:14 +0000 (16:53 +0200)]
tests: use test compositor in queue-test
Most of the code of the queue-test is covered by the test compositor,
so we can save few lines and use the test compositor instead.
I think it's also more readable.
This patch removes timeout from the test. We plan to add timeout
to all tests later, though.
v2.
rebased to master
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Marek Chalupa [Thu, 21 Aug 2014 14:52:16 +0000 (16:52 +0200)]
tests: add test-compositor
This patch introduces a set of functions that can create a display
and clients for tests.
On server side the user can use functions:
display_create()
display_destroy()
create_client()
display_run()
display_resume()
and on client side the user can use:
client_connect()
client_disconnect()
stop_display()
The stop_display() and display_resume() are functions that serve as a barrier
and also allow the display to take some action after the display_run() was called,
because after the display is stopped, it can run arbitrary code until it calls
display_resume().
client_connect() function connects to wayland display and creates a proxy to
test_compositor global object, so it can ask for stopping the display later
using stop_display().
An example:
void
client_main()
{
/* or client can use wl_display_connect(NULL)
* and do all the stuff manually */
struct client *c = client_connect();
/* do some stuff, ... */
/* stop the display so that it can
* do some other stuff */
stop_display(c, 1);
/* ... */
client_disconnect(c);
}
TEST(dummy_tst)
{
struct display *d = display_create();
/* set up the display */
wl_global_create(d->wl_display, ...);
/* ... */
create_client(d, client_main);
display_run();
/* if we are here, the display has been stopped
* and we can do some code, i. e. create another global or so */
wl_global_create(d->wl_display, ...);
/* ... */
display_resume(d); /* resume display and clients */
display_destroy(d);
}
v2:
added/changed message in few asserts that were not clear
fixed codying style issues and typo
client_create_with_name: fixed a condition in an assert
get_socket_name: use also pid
check_error: fix errno -> err
[Pekka Paalanen: added test-compositor.h to SOURCES, added
WL_HIDE_DEPRECATED to get rid of deprecated defs and lots of warnings,
fixed one unchecked return value from write().]
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Marek Chalupa [Thu, 21 Aug 2014 10:07:08 +0000 (12:07 +0200)]
client: remove unused variable
display_thread variable is unused since
3c7e8bfbb4745315b7bcbf69fa746c3d6718c305
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Marek Chalupa [Thu, 21 Aug 2014 10:07:07 +0000 (12:07 +0200)]
tests: remove unnecessary lines from queue-test
Earlier, the wl_display_dispatch_pending were setting number of thread
that can dispatch events. This behaviour was removed later,
so now these lines are redundant.
Related commits:
385fe30e8b144a968aa88c6546c2ef247771b3d7
78cfa967681c965d23f6cbf76e080bbb0b564ff6
3c7e8bfbb4745315b7bcbf69fa746c3d6718c305
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Marek Chalupa [Thu, 21 Aug 2014 10:07:06 +0000 (12:07 +0200)]
tests: remove leaks from queue-test
Destroy all objects that we have created
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Jasper St. Pierre [Thu, 7 Aug 2014 13:55:49 +0000 (09:55 -0400)]
server: Don't expose wl_display as a global
The idea here was that once upon a time, clients could rebind wl_display
to a higher version, so we offered the ability to rebind it
here. However, this is particularly broken. The existing bind
implementation actually still hardcodes version numbers, and it leaks
previous resources, overwriting the existing one.
The newly bound resource *also* won't have any listeners attached by the
client, meaning that the error and delete_id events won't get delivered
correctly. Unless the client poked into libwayland internals, it also
can't possibly set up these handlers correctly either, so the client
will sustain errors and leak all deleted globals.
Since this never worked correctly in the first place, we can feel safe
removing it.
Acked-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Giulio Camuffo [Wed, 20 Aug 2014 16:29:10 +0000 (19:29 +0300)]
tests: test the wl_display_roundtrip_queue() function
[Pekka Paalanen: moved variable declarations to before code. Added some
comments, and added the re-arm to additionally test the opposite case.]
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Giulio Camuffo [Wed, 20 Aug 2014 16:29:09 +0000 (19:29 +0300)]
client: add a public function to make a roundtrip on a custom queue
wl_display_roundtrip() works on the default queue. Add a parallel
wl_display_roundtrip_queue().
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Ryo Munakata [Wed, 20 Aug 2014 15:25:36 +0000 (00:25 +0900)]
wl_surface: clarify the base of time passed in the callback of frame
Signed-off-by: Ryo Munakata <ryomnktml@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Marek Chalupa [Tue, 19 Aug 2014 10:03:48 +0000 (12:03 +0200)]
tests: fix event_loop_timer_updates
It may happen that there's some time between the first and the other timer expire.
If epoll_wait is called after the first timer expired and
the other not, it returns only one source to dispatch and therefore
the test fails. To fix that, sleep a while before
wl_event_loop_dispatch() to make sure both timers expired.
To be 100% sure, we could use poll() before calling
wl_event_loop_dispatch(), but that would need modification in libwayland
(need to get the source's fd somehow)
https://bugs.freedesktop.org/show_bug.cgi?id=80594
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Marek Chalupa [Tue, 19 Aug 2014 08:34:52 +0000 (10:34 +0200)]
tests: event_loop_timer_updates - add asserts and fix indentation
Make sure the wl_event_source_timer_update suceeded. Also, fix weird
indentation.
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Marek Chalupa [Tue, 12 Aug 2014 09:35:07 +0000 (11:35 +0200)]
tests: add one more test for event-loop signal source
Test if when we get a signal, all signal sources for that signal
get dispatched.
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Marek Chalupa [Tue, 12 Aug 2014 09:35:06 +0000 (11:35 +0200)]
event-loop: make signalfd non-blocking
When we add more that one source to a signal, then wayland will
block in wl_event_loop_dispatch. This is due to the attampt to read
from signal's fd each time the source is dispatched.
wl_event_loop_add_signal(loop, SIGINT, ...);
wl_event_loop_add_signal(loop, SIGINT, ...);
/* raise signal .. */
/* we got two fd's ready, both for the one SIGINT */
epoll_wait(...) = 2
[ for (i == 0) ]
source1->dispatch() --> read(fd1);
[ for (i == 1) ]
source2->dispatch() --> read(fd2); /* blocking! */
Reading from fd2 will block, because we got only one signal,
and it was read from fd1.
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Marek Chalupa [Tue, 12 Aug 2014 09:35:05 +0000 (11:35 +0200)]
tests: make event-loop-test more explicit
Check value set in handler against an explicit value instead of:
assert(value);
also add one assert() for non-NULL value.
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Jasper St. Pierre [Fri, 8 Aug 2014 22:22:48 +0000 (18:22 -0400)]
scanner: Make emit_structs more explicit
"is_interface" is a really terrible name for the client or server
variants, and instead of checking whether we were passed the requests or
the events, just pass an argument through.
Reviewed-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Jasper St. Pierre [Fri, 8 Aug 2014 22:22:47 +0000 (18:22 -0400)]
scanner: Use an enum to determine the type of thing we're writing out
Reviewed-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Pekka Paalanen [Thu, 7 Aug 2014 13:46:52 +0000 (16:46 +0300)]
server: fix conditions for fds in wl_socket_destroy
0 is also a valid fd, and needs to be closed.
On error we set fd to -1. We need to also initialize fds to -1, so we do
not accidentally close stdout on error.
While fixing this, also remove one use-before-NULL-check.
Based on the patch by Marek.
Cc: Marek Chalupa <mchqwerty@gmail.com>
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Jasper St. Pierre <jstpierre@mecheye.net>
Marek Chalupa [Wed, 6 Aug 2014 09:21:59 +0000 (11:21 +0200)]
server: fix error handling when adding socket
When some function during adding socket fails, it must clean
everything it set or we can get funky errors.
This patch fixes:
http://lists.freedesktop.org/archives/wayland-devel/2014-August/016331.html
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Marek Chalupa [Wed, 6 Aug 2014 08:33:04 +0000 (10:33 +0200)]
tests: add tests for bug in adding socket
Last set of commits introduced a bug. When adding of socket with
a particular name fails, then the socket and its lockfile are deleted
regardless who created the socket.
/* OK */
wl_display_add_socket(display, "wayland-0");
/* this call fails and will delete the original socket */
wl_display_add_socket(display, "wayland-0");
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Marek Chalupa [Wed, 6 Aug 2014 09:28:34 +0000 (11:28 +0200)]
server: move memset after check
If the malloc fails, memset would touch invalid memory.
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Jasper St. Pierre [Thu, 8 May 2014 15:01:24 +0000 (11:01 -0400)]
server: Add a simple API to find a good default display
This allows compositors to easily select a good display to listen on.
Jasper St. Pierre [Thu, 8 May 2014 15:25:34 +0000 (11:25 -0400)]
server: Save the display name in the wl_socket
This allows us to return the display name to the client in a new API.
Jasper St. Pierre [Thu, 8 May 2014 14:57:16 +0000 (10:57 -0400)]
server: Make get_socket_lock operate directly on the socket's lock_fd
Jasper St. Pierre [Thu, 8 May 2014 14:25:13 +0000 (10:25 -0400)]
server: Split out code to initialize the socket address for a display name
We'll use this to autodetect a good socket to open on.
Jasper St. Pierre [Thu, 8 May 2014 14:24:06 +0000 (10:24 -0400)]
server: Create the socket FD after taking the lock
We're going to split out the lock-taking to another function so we
can repetitively try locks.
Jasper St. Pierre [Thu, 8 May 2014 14:22:25 +0000 (10:22 -0400)]
server: Clean up socket destruction
The code here is wrong, leaky, and inconsistent. We don't free,
unlink or clean up things when we should in every error path.
Centralize the data destruction so it's easier to keep track of
and easier to bug fix.
Jasper St. Pierre [Tue, 5 Aug 2014 19:21:36 +0000 (15:21 -0400)]
wayland-client: Fix indentation
Bryce W. Harrington [Mon, 21 Jul 2014 17:51:14 +0000 (17:51 +0000)]
gitignore: Add another test-suite file
Signed-off-by: Bryce Harrington <b.harrington@samsung.com>
Jonny Lamb [Tue, 22 Jul 2014 16:39:18 +0000 (17:39 +0100)]
protocol: add repeat_info event to wl_keyboard
In the process wl_keyboard's version has been incremented. Given
clients get the wl_keyboard from wl_seat without a version, wl_seat's
version has also been incremented (wl_seat version 4 implies
wl_keyboard version 4).
earlier Acked-by: Daniel Stone <daniel@fooishbar.org>
Reviewed-by: Pekka Paalanen <ppaalanen@gmail.com>
Bryce W. Harrington [Fri, 25 Jul 2014 00:35:40 +0000 (00:35 +0000)]
doc: Fix link to wl_list_remove()
Use function linking syntax instead of variable linking, to resolve two
warnings:
wayland-server.h:167: warning: explicit link request to 'wl_list_remove' could not be resolved
wayland-server.h:188: warning: explicit link request to 'wl_list_remove' could not be resolved
Signed-off-by: Bryce Harrington <b.harrington@samsung.com>
Marek Chalupa [Fri, 20 Jun 2014 07:29:52 +0000 (09:29 +0200)]
client: extend error handling
When an error occurs, wl_display_get_error() does not
provide any way of getting know if it was a local error or if it was
an error event, respectively what object caused the error and what
the error was.
This patch introduces a new function wl_display_get_protocol_error()
which will return error code, interface and id of the object that
generated the error.
wl_display_get_error() will work the same way as before.
wl_display_get_protocol_error() DOES NOT indicate that a non-protocol
error happened. It returns valid information only in that case that
(protocol) error occurred, so it should be used after calling
wl_display_get_error() with positive result.
[Pekka Paalanen] Applied another hunk of Bryce's comments to docs,
added libtool version bump.
Reviewed-by: Pekka Paalanen <ppaalanen@gmail.com>
Reviewed-by: Bryce Harrington <b.harrington@samsung.com>
Peter Hutterer [Wed, 2 Jul 2014 07:23:46 +0000 (17:23 +1000)]
configure: fix publican version detection
Publican now adds a spurious "v" to the version output.
Peter Hutterer [Wed, 2 Jul 2014 07:23:45 +0000 (17:23 +1000)]
doc: force publican to use fop
Because wkhtmltopdf requires a $DISPLAY, and a patched Qt.
https://bugzilla.redhat.com/show_bug.cgi?id=997682
Peter Hutterer [Wed, 2 Jul 2014 07:23:44 +0000 (17:23 +1000)]
doc: reduce chunk_section_depth to 0
One html page per chapter.
Boyan Ding [Wed, 4 Jun 2014 03:39:08 +0000 (11:39 +0800)]
connection: remove unreached code
Silvan Jegen [Fri, 23 May 2014 05:26:56 +0000 (07:26 +0200)]
protocol: remove redundant 'the' in description
Signed-off-by: Silvan Jegen <s.jegen@gmail.com>
Jonny Lamb [Fri, 30 May 2014 10:08:16 +0000 (12:08 +0200)]
protocol: add wl_surface errors enum for bad scale and transform values
Kristian Høgsberg [Wed, 28 May 2014 17:11:55 +0000 (10:11 -0700)]
configure.ac: Bump configure.ac version to 1.5.90 on master