Jimmy Huang [Wed, 27 Feb 2013 23:45:14 +0000 (15:45 -0800)]
Added raise to the shell surface interface in wayland client protocol
Extending the shell surface interface by defining a raise request which
clients can send to raise a shell surface to the top of the window stack,
this is added as a work-around for app-core resume app functionality to
work properly in wayland, so it behaves the same as raising a window in
X using _NET_ACTIVE_WINDOW property.
Signed-off-by: Jimmy Huang <jimmy.huang@intel.com>
Ossama Othman [Fri, 15 Feb 2013 21:44:34 +0000 (13:44 -0800)]
Updated package changelog.
Change-Id: Ibd12c64917363bbac73b04c855499195d12ca9e4
Signed-off-by: Ossama Othman <ossama.othman@intel.com>
Ossama Othman [Fri, 15 Feb 2013 18:35:25 +0000 (10:35 -0800)]
Moved wayland-scanner to devel package. It isn't required at run-time.
Change-Id: I48a664a8551fe3ba661238c06a9290eed3264344
Signed-off-by: Ossama Othman <ossama.othman@intel.com>
Ossama Othman [Fri, 15 Feb 2013 18:33:56 +0000 (10:33 -0800)]
Prefer '%{?_smp_mflag' to '%{?jobs:-j%jobs}' in spec file.
Signed-off-by: Ossama Othman <ossama.othman@intel.com>
Ossama Othman [Fri, 15 Feb 2013 18:32:17 +0000 (10:32 -0800)]
Update to 1.0.5 release.
Signed-off-by: Ossama Othman <ossama.othman@intel.com>
Rob Bradford [Thu, 6 Dec 2012 17:53:47 +0000 (17:53 +0000)]
Update to 1.0.2 release
Rob Bradford [Wed, 21 Nov 2012 14:08:12 +0000 (14:08 +0000)]
Update to 1.0.1 packaging
Rob Bradford [Fri, 9 Nov 2012 16:21:53 +0000 (16:21 +0000)]
Update packaging
Rob Bradford [Fri, 9 Nov 2012 16:16:47 +0000 (16:16 +0000)]
build: Disable documentation
Rob Bradford [Fri, 9 Nov 2012 16:15:14 +0000 (16:15 +0000)]
build: Update to 1.0 release
Rob Bradford [Thu, 13 Sep 2012 17:49:46 +0000 (18:49 +0100)]
Update snapshot
Rob Bradford [Tue, 14 Aug 2012 15:16:32 +0000 (16:16 +0100)]
Update to latest snapshot
Rob Bradford [Wed, 4 Jul 2012 13:15:16 +0000 (14:15 +0100)]
Update to latest snapshot
Rusty Lynch [Tue, 12 Jun 2012 20:11:56 +0000 (13:11 -0700)]
Adding packaging
Kristian Høgsberg [Fri, 25 Jan 2013 01:33:31 +0000 (20:33 -0500)]
configure.ac: Bump version to 1.0.5
Also update the bug URL to point to the right component and version.
Armin K [Thu, 14 Feb 2013 19:44:08 +0000 (14:44 -0500)]
Make sure that man page xml files are always disted
Siddharth Heroor [Thu, 14 Feb 2013 05:29:15 +0000 (10:59 +0530)]
README: Fix typos
Signed-off-by: Siddharth Heroor <heroor@gmail.com>
Kristian Høgsberg [Mon, 11 Feb 2013 18:58:39 +0000 (13:58 -0500)]
tests: Add a help message for the test runner
In case we forget the name of the test case or typo it, the test runner
will now list the test cases in the test binary.
Kristian Høgsberg [Fri, 8 Feb 2013 16:38:59 +0000 (11:38 -0500)]
queue-test: WEXITSTATUS() is undefined if WIFEXITED() is false
If a child process dies from a signal, WIFEXITED() returns false and
WEXITSTATUS() isn't well-defined. In this case, if the client segfaults,
the status is 134 and WEXITSTATUS(134) is EXIT_SUCCESS, so we mask the error.
Kristian Høgsberg [Mon, 4 Feb 2013 12:07:17 +0000 (07:07 -0500)]
connection.c: Align pointer extra storage correctly
Most extra data are just pointers, but in case of fds we store an int in
the extra space. That can cause un-aligned access to pointers on 64 bit
architectures. Make sure we always align pointer storage correctly.
Kristian Høgsberg [Fri, 25 Jan 2013 01:33:31 +0000 (20:33 -0500)]
configure.ac: Bump version to 1.0.4
David Herrmann [Wed, 23 Jan 2013 13:20:41 +0000 (14:20 +0100)]
gitignore: add test-suite files
The *.log and *.trs files should be ignored by git as well as the GNU
autotools ./test-driver helper script.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Wed, 23 Jan 2013 13:11:19 +0000 (14:11 +0100)]
event-loop: fix returning the destroy-signal listener
We need to actually return the destroy-listener, otherwise the return
value is undefined.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Jason Ekstrand [Sat, 12 Jan 2013 03:01:47 +0000 (21:01 -0600)]
Add a destroy signal to the wl_event_loop object
Quentin Glidic [Sun, 6 Jan 2013 14:46:00 +0000 (15:46 +0100)]
test/event-loop: Check readable state on a pipe
When redirecting stdout to a non-readable file makes the test fail as a
false negative
Jason Ekstrand [Fri, 11 Jan 2013 20:29:32 +0000 (14:29 -0600)]
Added a destroy signal to the wl_display object.
Added a destroy signal to the wl_display object.
Kristian Høgsberg [Fri, 14 Dec 2012 21:38:09 +0000 (16:38 -0500)]
configure.ac: Bump version to 1.0.3
Pekka Paalanen [Wed, 12 Dec 2012 12:19:23 +0000 (14:19 +0200)]
client: remove two unused function pointer typedefs
The need for wl_display_update_func_t was removed in
commit
53d24713a31d59d9534c1c1a84a7ad46f44ee95f
Author: Kristian Høgsberg <krh@bitplanet.net>
Date: Thu Oct 4 16:54:22 2012 -0400
Change filedescriptor API to be thread safe
and wl_callback_func_t does not seem to have ever been used in the first place.
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
Pekka Paalanen [Mon, 3 Dec 2012 14:58:25 +0000 (16:58 +0200)]
tests: rename temporary files
This is libwayland, not weston, so call the temporary files
wayland-tests-*, not weston-tests-*.
This is a candidate for the stable branch.
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
Sven Joachim [Sun, 2 Dec 2012 21:42:11 +0000 (22:42 +0100)]
tests: Don't leave temporary files behind
Signed-off-by: Sven Joachim <svenjoac@gmx.de>
Jonas Ådahl [Sat, 1 Dec 2012 16:33:23 +0000 (17:33 +0100)]
man, configure.ac: Only generate man pages if we can do it offline
Instead of relying on downloading the stylesheet from the Internet for
generating man pages, only generate them if the stylesheet is available
locally.
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Jonas Ådahl [Sat, 1 Dec 2012 16:33:22 +0000 (17:33 +0100)]
doc: Only generate Wayland documentation if xsltproc was found
Instead of failing to generate documentation because xsltproc doesn't
exist, don't try to generate at all.
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Kristian Høgsberg [Fri, 30 Nov 2012 21:00:00 +0000 (16:00 -0500)]
configure.ac: Bump version to 1.0.2
Kristian Høgsberg [Fri, 30 Nov 2012 21:11:04 +0000 (16:11 -0500)]
client: Update libtool version for new entry points
We've added wl_display_dispatch_queue_pending, so update the libtool
library current and age fields accordingly.
Kristian Høgsberg [Fri, 30 Nov 2012 19:05:32 +0000 (14:05 -0500)]
client: Add \since tag for wl_display_dispatch_queue_pending() documentation
Quentin Glidic [Tue, 27 Nov 2012 21:35:18 +0000 (22:35 +0100)]
pkgconfig: Use configure provided directories
https://bugs.freedesktop.org/show_bug.cgi?id=57630
Ander Conselvan de Oliveira [Tue, 27 Nov 2012 15:03:40 +0000 (17:03 +0200)]
scanner: Fix wrong restriction on since field
The scanner would not allow two consecutive requests on an interface to
have the same since number, so if a new version of an interface added
two new request the version number would have to be increased by two.
Jonas Ådahl [Mon, 26 Nov 2012 22:25:53 +0000 (23:25 +0100)]
client: Don't cancel a roundtrip when any event is received
Since wl_display_dispatch() returns the number of processed events or -1
on error, only cancel the roundtrip if an -1 is returned.
This also fixes a potential memory corruption bug happening when
wl_display_roundtrip() does an early return and the callback later
writes to the then out of scope stack allocated `done' parameter.
Introduced by
33b7637b4500a682018b503837b8aca9afae36f2.
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Tiago Vignatti [Thu, 22 Nov 2012 20:09:32 +0000 (18:09 -0200)]
doc: Fix typos
Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
Ander Conselvan de Oliveira [Thu, 22 Nov 2012 13:34:48 +0000 (15:34 +0200)]
client: Add an entry point for dispatching a queue without blocking
On the client side EGL, all the wl_buffer.release events need to be
processed before buffer allocation, otherwise a third buffer might
be allocated unnecessarily. However, the buffer allocation should
not block in the case no event was received. In order to do that, a
non-blocking queue dispatch function is needed.
Kristian Høgsberg [Wed, 21 Nov 2012 22:14:55 +0000 (17:14 -0500)]
debug: Allow WAYLAND_DEBUG=server/client for server/client side only debug
By default the server will dump protocol for both the server and its
clients when run with WAYLAND_DEBUG=1. That's still the case, but it now
also understands WAYLAND_DEBUG=client or WAYLAND_DEBUG=server, which
will only enable debug dumping on either client or server side.
Kristian Høgsberg [Mon, 19 Nov 2012 22:27:04 +0000 (17:27 -0500)]
configure.ac: Bump version to 1.0.1
Kristian Høgsberg [Mon, 19 Nov 2012 22:14:05 +0000 (17:14 -0500)]
doc: Fix out-of-source build so distcheck works again
The amount of generated files and hacks over hacks in the doc/ directory
is getting out of hand and we need a better solution. For now, just get
distcheck back to working.
Kristian Høgsberg [Mon, 19 Nov 2012 22:11:58 +0000 (17:11 -0500)]
Fix distcheck by adding back protocol/Makefile.am
5909dddc78573774bd3a93c280831a7d18d82994 removed protocol/Makefile.am
which meant protocol/wayland.xml no longer got included in the tarball.
Add back protocol/Makefile.am and configure.ac bits and add protocol to
subdirs in Makefile.am to fix this.
Kristian Høgsberg [Mon, 19 Nov 2012 20:44:14 +0000 (15:44 -0500)]
protocol: Fix copy and paste summary
Kristian Høgsberg [Mon, 19 Nov 2012 20:02:45 +0000 (15:02 -0500)]
protocol: Add summary description for wl_data_device_manager
Martin Olsson [Wed, 14 Nov 2012 18:58:31 +0000 (13:58 -0500)]
client: Fix source comment typos
Tiago Vignatti [Tue, 6 Nov 2012 19:17:01 +0000 (17:17 -0200)]
doc: Fix incorrectly formatted section header
https://bugs.freedesktop.org/show_bug.cgi?id=56719
Reported-by: Petr Gladkikh <PetrGlad@gmail.com>
Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
Tiago Vignatti [Fri, 9 Nov 2012 22:28:51 +0000 (20:28 -0200)]
doc: Update .gitignore
Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
Tiago Vignatti [Fri, 9 Nov 2012 22:48:22 +0000 (20:48 -0200)]
doc: Set publican to quiet mode
Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
Tiago Vignatti [Fri, 9 Nov 2012 22:33:10 +0000 (20:33 -0200)]
doc: Remove unused css and xslt for the protocol
This was added previously (commit
015c42e1) when we didn't have docbook
formatted documentation. Now it became quite useless.
Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
Tiago Vignatti [Fri, 9 Nov 2012 22:14:31 +0000 (20:14 -0200)]
doc: Auto-generate API methods and classes documentation
There's work to do still for giving a prettier style on the documentation, for
instance splitting paragraphs correctly and printing the detailed description
of the methods as well.
Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
Tiago Vignatti [Mon, 12 Nov 2012 18:07:16 +0000 (16:07 -0200)]
doc: doxygen: Interpret the first line comment as the brief
Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
Jonas Ådahl [Tue, 6 Nov 2012 07:15:04 +0000 (08:15 +0100)]
tests: Add out of order delete_id queue tests
Verify that when receiving the first of two synchronization callback
events, destroying the second one doesn't cause any errors even if the
delete_id event is handled out of order.
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Jonas Ådahl [Tue, 6 Nov 2012 07:15:03 +0000 (08:15 +0100)]
tests: Use a pipe for synchronization to avoid potential deadlock
Using signals in the previous way could potentially lead to dead locks
if the SIGCONT was signalled before a listener was registered.
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Jonas Ådahl [Sat, 3 Nov 2012 21:26:11 +0000 (22:26 +0100)]
tests: Add queue test case
Check that after a callback removes a proxy that most likely will have
several events queued up with the same target proxy, no more callbacks
are invoked.
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Jonas Ådahl [Sat, 3 Nov 2012 21:26:10 +0000 (22:26 +0100)]
client: Keep track of proxy validity and number of reference holders
When events are queued, the associated proxy objects (target proxy and
potentially closure argument proxies) are verified being valid. However,
as any event may destroy some proxy object, validity needs to be
verified again before dispatching. Before this change this was done by
again looking up the object via the display object map, but that did not
work because a delete_id event could be dispatched out-of-order if it
was queued in another queue, causing the object map to either have a new
proxy object with the same id or none at all, had it been destroyed in
an earlier event in the queue.
Instead, make wl_proxy reference counted and increase the reference
counter of every object associated with an event when it is queued. In
wl_proxy_destroy() set a flag saying the proxy has been destroyed by the
application and only free the proxy if the reference counter reaches
zero after decreasing it.
Before dispatching, verify that a proxy object still is valid by
checking that the flag set in wl_proxy_destroy() has not been set. When
dequeuing the event, all associated proxy objects are dereferenced and
free:ed if the reference counter reaches zero. As proxy reference counter
is initiated to 1, when dispatching an event it can never reach zero
without having the destroyed flag set.
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Kristian Høgsberg [Mon, 29 Oct 2012 17:12:40 +0000 (13:12 -0400)]
doc: Remove obsolete doxygen tags
https://bugs.freedesktop.org/show_bug.cgi?id=56377
Kristian Høgsberg [Mon, 22 Oct 2012 18:55:06 +0000 (14:55 -0400)]
configure.ac: Bump version to 1.0.0
Kristian Høgsberg [Mon, 22 Oct 2012 02:24:33 +0000 (22:24 -0400)]
scanner: Preserve paragraph breaks in input XML
If we have a blank line in the incoming XML documentation, keep that in
the emitted doxygen comments.
Kristian Høgsberg [Mon, 22 Oct 2012 02:10:56 +0000 (22:10 -0400)]
doc: Fix typo in generated section header
We were generating headers such as 'Events provided by wl_display events',
drop the last 'events'.
Kristian Høgsberg [Mon, 22 Oct 2012 02:08:08 +0000 (22:08 -0400)]
wayland: Add protocol documentation for various interfaces
Kristian Høgsberg [Mon, 22 Oct 2012 00:53:37 +0000 (20:53 -0400)]
Update TODO
We've knocked a few items of the list.
Kristian Høgsberg [Sun, 21 Oct 2012 14:04:17 +0000 (10:04 -0400)]
tests: Include wayland-private.h for container_of
Kristian Høgsberg [Sat, 20 Oct 2012 15:38:57 +0000 (11:38 -0400)]
scanner: Fix valgrind errors
Kristian Høgsberg [Sat, 20 Oct 2012 03:26:38 +0000 (23:26 -0400)]
Rename __wl_container_of macro to just wl_container_of
The _* namespace and identifiers with double underscore are reserved
by the C standard. That makes __wl_container_of is double plus bad,
so lets just call it wl_container_of.
Kristian Høgsberg [Sat, 20 Oct 2012 03:06:53 +0000 (23:06 -0400)]
Move un-namespaced container_of into private header
Kristian Høgsberg [Fri, 19 Oct 2012 21:08:38 +0000 (17:08 -0400)]
Move ARRAY_LENGTH out of public headers
Exporting unprefixed symbols is a pretty bad idea so don't do that.
Instea of redefining it WL_ARRAY_LENGTH, we just move the define to
our private header. The scanner generates code that uses ARRAY_LENGTH,
but we can just make it count the number elements and emit an integer
constant instead.
Tiago Vignatti [Fri, 19 Oct 2012 15:29:54 +0000 (18:29 +0300)]
configure: Depend on a more strict version of publican
Fix https://bugs.freedesktop.org/show_bug.cgi?id=56101
Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
Ander Conselvan de Oliveira [Fri, 19 Oct 2012 12:30:26 +0000 (15:30 +0300)]
doc: Update doxygen documentation when source files are changed
Ander Conselvan de Oliveira [Fri, 19 Oct 2012 12:30:25 +0000 (15:30 +0300)]
doc: Clarify documentation about dispatching event queues
Clarify on what cases each of the dispatching functions may block, what
is the main thread and add some real world examples.
Ander Conselvan de Oliveira [Wed, 17 Oct 2012 18:26:09 +0000 (21:26 +0300)]
doc: Update wl_display_get_error() documentation
John Kåre Alsaker [Tue, 16 Oct 2012 18:32:19 +0000 (20:32 +0200)]
wayland-server: Fix up error handling with client creation.
Kristian Høgsberg [Tue, 16 Oct 2012 19:30:56 +0000 (15:30 -0400)]
wayland-egl: Drop ill-defined pixmap support
We don't have a use case for this and the actual semantics and
synchronization behavior of wl_egl_pixmap were never really well-defined.
It also doesn't provide the cross-process buffer sharing that make
window systems pixmaps useful in other window systems.
John Kåre Alsaker [Fri, 12 Oct 2012 09:28:28 +0000 (11:28 +0200)]
connection: Dereference id completely for comparasion.
John Kåre Alsaker [Fri, 12 Oct 2012 09:28:26 +0000 (11:28 +0200)]
connection: Removed crashing code.
John Kåre Alsaker [Fri, 12 Oct 2012 09:28:25 +0000 (11:28 +0200)]
scanner: Make sure arguments have names.
John Kåre Alsaker [Fri, 12 Oct 2012 09:28:24 +0000 (11:28 +0200)]
connection: Don't call memcpy with null pointer.
Pekka Paalanen [Fri, 12 Oct 2012 11:29:01 +0000 (14:29 +0300)]
protocol: try to clarify wl_buffer doc
Fix few typos in wl_buffer description.
Mention backing storage in wl_buffer.destroy.
Try to clarify the wl_buffer.release semantics by not explaining what
*might* happen. It is important to not suggest, that if release does not
come before frame callback, it will not come before attaching a new
buffer to the surface. We want to allow the following scenario:
The compositor is able to texture from wl_buffers directly, but it also
keeps a copy of the surface contents. The copy is updated when the
compositor is idle, to avoid the performance hit on
wl_surface.attach/commit. When the copy completes some time later, the
server sends the release event. If the client has not yet allocated a
second buffer (e.g. it updates rarely), it can reuse the old buffer.
Reported-by: John Kåre Alsaker <john.kare.alsaker@gmail.com>
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
Pekka Paalanen [Fri, 12 Oct 2012 11:29:00 +0000 (14:29 +0300)]
protocol: say update instead of repaint
wl_surface.commit itself does not force any repainting unless there is
damage, so change the wording to not imply repainting.
Reported-by: John Kåre Alsaker <john.kare.alsaker@gmail.com>
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
Ander Conselvan de Oliveira [Tue, 16 Oct 2012 14:29:09 +0000 (17:29 +0300)]
doc: Add doxygen documentation to wl_display_get_error()
Ander Conselvan de Oliveira [Tue, 16 Oct 2012 14:29:08 +0000 (17:29 +0300)]
doc: Document change of return value of dispatch functions
Ander Conselvan de Oliveira [Tue, 16 Oct 2012 14:29:07 +0000 (17:29 +0300)]
doc: Document the restriction of destroying queues before the display
Ander Conselvan de Oliveira [Tue, 16 Oct 2012 14:29:06 +0000 (17:29 +0300)]
doc: Put wl_display_flush() documentation in the right place
It seems a rebase error caused it to end up in the wrong place.
Jonas Ådahl [Wed, 3 Oct 2012 20:50:55 +0000 (22:50 +0200)]
protocol: Clarify pointer axis event
Pointer axis events are in the same coordinate space as motion events.
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Kristian Høgsberg [Tue, 16 Oct 2012 00:49:41 +0000 (20:49 -0400)]
configure.ac: Bump version to 0.99.0
Kristian Høgsberg [Tue, 16 Oct 2012 00:48:12 +0000 (20:48 -0400)]
docs: Make distcheck happy
publican doesn't seem to be a very well-behaved tool and needs a bit
of hacking to work well for both in-tree and out-of-tree builds.
Matt Roper [Wed, 10 Oct 2012 23:56:52 +0000 (16:56 -0700)]
wayland-server: Add touch grab support
Touch grabs allow the compositor to be placed into a mode where touch events
temporarily bypass their default behavior and perform other operations.
Wayland already supports keyboard and pointer grabs, but was lacking
corresponding touch support. The default touch grab handlers here contain the
client event delivery code that was previously called directly in weston.
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
David Herrmann [Thu, 11 Oct 2012 21:37:53 +0000 (23:37 +0200)]
wayland-client: forward fatal errors to caller
If any callback or helper function fails with a fatal error, we now
set the last_error flag and prevent all further I/O on the wl_display. We
wake up all sleeping event-queues and notify the caller that they
should shutdown wl_display.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Kristian Høgsberg [Mon, 15 Oct 2012 21:50:36 +0000 (17:50 -0400)]
wayland: Take ownership of fd in wl_display_connect_to_fd()
This means we're free to close it when we want, which we'll use to wake
up the main thread if we hit an error in a different thread.
David Herrmann [Thu, 11 Oct 2012 21:37:51 +0000 (23:37 +0200)]
wayland-client: link all event-queues of each display into a list
We need access to all event-queues of a single wl_display object. For
instance during connection-errors, we need to be able to wake up all event
queues. Otherwise, they will be stuck waiting for incoming events.
The API user is responsible to keep a wl_display object around until all
event-queues that were created on it are destroyed.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Kristian Høgsberg [Mon, 15 Oct 2012 21:19:38 +0000 (17:19 -0400)]
connection: return error on buffer-overflow during read
wl_connection_read() assumes that the caller dispatched all messages
before calling it. wl_buffer_put_iov() does only provide enough room so we
fill the buffer. So the only case when the buffer overflows, is when a
previous read filled up the buffer but we couldn't parse a single message
from it. In this case, the client sent a message bigger than our buffer
and we should return an error and close the connection.
krh: Edited from Davids original patch to just check that the buffer
isn't full before we try reading into it.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Kristian Høgsberg [Mon, 15 Oct 2012 21:16:30 +0000 (17:16 -0400)]
connection: Use uin32_t for circular buffer indexes
We rely on well-defined unsigned overflow behaviour so let's make the
index fields actually unsigned. Signed ints aren't guaranteed to have the
behavior we want (could be either ones or twos complement).
David Herrmann [Thu, 11 Oct 2012 21:37:49 +0000 (23:37 +0200)]
connection: fix leaking FDs on buffer-overflow during read
If we read more FDs than we have room for, we currently leak FDs because
we overwrite previous still pending FDs. Instead, we do now close incoming
FDs if the buffer is full and return EOVERFLOW.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Thu, 11 Oct 2012 21:37:48 +0000 (23:37 +0200)]
connection: fix buffer-overflow in build_cmsg()
Same problem as we had with close_fds(). We cannot rely on the fds_out
buffer being filled with less than MAX_FDS_OUT file descriptors.
Therefore, write at most MAX_FDS_OUT file-descriptors to the outgoing
buffer.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Thu, 11 Oct 2012 21:37:47 +0000 (23:37 +0200)]
connection: close pending incoming FDs on shutdown
Same problem as with outgoing FDs. We need to close these on shutdown,
otherwise we leak open file descriptors.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Thu, 11 Oct 2012 21:37:46 +0000 (23:37 +0200)]
connection: fix buffer-overflow in close_fds()
If we push two messages via wl_connection_write() and both messages
contain more than MAX_FDS_OUT file-descriptors combined, then
wl_connection_flush() will write only MAX_FDS_OUT of them, but close all
pending ones, too.
Furthermore, close_fds() will copy more FDs out of the buffer than it can
hold and cause a buffer overflow. Therefore, we simply pass a maximum
limit to close_fds().
During shutdown, we simply close all available FDs.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Thu, 11 Oct 2012 21:37:45 +0000 (23:37 +0200)]
connection: close pending outgoing fds on shutdown
When destroying a wl_connection object, there might still be data in the
queue. We would leak open file-descriptors so we must close them.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Thu, 11 Oct 2012 21:37:44 +0000 (23:37 +0200)]
wayland-util: return 0 on OOM in wl_map_insert_new()
If we cannot increase the array for new entries, we now return 0 instead
of accessing invalid memory.
krh: Edited to return 0 on failure instead. In the initialization path,
we call wl_map_insert_new() to insert NULL at index 0, which also returns
0 but not as an error. Since we do that up front, every other case of
returning 0 is an unambiguous error.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Thu, 11 Oct 2012 21:37:43 +0000 (23:37 +0200)]
wayland-util: return -1 if wl_array_copy() fails
We might have to perform memory allocations in wl_array_copy(), so catch
out-of-memory errors in wl_array_add() and return -1 before changing any
state.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>