<feed xmlns='http://www.w3.org/2005/Atom'>
<title>wayland/src, branch 1.0.5</title>
<subtitle>[no description]</subtitle>
<id>http://git.sudomsg.com/mirror/wayland/atom/src?h=1.0.5</id>
<link rel='self' href='http://git.sudomsg.com/mirror/wayland/atom/src?h=1.0.5'/>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/'/>
<updated>2013-02-14T19:23:58Z</updated>
<entry>
<title>connection.c: Align pointer extra storage correctly</title>
<updated>2013-02-14T19:23:58Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-02-04T12:07:17Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=a98cfc029bd4ce9ce0b60c73ee192ec75273a8d5'/>
<id>urn:sha1:a98cfc029bd4ce9ce0b60c73ee192ec75273a8d5</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>event-loop: fix returning the destroy-signal listener</title>
<updated>2013-01-25T01:22:00Z</updated>
<author>
<name>David Herrmann</name>
<email>dh.herrmann@googlemail.com</email>
</author>
<published>2013-01-23T13:11:19Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=8a17f121cde0882a1de709ef3f54202bd8de6455'/>
<id>urn:sha1:8a17f121cde0882a1de709ef3f54202bd8de6455</id>
<content type='text'>
We need to actually return the destroy-listener, otherwise the return
value is undefined.

Signed-off-by: David Herrmann &lt;dh.herrmann@googlemail.com&gt;
</content>
</entry>
<entry>
<title>Add a destroy signal to the wl_event_loop object</title>
<updated>2013-01-15T19:28:29Z</updated>
<author>
<name>Jason Ekstrand</name>
<email>jason@jlekstrand.net</email>
</author>
<published>2013-01-12T03:01:47Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=8cddb70d21a8b93b479fdbe63529e7a9837dfe73'/>
<id>urn:sha1:8cddb70d21a8b93b479fdbe63529e7a9837dfe73</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Added a destroy signal to the wl_display object.</title>
<updated>2013-01-11T20:53:12Z</updated>
<author>
<name>Jason Ekstrand</name>
<email>jason@jlekstrand.net</email>
</author>
<published>2013-01-11T20:29:32Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=30ccd3366eda63154a7b39569d85378c82dbef20'/>
<id>urn:sha1:30ccd3366eda63154a7b39569d85378c82dbef20</id>
<content type='text'>
Added a destroy signal to the wl_display object.
</content>
</entry>
<entry>
<title>client: remove two unused function pointer typedefs</title>
<updated>2012-12-12T16:09:46Z</updated>
<author>
<name>Pekka Paalanen</name>
<email>ppaalanen@gmail.com</email>
</author>
<published>2012-12-12T12:19:23Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=8148896d19d0e5bb195c76825a4b140d5b16e501'/>
<id>urn:sha1:8148896d19d0e5bb195c76825a4b140d5b16e501</id>
<content type='text'>
The need for wl_display_update_func_t was removed in

commit 53d24713a31d59d9534c1c1a84a7ad46f44ee95f
Author: Kristian Høgsberg &lt;krh@bitplanet.net&gt;
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 &lt;ppaalanen@gmail.com&gt;
</content>
</entry>
<entry>
<title>client: Update libtool version for new entry points</title>
<updated>2012-11-30T21:43:23Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-11-30T21:11:04Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=da999862716ea7824c254de68af4080d930384ea'/>
<id>urn:sha1:da999862716ea7824c254de68af4080d930384ea</id>
<content type='text'>
We've added wl_display_dispatch_queue_pending, so update the libtool
library current and age fields accordingly.
</content>
</entry>
<entry>
<title>client: Add \since tag for wl_display_dispatch_queue_pending() documentation</title>
<updated>2012-11-30T19:14:22Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-11-30T19:05:32Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=5c34b15f033eb0eb7062e99f7761d4cbd93af61e'/>
<id>urn:sha1:5c34b15f033eb0eb7062e99f7761d4cbd93af61e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>pkgconfig: Use configure provided directories</title>
<updated>2012-11-28T01:36:48Z</updated>
<author>
<name>Quentin Glidic</name>
<email>sardemff7+git@sardemff7.net</email>
</author>
<published>2012-11-27T21:35:18Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=65a0bbdbdeaa4552a1af4ad4b1f3f4960305444f'/>
<id>urn:sha1:65a0bbdbdeaa4552a1af4ad4b1f3f4960305444f</id>
<content type='text'>
https://bugs.freedesktop.org/show_bug.cgi?id=57630
</content>
</entry>
<entry>
<title>scanner: Fix wrong restriction on since field</title>
<updated>2012-11-27T16:13:36Z</updated>
<author>
<name>Ander Conselvan de Oliveira</name>
<email>ander.conselvan.de.oliveira@intel.com</email>
</author>
<published>2012-11-27T15:03:40Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=00639de12050c8755965a569de4f6df9dc36171f'/>
<id>urn:sha1:00639de12050c8755965a569de4f6df9dc36171f</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>client: Don't cancel a roundtrip when any event is received</title>
<updated>2012-11-27T16:09:45Z</updated>
<author>
<name>Jonas Ådahl</name>
<email>jadahl@gmail.com</email>
</author>
<published>2012-11-26T22:25:53Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=d7a63fdbfb8fcfcf4b2a81bc4773958ebd785d15'/>
<id>urn:sha1:d7a63fdbfb8fcfcf4b2a81bc4773958ebd785d15</id>
<content type='text'>
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 &lt;jadahl@gmail.com&gt;
</content>
</entry>
<entry>
<title>doc: Fix typos</title>
<updated>2012-11-24T03:51:51Z</updated>
<author>
<name>Tiago Vignatti</name>
<email>tiago.vignatti@intel.com</email>
</author>
<published>2012-11-22T20:09:32Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=5df752ab16f4a343416952ccbc07ab6aa0217429'/>
<id>urn:sha1:5df752ab16f4a343416952ccbc07ab6aa0217429</id>
<content type='text'>
Signed-off-by: Tiago Vignatti &lt;tiago.vignatti@intel.com&gt;
</content>
</entry>
<entry>
<title>client: Add an entry point for dispatching a queue without blocking</title>
<updated>2012-11-24T02:50:14Z</updated>
<author>
<name>Ander Conselvan de Oliveira</name>
<email>ander.conselvan.de.oliveira@intel.com</email>
</author>
<published>2012-11-22T13:34:48Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=fb205078819380538e6c0793f10ce603d7368da3'/>
<id>urn:sha1:fb205078819380538e6c0793f10ce603d7368da3</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>debug: Allow WAYLAND_DEBUG=server/client for server/client side only debug</title>
<updated>2012-11-21T22:14:55Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-11-21T22:14:55Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=0f5d41e3bbc2741c86b4c85f9f52b22cf35aa71b'/>
<id>urn:sha1:0f5d41e3bbc2741c86b4c85f9f52b22cf35aa71b</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>client: Fix source comment typos</title>
<updated>2012-11-14T18:59:03Z</updated>
<author>
<name>Martin Olsson</name>
<email>martin@minimum.se</email>
</author>
<published>2012-11-14T18:58:31Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=b46dab17f0912331b5687891d84361f67b16ec54'/>
<id>urn:sha1:b46dab17f0912331b5687891d84361f67b16ec54</id>
<content type='text'>
</content>
</entry>
<entry>
<title>client: Keep track of proxy validity and number of reference holders</title>
<updated>2012-11-05T20:44:50Z</updated>
<author>
<name>Jonas Ådahl</name>
<email>jadahl@gmail.com</email>
</author>
<published>2012-11-03T21:26:10Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=e273c7cde34c23437d34732082d46aee537f6611'/>
<id>urn:sha1:e273c7cde34c23437d34732082d46aee537f6611</id>
<content type='text'>
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 &lt;jadahl@gmail.com&gt;
</content>
</entry>
<entry>
<title>scanner: Preserve paragraph breaks in input XML</title>
<updated>2012-10-22T02:24:33Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-10-22T02:24:33Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=3b7d7b0c8014e31ec8ae1d2b31fb8c6de54cbc21'/>
<id>urn:sha1:3b7d7b0c8014e31ec8ae1d2b31fb8c6de54cbc21</id>
<content type='text'>
If we have a blank line in the incoming XML documentation, keep that in
the emitted doxygen comments.
</content>
</entry>
<entry>
<title>scanner: Fix valgrind errors</title>
<updated>2012-10-20T15:38:57Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-10-20T15:38:57Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=1bade73b6b58cf2c3187b0fca72f4aec8301c4a3'/>
<id>urn:sha1:1bade73b6b58cf2c3187b0fca72f4aec8301c4a3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Rename __wl_container_of macro to just wl_container_of</title>
<updated>2012-10-20T03:26:45Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-10-20T03:26:38Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=620d9edb2549e4cdbf07b61dae92a22d6fc7e971'/>
<id>urn:sha1:620d9edb2549e4cdbf07b61dae92a22d6fc7e971</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>Move un-namespaced container_of into private header</title>
<updated>2012-10-20T03:06:53Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-10-20T03:06:53Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=7ec35d8e13c28b39d412127ac2459854c66cdfd5'/>
<id>urn:sha1:7ec35d8e13c28b39d412127ac2459854c66cdfd5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Move ARRAY_LENGTH out of public headers</title>
<updated>2012-10-19T21:08:38Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-10-19T21:08:38Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=bdd272f024744b4ed5ba6daedef7eb023bcac7cb'/>
<id>urn:sha1:bdd272f024744b4ed5ba6daedef7eb023bcac7cb</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>doc: Clarify documentation about dispatching event queues</title>
<updated>2012-10-19T20:50:29Z</updated>
<author>
<name>Ander Conselvan de Oliveira</name>
<email>ander.conselvan.de.oliveira@intel.com</email>
</author>
<published>2012-10-19T12:30:25Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=818bb399b040f9db5d6563cfbd9ec8da9131f30d'/>
<id>urn:sha1:818bb399b040f9db5d6563cfbd9ec8da9131f30d</id>
<content type='text'>
Clarify on what cases each of the dispatching functions may block, what
is the main thread and add some real world examples.
</content>
</entry>
<entry>
<title>doc: Update wl_display_get_error() documentation</title>
<updated>2012-10-17T21:29:04Z</updated>
<author>
<name>Ander Conselvan de Oliveira</name>
<email>ander.conselvan.de.oliveira@intel.com</email>
</author>
<published>2012-10-17T18:26:09Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=a4dace7e307577e39fd4bb354defcbc171a2dc92'/>
<id>urn:sha1:a4dace7e307577e39fd4bb354defcbc171a2dc92</id>
<content type='text'>
</content>
</entry>
<entry>
<title>wayland-server: Fix up error handling with client creation.</title>
<updated>2012-10-17T20:46:15Z</updated>
<author>
<name>John Kåre Alsaker</name>
<email>john.kare.alsaker@gmail.com</email>
</author>
<published>2012-10-16T18:32:19Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=0a6fabecd7f2b15cb320414d37f29a007f6e171a'/>
<id>urn:sha1:0a6fabecd7f2b15cb320414d37f29a007f6e171a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>wayland-egl: Drop ill-defined pixmap support</title>
<updated>2012-10-16T19:30:56Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-10-16T19:30:56Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=009d452432dd3550d2db0d931dc39769939f3ddf'/>
<id>urn:sha1:009d452432dd3550d2db0d931dc39769939f3ddf</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>connection: Dereference id completely for comparasion.</title>
<updated>2012-10-16T15:24:31Z</updated>
<author>
<name>John Kåre Alsaker</name>
<email>john.kare.alsaker@gmail.com</email>
</author>
<published>2012-10-12T09:28:28Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=4b6d0e65e7768f68260b35cf109e83d829480a62'/>
<id>urn:sha1:4b6d0e65e7768f68260b35cf109e83d829480a62</id>
<content type='text'>
</content>
</entry>
<entry>
<title>connection: Removed crashing code.</title>
<updated>2012-10-16T15:15:02Z</updated>
<author>
<name>John Kåre Alsaker</name>
<email>john.kare.alsaker@gmail.com</email>
</author>
<published>2012-10-12T09:28:26Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=a6bc8b426c4ef089c33c95bec487d3101b110277'/>
<id>urn:sha1:a6bc8b426c4ef089c33c95bec487d3101b110277</id>
<content type='text'>
</content>
</entry>
<entry>
<title>scanner: Make sure arguments have names.</title>
<updated>2012-10-16T15:14:24Z</updated>
<author>
<name>John Kåre Alsaker</name>
<email>john.kare.alsaker@gmail.com</email>
</author>
<published>2012-10-12T09:28:25Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=fa5180178609053b1f36d3aa06216b22f92ec1a8'/>
<id>urn:sha1:fa5180178609053b1f36d3aa06216b22f92ec1a8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>connection: Don't call memcpy with null pointer.</title>
<updated>2012-10-16T15:12:38Z</updated>
<author>
<name>John Kåre Alsaker</name>
<email>john.kare.alsaker@gmail.com</email>
</author>
<published>2012-10-12T09:28:24Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=5cff8244f27c270cabb24f010ef76b0096a70872'/>
<id>urn:sha1:5cff8244f27c270cabb24f010ef76b0096a70872</id>
<content type='text'>
</content>
</entry>
<entry>
<title>doc: Add doxygen documentation to wl_display_get_error()</title>
<updated>2012-10-16T14:50:57Z</updated>
<author>
<name>Ander Conselvan de Oliveira</name>
<email>ander.conselvan.de.oliveira@intel.com</email>
</author>
<published>2012-10-16T14:29:09Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=de3d0ecd44f129cd5146bc08638cd6d5822c90b8'/>
<id>urn:sha1:de3d0ecd44f129cd5146bc08638cd6d5822c90b8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>doc: Document change of return value of dispatch functions</title>
<updated>2012-10-16T14:50:28Z</updated>
<author>
<name>Ander Conselvan de Oliveira</name>
<email>ander.conselvan.de.oliveira@intel.com</email>
</author>
<published>2012-10-16T14:29:08Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=244fe474dd6243e2d54229287a7f4e5aefcba47e'/>
<id>urn:sha1:244fe474dd6243e2d54229287a7f4e5aefcba47e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>doc: Document the restriction of destroying queues before the display</title>
<updated>2012-10-16T14:50:14Z</updated>
<author>
<name>Ander Conselvan de Oliveira</name>
<email>ander.conselvan.de.oliveira@intel.com</email>
</author>
<published>2012-10-16T14:29:07Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=1c10723dfe953fd893b095d62acab0dca954b923'/>
<id>urn:sha1:1c10723dfe953fd893b095d62acab0dca954b923</id>
<content type='text'>
</content>
</entry>
<entry>
<title>doc: Put wl_display_flush() documentation in the right place</title>
<updated>2012-10-16T14:50:02Z</updated>
<author>
<name>Ander Conselvan de Oliveira</name>
<email>ander.conselvan.de.oliveira@intel.com</email>
</author>
<published>2012-10-16T14:29:06Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=80e6b7d7ed0b8fdedb85f88f193bbe8da692420f'/>
<id>urn:sha1:80e6b7d7ed0b8fdedb85f88f193bbe8da692420f</id>
<content type='text'>
It seems a rebase error caused it to end up in the wrong place.
</content>
</entry>
<entry>
<title>wayland-server: Add touch grab support</title>
<updated>2012-10-15T23:44:08Z</updated>
<author>
<name>Matt Roper</name>
<email>matthew.d.roper@intel.com</email>
</author>
<published>2012-10-10T23:56:52Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=4ce294d641a7b59c5fa79b508cdd69a333902a72'/>
<id>urn:sha1:4ce294d641a7b59c5fa79b508cdd69a333902a72</id>
<content type='text'>
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 &lt;matthew.d.roper@intel.com&gt;
</content>
</entry>
<entry>
<title>wayland-client: forward fatal errors to caller</title>
<updated>2012-10-15T23:23:40Z</updated>
<author>
<name>David Herrmann</name>
<email>dh.herrmann@googlemail.com</email>
</author>
<published>2012-10-11T21:37:53Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=33b7637b4500a682018b503837b8aca9afae36f2'/>
<id>urn:sha1:33b7637b4500a682018b503837b8aca9afae36f2</id>
<content type='text'>
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 &lt;dh.herrmann@googlemail.com&gt;
</content>
</entry>
<entry>
<title>wayland: Take ownership of fd in wl_display_connect_to_fd()</title>
<updated>2012-10-15T21:50:36Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-10-15T21:50:36Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=edae4ffa3741378d0f0b0122b5a8f8743034903b'/>
<id>urn:sha1:edae4ffa3741378d0f0b0122b5a8f8743034903b</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>wayland-client: link all event-queues of each display into a list</title>
<updated>2012-10-15T21:27:59Z</updated>
<author>
<name>David Herrmann</name>
<email>dh.herrmann@googlemail.com</email>
</author>
<published>2012-10-11T21:37:51Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=780b9806709d7c7a711d609f35e7e2554745c301'/>
<id>urn:sha1:780b9806709d7c7a711d609f35e7e2554745c301</id>
<content type='text'>
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 &lt;dh.herrmann@googlemail.com&gt;
</content>
</entry>
<entry>
<title>connection: return error on buffer-overflow during read</title>
<updated>2012-10-15T21:21:06Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-10-15T21:19:38Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=04720307e91c45a772858fd3fcb0203a0b68ac17'/>
<id>urn:sha1:04720307e91c45a772858fd3fcb0203a0b68ac17</id>
<content type='text'>
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 &lt;dh.herrmann@googlemail.com&gt;
</content>
</entry>
<entry>
<title>connection: Use uin32_t for circular buffer indexes</title>
<updated>2012-10-15T21:16:30Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-10-15T21:16:30Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=ad03a59f5cab9e853dc024c801b49aa3ef6d33ff'/>
<id>urn:sha1:ad03a59f5cab9e853dc024c801b49aa3ef6d33ff</id>
<content type='text'>
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).
</content>
</entry>
<entry>
<title>connection: fix leaking FDs on buffer-overflow during read</title>
<updated>2012-10-15T20:25:19Z</updated>
<author>
<name>David Herrmann</name>
<email>dh.herrmann@googlemail.com</email>
</author>
<published>2012-10-11T21:37:49Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=a9dd3badb5ca24bed16b7ef9ae57088dbcb4a2e5'/>
<id>urn:sha1:a9dd3badb5ca24bed16b7ef9ae57088dbcb4a2e5</id>
<content type='text'>
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 &lt;dh.herrmann@googlemail.com&gt;
</content>
</entry>
<entry>
<title>connection: fix buffer-overflow in build_cmsg()</title>
<updated>2012-10-15T20:23:38Z</updated>
<author>
<name>David Herrmann</name>
<email>dh.herrmann@googlemail.com</email>
</author>
<published>2012-10-11T21:37:48Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=0b399b8d68b92627525c01e787d0b98b169b604c'/>
<id>urn:sha1:0b399b8d68b92627525c01e787d0b98b169b604c</id>
<content type='text'>
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 &lt;dh.herrmann@googlemail.com&gt;
</content>
</entry>
<entry>
<title>connection: close pending incoming FDs on shutdown</title>
<updated>2012-10-15T20:16:24Z</updated>
<author>
<name>David Herrmann</name>
<email>dh.herrmann@googlemail.com</email>
</author>
<published>2012-10-11T21:37:47Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=5bae0650baa400273720d7f5953536f99969d6ef'/>
<id>urn:sha1:5bae0650baa400273720d7f5953536f99969d6ef</id>
<content type='text'>
Same problem as with outgoing FDs. We need to close these on shutdown,
otherwise we leak open file descriptors.

Signed-off-by: David Herrmann &lt;dh.herrmann@googlemail.com&gt;
</content>
</entry>
<entry>
<title>connection: fix buffer-overflow in close_fds()</title>
<updated>2012-10-15T20:15:41Z</updated>
<author>
<name>David Herrmann</name>
<email>dh.herrmann@googlemail.com</email>
</author>
<published>2012-10-11T21:37:46Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=9bd41ed6a9f027d687e449ed020db848b28bb58a'/>
<id>urn:sha1:9bd41ed6a9f027d687e449ed020db848b28bb58a</id>
<content type='text'>
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 &lt;dh.herrmann@googlemail.com&gt;
</content>
</entry>
<entry>
<title>connection: close pending outgoing fds on shutdown</title>
<updated>2012-10-15T20:12:46Z</updated>
<author>
<name>David Herrmann</name>
<email>dh.herrmann@googlemail.com</email>
</author>
<published>2012-10-11T21:37:45Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=cda89f3a42789771907a9d6a3159f7c22c99985e'/>
<id>urn:sha1:cda89f3a42789771907a9d6a3159f7c22c99985e</id>
<content type='text'>
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 &lt;dh.herrmann@googlemail.com&gt;
</content>
</entry>
<entry>
<title>wayland-util: return 0 on OOM in wl_map_insert_new()</title>
<updated>2012-10-15T20:08:27Z</updated>
<author>
<name>David Herrmann</name>
<email>dh.herrmann@googlemail.com</email>
</author>
<published>2012-10-11T21:37:44Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=c13a65fd202d6e7d22e5ea0e334b50135a1d66a8'/>
<id>urn:sha1:c13a65fd202d6e7d22e5ea0e334b50135a1d66a8</id>
<content type='text'>
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 &lt;dh.herrmann@googlemail.com&gt;
</content>
</entry>
<entry>
<title>wayland-util: return -1 if wl_array_copy() fails</title>
<updated>2012-10-15T20:06:15Z</updated>
<author>
<name>David Herrmann</name>
<email>dh.herrmann@googlemail.com</email>
</author>
<published>2012-10-11T21:37:43Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=0d5850e6d67a09a670625dfb99ec9efefdafb75f'/>
<id>urn:sha1:0d5850e6d67a09a670625dfb99ec9efefdafb75f</id>
<content type='text'>
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 &lt;dh.herrmann@googlemail.com&gt;
</content>
</entry>
<entry>
<title>wayland-client: add wl_display_get_error()</title>
<updated>2012-10-15T20:06:00Z</updated>
<author>
<name>David Herrmann</name>
<email>dh.herrmann@googlemail.com</email>
</author>
<published>2012-10-11T21:37:42Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=66e4aa98cf5505a6f849f696afc9256714a5bee9'/>
<id>urn:sha1:66e4aa98cf5505a6f849f696afc9256714a5bee9</id>
<content type='text'>
A server may asynchronously send errors via wl_display.error() events.
Instead of aborting we now the a "last_error" flag inside of wl_display
objects. The user can retrieve these via wl_display_get_error().

Signed-off-by: David Herrmann &lt;dh.herrmann@googlemail.com&gt;
</content>
</entry>
<entry>
<title>doc: Improve libwayland-client doxygen documentation</title>
<updated>2012-10-15T17:07:42Z</updated>
<author>
<name>Ander Conselvan de Oliveira</name>
<email>ander.conselvan.de.oliveira@intel.com</email>
</author>
<published>2012-10-15T14:53:23Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=3f94d984f7aa210d2c769285ea3ecd99de7c3086'/>
<id>urn:sha1:3f94d984f7aa210d2c769285ea3ecd99de7c3086</id>
<content type='text'>
Document wl_proxy, wl_display and wl_event_queue classes and add a
description to all public entry points. Also fix some typos.
</content>
</entry>
<entry>
<title>doc: Add some doxygen documentation to wayland-client entry points</title>
<updated>2012-10-15T17:06:15Z</updated>
<author>
<name>Ander Conselvan de Oliveira</name>
<email>ander.conselvan.de.oliveira@intel.com</email>
</author>
<published>2012-10-12T14:28:57Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=2320757e8ecd02bb3a12848138dee172979be310'/>
<id>urn:sha1:2320757e8ecd02bb3a12848138dee172979be310</id>
<content type='text'>
Add some brief documentation for the public libwayland-client entry
points. This is by no means complete, some functions are still
undocumented and some might need extra information.

Signed-off-by: Ander Conselvan de Oliveira &lt;ander.conselvan.de.oliveira@intel.com&gt;
Signed-off-by: Tiago Vignatti &lt;tiago.vignatti@intel.com&gt;
</content>
</entry>
<entry>
<title>scanner: use printf format attributes for desc_dump</title>
<updated>2012-10-15T17:04:07Z</updated>
<author>
<name>Olivier Blin</name>
<email>dev@blino.org</email>
</author>
<published>2012-10-14T22:49:13Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=0d77c5302e58e6a176521a6fef10300a0ee7e98a'/>
<id>urn:sha1:0d77c5302e58e6a176521a6fef10300a0ee7e98a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>scanner: fix writing i586 descriptions</title>
<updated>2012-10-15T17:04:07Z</updated>
<author>
<name>Olivier Blin</name>
<email>dev@blino.org</email>
</author>
<published>2012-10-14T22:49:11Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=f36c61571f66e79ddd5be38f094067b1fb09f86a'/>
<id>urn:sha1:f36c61571f66e79ddd5be38f094067b1fb09f86a</id>
<content type='text'>
This moves desc as first argument of desc_dump().
Description writing was broken on i586 because desc_dump() used
va_arg() after a vsnprintf() call to find the last argument.
But after calling a function with a va_arg argument, this arguments is
undefined.
</content>
</entry>
<entry>
<title>scanner: remove useless desc_dump arguments</title>
<updated>2012-10-15T17:04:07Z</updated>
<author>
<name>Olivier Blin</name>
<email>dev@blino.org</email>
</author>
<published>2012-10-14T22:49:11Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=dc28c0bafda013af761510f23942c5f2305c5808'/>
<id>urn:sha1:dc28c0bafda013af761510f23942c5f2305c5808</id>
<content type='text'>
This are remnant from the desc_dump generalization in commit 375cb418.
</content>
</entry>
<entry>
<title>client: Return number of events dispatched from dispatch functions</title>
<updated>2012-10-15T15:38:24Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-10-15T15:38:20Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=f8d55a878c578c3fa023e0ad0706d0d831ee450a'/>
<id>urn:sha1:f8d55a878c578c3fa023e0ad0706d0d831ee450a</id>
<content type='text'>
To let clients determine whether any events were dispatched, we return
the number of dispatched events.  An event source with an event queue
(such as wl_display or an X connection) may queue up event as a result of
processing a different event source (data on a network socket, timerfd etc).

After dispatching data from fd (or just before blocking) we have to check
such event sources, which is what wl_event_source_check() is used for.
A checked event source will have its handler called with mask=0 just
before blocking.  If any work is done in any of these handlers, we have
to check all the checked sources again, since the work could have queued up
events in a different source.  This is why the event handlers must return
a positive number if events were handled.  Which in turn is why we need
the wl_display dispatch functions to return that as well.
</content>
</entry>
<entry>
<title>client: Add wl_display_dispatch_pending() for dispatching without reading</title>
<updated>2012-10-15T14:52:53Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-10-11T21:15:08Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=78cfa967681c965d23f6cbf76e080bbb0b564ff6'/>
<id>urn:sha1:78cfa967681c965d23f6cbf76e080bbb0b564ff6</id>
<content type='text'>
If the main thread ends up dispatching a non-main queue, and not in
a wl_display_dispatch() callback, we may queue up main queue events and read
all data from the socket fd.  When we get back to the main loop, the
socket fd is no longer readable and nothing will trigger dispatching of
the queued up events.

The new function wl_display_dispatch_pending() will dispatch any pending
events, but not attempt to read from the socket.  Clients that integrate
the wayland socket fd into a main loop should call
wl_display_dispatch_pending() and then wl_display_flush()
before going back to blocking in poll(2) or similar mechanism.
</content>
</entry>
<entry>
<title>client: Discard proxies with no implementation at dispatch time</title>
<updated>2012-10-11T21:12:50Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-10-11T21:12:50Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=1849534736dea14b97d9e91cd90e75a8a1e5de9f'/>
<id>urn:sha1:1849534736dea14b97d9e91cd90e75a8a1e5de9f</id>
<content type='text'>
We need to queue up events even if a proxy doesn't have an implementation
(listener).  In case of server created new objects, the client haven't
had a chance to set the listener when the first events to the new object
come in.  So now we always queue up events and discard them at
dispatch time if they don't have a listener at that point.
</content>
</entry>
<entry>
<title>client: Don't forget to init and destroy mutex</title>
<updated>2012-10-11T21:11:54Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-10-11T21:11:54Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=d4cc1cd098a4e01258aba38f94462cd44eceb1e3'/>
<id>urn:sha1:d4cc1cd098a4e01258aba38f94462cd44eceb1e3</id>
<content type='text'>
These chunks were dropped at some point, thanks to David Herrmann for
spotting the omission.
</content>
</entry>
<entry>
<title>connection: Print object id for new-id arguments in deubug output</title>
<updated>2012-10-11T21:08:29Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-10-11T21:08:29Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=9272fb8f5c4480920e0e9448cebe3de9df898dc6'/>
<id>urn:sha1:9272fb8f5c4480920e0e9448cebe3de9df898dc6</id>
<content type='text'>
We can't use the same behaviour in both the client and the server.  In the
client this is a wl_proxy pointer in the server it's a pointer to the
uint32_t object id.  This doesn't fix the problem, but it's a slightly
more useful default, since we typically use WAYLAND_DEBUG on the client.
</content>
</entry>
<entry>
<title>client: Fix double locking bug</title>
<updated>2012-10-11T13:59:40Z</updated>
<author>
<name>Ander Conselvan de Oliveira</name>
<email>ander.conselvan.de.oliveira@intel.com</email>
</author>
<published>2012-10-11T11:55:59Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=ff4afd6c0c0a1dd5a49d7078c52a6a037089341a'/>
<id>urn:sha1:ff4afd6c0c0a1dd5a49d7078c52a6a037089341a</id>
<content type='text'>
The function wl_proxy_create_for_id() would try to acquire the display
lock, but the only call path leading to it would call it with the lock
already acquired.

This patch removes the attempt to acquire the lock and makes the
function static. It was exported before because client had to create
proxy's manually when the server sent a new object id, but since commit
9de9e39f [1] this is no longer necessary.

[1] commit 9de9e39f87adfce1ea9755e394928756254c0ba2
    Author: Kristian Høgsberg &lt;krh@bitplanet.net&gt;
    Date:   Thu Jun 28 22:01:58 2012 -0400

        Allocate client proxy automatically for new objects

v2: Change the right function. Previous patch changed wl_proxy_create()
    instead of wl_proxy_create_for_id().
</content>
</entry>
<entry>
<title>data-device: Don't fake an attach event on drag icon surface</title>
<updated>2012-10-11T13:46:57Z</updated>
<author>
<name>Ander Conselvan de Oliveira</name>
<email>ander.conselvan.de.oliveira@intel.com</email>
</author>
<published>2012-10-11T11:05:37Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=0a27ce1fc2b76b5f50451d7e7c76f97a7056615d'/>
<id>urn:sha1:0a27ce1fc2b76b5f50451d7e7c76f97a7056615d</id>
<content type='text'>
Emit a new drag icon signal instead and let the compositor handle the
unmapping of the icon surface.
</content>
</entry>
<entry>
<title>Fix typecheck in case of multiple instances of type meta data</title>
<updated>2012-10-11T02:01:17Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-10-10T23:25:48Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=4f9cf6ec4465411076d4facf6ab67a272f5183d9'/>
<id>urn:sha1:4f9cf6ec4465411076d4facf6ab67a272f5183d9</id>
<content type='text'>
In most cases the pointer equality test is sufficient.  However, in
some cases, depending on how things are split across shared objects,
we can end up with multiple instances of the interface metadata
constants.  So if the pointers match, the interfaces are equal, if
they don't match we have to compare the interface names.
</content>
</entry>
<entry>
<title>connection: Move object lookup out of wl_connection_demarshal()</title>
<updated>2012-10-11T02:01:17Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-10-09T16:14:34Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=5d2b32b1fd14fddd3920205d1368cf0e499fc6ff'/>
<id>urn:sha1:5d2b32b1fd14fddd3920205d1368cf0e499fc6ff</id>
<content type='text'>
On the client side where we queue up multiple events before dispatching, we
need to look up the receiving proxy and argument proxies immediately before
calling the handler.  Between queueing up multiple events and eventually
invoking the handler, previous handlers may have destroyed some of the
proxies.
</content>
</entry>
<entry>
<title>Split the global registry into its own wl_registry object</title>
<updated>2012-10-11T00:59:00Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-10-08T17:53:47Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=9fe75537ad207c1496e6d9be41a8f5af4b876506'/>
<id>urn:sha1:9fe75537ad207c1496e6d9be41a8f5af4b876506</id>
<content type='text'>
The only way to make the global object listener interface thread safe is to
make it its own interface and make different listeners different wl_proxies.
The core of the problem is the callback we do when a global show up or
disappears, which we can't do with a lock held.  On the other hand we can't
iterate the global list or the listener list without a lock held as new
globals or listeners may come and go during the iteration.

Making a copy of the list under the lock and then iterating after dropping
the lock wont work either.  In case of the listener list, once we drop the
lock another thread may unregister a listener and destroy the callbackk
data, which means that when we eventually call that listener we'll pass it
free memory and break everything.

We did already solve the thread-safe callback problem, however.  It's what
we do for all protocol events.  So we can just make the global registry
functionality its own new interface and give each thread its own proxy.
That way, the thread will do its own callbacks (with no locks held) and
destroy the proxy when it's no longer interested in wl_registry events.
</content>
</entry>
<entry>
<title>scanner: Generate client stubs for wl_display requests</title>
<updated>2012-10-11T00:59:00Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-10-08T17:25:52Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=8872956dfd43d36e4165d15cb50d8ef4f81fbe0d'/>
<id>urn:sha1:8872956dfd43d36e4165d15cb50d8ef4f81fbe0d</id>
<content type='text'>
We used to special case this because of the untyped new-id argument in
the bind request.  Now that the scanner can handle that, we can
remove the special case.

Switching to the generated stubs does bring an API change since we now
also take the interface version that the client expects as an argument.
Previously we would take this from the interface struct, but the
application may implement a lower version than what the interface struct
provides.  To make sure we don't try to dispatch event the client
doesn't implement handlers for, we have to use a client supplied version
number.
</content>
</entry>
<entry>
<title>scanner: Send interface name and version for types new_id args</title>
<updated>2012-10-11T00:59:00Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-10-08T17:21:55Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=85a6a470873357089ffb968a176d5074fddd1756'/>
<id>urn:sha1:85a6a470873357089ffb968a176d5074fddd1756</id>
<content type='text'>
This makes the scanner generate the code and meta data to send the
interface name and version when we pass a typeless new_id.  This way, the
generic factory mechanism provided by wl_display.bind can be provided by
any interface.
</content>
</entry>
<entry>
<title>client: Add wl_event_queue for multi-thread dispatching</title>
<updated>2012-10-11T00:59:00Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-10-05T17:49:48Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=385fe30e8b144a968aa88c6546c2ef247771b3d7'/>
<id>urn:sha1:385fe30e8b144a968aa88c6546c2ef247771b3d7</id>
<content type='text'>
This introduces wl_event_queue, which is what will make multi-threaded
wayland clients possible and useful.  The driving use case is that of a
GL rendering thread that renders and calls eglSwapBuffer independently of
a "main thread" that owns the wl_display and handles input events and
everything else.  In general, the EGL and GL APIs have a threading model
that requires the wayland client library to be usable from several threads.
Finally, the current callback model gets into trouble even in a single
threaded scenario: if we have to block in eglSwapBuffers, we may end up
doing unrelated callbacks from within EGL.

The wl_event_queue mechanism lets the application (or middleware such as
EGL or toolkits) assign a proxy to an event queue.  Only events from objects
associated with the queue will be put in the queue, and conversely,
events from objects associated with the queue will not be queue up anywhere
else.  The wl_display struct has a built-in event queue, which is considered
the main and default event queue.  New proxies are associated with the
same queue as the object that created them (either the object that a
request with a new-id argument was sent to or the object that sent an
event with a new-id argument).  A proxy can be moved to a different event
queue by calling wl_proxy_set_queue().

A subsystem, such as EGL, will then create its own event queue and associate
the objects it expects to receive events from with that queue.  If EGL
needs to block and wait for a certain event, it can keep dispatching event
from its queue until that events comes in.  This wont call out to unrelated
code with an EGL lock held.  Similarly, we don't risk the main thread
handling an event from an EGL object and then calling into EGL from a
different thread without the lock held.
</content>
</entry>
<entry>
<title>client: Make wl_display thread safe</title>
<updated>2012-10-11T00:59:00Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-10-04T21:42:49Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=de961dc1f3983c8f7fa0cbf2ac14cd44253b98f9'/>
<id>urn:sha1:de961dc1f3983c8f7fa0cbf2ac14cd44253b98f9</id>
<content type='text'>
Not all entry points are thread safe: global listeners and global lookup
is still only main thread.
</content>
</entry>
<entry>
<title>client: Split event handling into demarshal and dispatch steps</title>
<updated>2012-10-11T00:59:00Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-10-04T21:34:18Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=ce1f4c29ab9d5c2a34335ef252a1d0ad977df636'/>
<id>urn:sha1:ce1f4c29ab9d5c2a34335ef252a1d0ad977df636</id>
<content type='text'>
This lets us demarshal with a mutex held and then do dispatching after
releasing the mutex.
</content>
</entry>
<entry>
<title>Change filedescriptor API to be thread safe</title>
<updated>2012-10-11T00:59:00Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-10-04T20:54:22Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=53d24713a31d59d9534c1c1a84a7ad46f44ee95f'/>
<id>urn:sha1:53d24713a31d59d9534c1c1a84a7ad46f44ee95f</id>
<content type='text'>
The update callback for the file descriptors was always a bit awkward and
un-intuitive.  The idea was that whenever the protocol code needed to
write data to the fd it would call the 'update' function.  This function
would adjust the mainloop so that it polls for POLLOUT on the fd so we
can eventually flush the data to the socket.

The problem is that in multi-threaded applications, any thread can issue
a request, which writes data to the output buffer and thus triggers the
update callback.  Thus, we'll be calling out with the display mutex
held and may call from any thread.

The solution is to eliminate the udpate callback and just require that
the application or server flushes all connection buffers before blocking.
This turns out to be a simpler API, although we now require clients to
deal with EAGAIN and non-blocking writes.  It also saves a few syscalls,
since the socket will be writable most of the time and most writes will
complete, so we avoid changing epoll to poll for POLLOUT, then write and
then change it back for each write.
</content>
</entry>
<entry>
<title>connection: Add missing free from error path</title>
<updated>2012-10-10T03:01:42Z</updated>
<author>
<name>Rob Bradford</name>
<email>rob@linux.intel.com</email>
</author>
<published>2012-10-09T17:46:22Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=6685d1930162b71d04fc3d6796b21a28dc025ab4'/>
<id>urn:sha1:6685d1930162b71d04fc3d6796b21a28dc025ab4</id>
<content type='text'>
On the error codepath that errors out on ENOMEM we should free the allocated
closure.

Signed-off-by: Rob Bradford &lt;rob@linux.intel.com&gt;
</content>
</entry>
<entry>
<title>connection: Drop unused static closures</title>
<updated>2012-10-01T17:21:29Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-10-01T17:21:29Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=5495bcd15a7ea160d3ff4568f4746e33ed042aae'/>
<id>urn:sha1:5495bcd15a7ea160d3ff4568f4746e33ed042aae</id>
<content type='text'>
</content>
</entry>
<entry>
<title>event-loop: export wl_event_loop_dispatch_idle()</title>
<updated>2012-09-12T16:28:54Z</updated>
<author>
<name>David Herrmann</name>
<email>dh.herrmann@googlemail.com</email>
</author>
<published>2012-09-11T14:09:34Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=003a946aa66333ac1cf927fc1498d85c2c9644f9'/>
<id>urn:sha1:003a946aa66333ac1cf927fc1498d85c2c9644f9</id>
<content type='text'>
When integrating the wayland event-loop into another event-loop, we
currently have no chance of checking whether there are pending idle
sources that have to be called. This patch exports the
"dispatch_idle_sources()" call so other event loops can call this before
going to sleep. This is what wl_event_loop_dispatch() currently does so we
simply allow external event-loops to do the same now.

To avoid breaking existing applications, we keep the call to
dispatch_idle_sources() in wl_event_loop_dispatch() for now. However, if
we want we can remove this later and require every application to call
this manually. This needs to be discussed, but the overhead is negligible
so we will probably leave it as it is.

This finally allows to fully integrate the wayland-server API into
existing event-loops without any nasty workarounds.

Signed-off-by: David Herrmann &lt;dh.herrmann@googlemail.com&gt;
</content>
</entry>
<entry>
<title>wayland-server: return new ID in wl_client_add_resource()</title>
<updated>2012-09-11T01:44:47Z</updated>
<author>
<name>David Herrmann</name>
<email>dh.herrmann@googlemail.com</email>
</author>
<published>2012-09-10T09:20:35Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=9fe135c46f2457d6dc694e4c02d2defeab6986b0'/>
<id>urn:sha1:9fe135c46f2457d6dc694e4c02d2defeab6986b0</id>
<content type='text'>
wl_client_add_resource() used to return no error even though the new
resource wasn't added to the client. This currently makes it very easy to
DOS weston by simply posting thousands of "create_surface" requests with
an invalid ID. Weston simply assumes the wl_client_add_resource() request
succeeds but will never destroy the surface again as the "destroy" signal
is never called (because the surface isn't linked into the wl_map).

This change makes wl_client_add_resource() return the new ID of the added
object and 0 on failure. Servers (like weston) can now correctly
immediately destroy the surface when this call fails instead of leaving
the surface around and producing memory-leaks.

Instead of returning -1 on failure and 0 on success, I made it return the
new ID as this seems more appropriate. We can directly use it when calling
it with new_id==0.

Signed-off-by: David Herrmann &lt;dh.herrmann@googlemail.com&gt;
</content>
</entry>
<entry>
<title>event-loop: remove dead code</title>
<updated>2012-09-11T01:28:34Z</updated>
<author>
<name>David Herrmann</name>
<email>dh.herrmann@googlemail.com</email>
</author>
<published>2012-09-08T15:47:15Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=397a0c6ada56e4330ebf2bc662010ca8d32a2c73'/>
<id>urn:sha1:397a0c6ada56e4330ebf2bc662010ca8d32a2c73</id>
<content type='text'>
There is really no need to increment "n" if we never read the value. The
do-while() loop overwrites the value before it is read the first time.

Signed-off-by: David Herrmann &lt;dh.herrmann@googlemail.com&gt;
</content>
</entry>
<entry>
<title>Add wl_shm_buffer_create()</title>
<updated>2012-08-16T14:49:48Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-08-16T03:03:21Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=7d3ccec18eda14a30c3edae608195898262f0d27'/>
<id>urn:sha1:7d3ccec18eda14a30c3edae608195898262f0d27</id>
<content type='text'>
</content>
</entry>
<entry>
<title>client: Add wl_display_connect_to_fd() function</title>
<updated>2012-08-16T14:49:48Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-08-14T17:16:10Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=c855d6eec4c5e63489da5bc08451a2376e6d2aea'/>
<id>urn:sha1:c855d6eec4c5e63489da5bc08451a2376e6d2aea</id>
<content type='text'>
This lets us connect a display to an already existing socket fd.
</content>
</entry>
<entry>
<title>connection: zero out string padding</title>
<updated>2012-08-04T02:39:51Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-08-04T02:39:51Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=915cdeee29291332384c4cf9ee67758e19500131'/>
<id>urn:sha1:915cdeee29291332384c4cf9ee67758e19500131</id>
<content type='text'>
We don't want to send random data to the client and this also keeps
valgrind happy.
</content>
</entry>
<entry>
<title>More consistent ID printing</title>
<updated>2012-07-24T00:17:10Z</updated>
<author>
<name>Daniel Stone</name>
<email>daniel@fooishbar.org</email>
</author>
<published>2012-07-23T18:54:42Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=3ec40512c7e43c5e5a223a9d33e4737a0782916a'/>
<id>urn:sha1:3ec40512c7e43c5e5a223a9d33e4737a0782916a</id>
<content type='text'>
Use unsigned rather than signed for IDs, so they match up with what we
see in other prints.

Signed-off-by: Daniel Stone &lt;daniel@fooishbar.org&gt;
</content>
</entry>
<entry>
<title>Make NEW_IDs nullable</title>
<updated>2012-07-24T00:16:57Z</updated>
<author>
<name>Daniel Stone</name>
<email>daniel@fooishbar.org</email>
</author>
<published>2012-07-23T18:54:41Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=db0add6d5e23deac53c834f73d5e56180600cead'/>
<id>urn:sha1:db0add6d5e23deac53c834f73d5e56180600cead</id>
<content type='text'>
The connection-handling code already allows this, so make it legal in
the protocol definition too.

Signed-off-by: Daniel Stone &lt;daniel@fooishbar.org&gt;
</content>
</entry>
<entry>
<title>Unstatic arg_count_for_signature and get_next_argument</title>
<updated>2012-07-24T00:15:28Z</updated>
<author>
<name>Daniel Stone</name>
<email>daniel@fooishbar.org</email>
</author>
<published>2012-07-23T18:54:40Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=efe23443d8bcdad0513d5dd9d027233b3d7dc968'/>
<id>urn:sha1:efe23443d8bcdad0513d5dd9d027233b3d7dc968</id>
<content type='text'>
Expose these to other files using wayland-private.h, so wayland-client.c
can walk NULLables properly.

Signed-off-by: Daniel Stone &lt;daniel@fooishbar.org&gt;
</content>
</entry>
<entry>
<title>connection: reserve id on incoming new object</title>
<updated>2012-07-22T18:09:51Z</updated>
<author>
<name>Mathias Fiedler</name>
<email>mathias.fiedler@xse.de</email>
</author>
<published>2012-07-18T13:53:23Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=0b8b397e3438f0acad78ce2646bacc4905c97f01'/>
<id>urn:sha1:0b8b397e3438f0acad78ce2646bacc4905c97f01</id>
<content type='text'>
If a new object id arrives ensure that there is an empty array entry
created, otherwise we might get out of sync for new ids if object isn't
created by interface implementation.
</content>
</entry>
<entry>
<title>wayland-util: add method for reserving new object id</title>
<updated>2012-07-22T18:09:48Z</updated>
<author>
<name>Mathias Fiedler</name>
<email>mathias.fiedler@xse.de</email>
</author>
<published>2012-07-18T13:52:51Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=bfcd6819303b0304ba38d57af4856eb6db286907'/>
<id>urn:sha1:bfcd6819303b0304ba38d57af4856eb6db286907</id>
<content type='text'>
wl_map_reserve_new() ensures that new id is valid and will point to an
empty array entry.
</content>
</entry>
<entry>
<title>wayland-server: send error on invalid new object id</title>
<updated>2012-07-22T18:06:37Z</updated>
<author>
<name>Mathias Fiedler</name>
<email>mathias.fiedler@xse.de</email>
</author>
<published>2012-07-18T13:51:45Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=900e4b63ef185767a4f1f1eea0ea1fb9899b4da5'/>
<id>urn:sha1:900e4b63ef185767a4f1f1eea0ea1fb9899b4da5</id>
<content type='text'>
Creation of new client resources was silently ignored when
wl_client_add_resource() was used on server side and new object id was out
of range.

An error is now send out to the client in such case.

Also changed error message in wl_client_add_object, since
wl_map_insert_at() returns -1 only at invalid new id.
</content>
</entry>
<entry>
<title>wayland-shm: Commit the width/height getters that actually compile</title>
<updated>2012-07-20T16:30:07Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-07-20T16:30:07Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=76bfd68f47c6cd8552151aa90efc4e5d074d14f9'/>
<id>urn:sha1:76bfd68f47c6cd8552151aa90efc4e5d074d14f9</id>
<content type='text'>
</content>
</entry>
<entry>
<title>shm: Add shm_buffer getters for width and height</title>
<updated>2012-07-20T16:04:42Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-07-20T16:04:42Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=7ba218c9f80c9ce6f1a54e4e1b2f8aa66c590ade'/>
<id>urn:sha1:7ba218c9f80c9ce6f1a54e4e1b2f8aa66c590ade</id>
<content type='text'>
</content>
</entry>
<entry>
<title>wayland-client: Add missing newline from an error message</title>
<updated>2012-07-20T16:04:05Z</updated>
<author>
<name>Robert Ancell</name>
<email>robert.ancell@canonical.com</email>
</author>
<published>2012-07-10T03:52:12Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=0a9cd16f6a6819392777e7b50601bb7e39b019da'/>
<id>urn:sha1:0a9cd16f6a6819392777e7b50601bb7e39b019da</id>
<content type='text'>
</content>
</entry>
<entry>
<title>remove listener from wl_data_source destroy_signal listener list</title>
<updated>2012-07-17T20:54:07Z</updated>
<author>
<name>Dmitry Guryanov</name>
<email>dmitry.guryanov@gmail.com</email>
</author>
<published>2012-07-17T14:56:03Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=2e79c4877fc4f402297e9d685b5eb2c41d7dd814'/>
<id>urn:sha1:2e79c4877fc4f402297e9d685b5eb2c41d7dd814</id>
<content type='text'>
I've found a bug during wayland exploration - if you make two
drag'n'drops in weston client example, dnd - weston crashes with
segfault. I've tried to investigate it and found a problem.

In function drag_grab_button we first call data_device_end_drag_grab,
which sets seat-&gt;drag_data_source to NULL. Then we remove
listener from list only if drag_data_source is not NULL.

So if client will not free wl_data_source and start another drag'n'drop,
after the first one. Then two wl_data_source structures will be
free'd on client exit (let's name them s1 and s2).

next and prev pointer of
wl_data_source.resource.destroy_signal.listener_list in both
wl_data_source structures will be seat-&gt;drag_data_source_listener,
but next and prev in seat-&gt;drag_data_source_listener.link point
to listener_list in s2.

So if you try to iterate over listener_list in s1
then you get drag_data_source_listener as first item and
(struct wl_listener *)(&amp;s2.resource.destroy_signal.listener_list)

Iteration over that list occurs in
wl_resource_destroy-&gt;destroy_resource-&gt;wl_signal_emit-&gt;wl_signal_emit
and try to call function at address of wl_resource-&gt;client, so
weston segfaults there.
</content>
</entry>
<entry>
<title>server: fix wl_seat_set_keyboard</title>
<updated>2012-07-10T18:08:01Z</updated>
<author>
<name>Pekka Paalanen</name>
<email>ppaalanen@gmail.com</email>
</author>
<published>2012-07-10T10:05:01Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=9326498d03c9c4b0120082387b623ad70b4205c7'/>
<id>urn:sha1:9326498d03c9c4b0120082387b623ad70b4205c7</id>
<content type='text'>
This makes wl_seat_set_keyboard similar to wl_seat_set_pointer in that
it's a no-op, if you try to set keyboard to NULL when it already is
NULL, instead of refusing to set it to NULL ever.

Signed-off-by: Pekka Paalanen &lt;ppaalanen@gmail.com&gt;
</content>
</entry>
<entry>
<title>server: add lose_touch_focus()</title>
<updated>2012-07-10T17:57:33Z</updated>
<author>
<name>Pekka Paalanen</name>
<email>ppaalanen@gmail.com</email>
</author>
<published>2012-07-10T10:05:00Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=23bf48063ff6d3150cee99715f0f1b48ebd4a82e'/>
<id>urn:sha1:23bf48063ff6d3150cee99715f0f1b48ebd4a82e</id>
<content type='text'>
Just like wl_keyboard and wl_pointer, add a signal handler for losing
touch focus.

Signed-off-by: Pekka Paalanen &lt;ppaalanen@gmail.com&gt;
</content>
</entry>
<entry>
<title>scanner: Include weston-client.h as the inline functions require it</title>
<updated>2012-07-10T02:01:25Z</updated>
<author>
<name>Robert Ancell</name>
<email>robert.ancell@canonical.com</email>
</author>
<published>2012-07-05T04:31:29Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=e7e1296682b550349832d8922d688014dae7f968'/>
<id>urn:sha1:e7e1296682b550349832d8922d688014dae7f968</id>
<content type='text'>
</content>
</entry>
<entry>
<title>wayland-shm: Add return before we hit the error clean-up path</title>
<updated>2012-07-10T01:50:39Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2012-07-10T01:50:39Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=b4aff6b79f80cf8110de346e527b2288903a839f'/>
<id>urn:sha1:b4aff6b79f80cf8110de346e527b2288903a839f</id>
<content type='text'>
Regression in c94c0946db694ec29b5aebb94a8be0501bacfbc7
</content>
</entry>
<entry>
<title>Fixup source comment in wayland-util.h and fix typo in TODO</title>
<updated>2012-07-09T22:11:06Z</updated>
<author>
<name>Martin Olsson</name>
<email>martin@minimum.se</email>
</author>
<published>2012-07-09T16:22:05Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=dba322c1c0a7e09b4ca616c53762865921f77526'/>
<id>urn:sha1:dba322c1c0a7e09b4ca616c53762865921f77526</id>
<content type='text'>
</content>
</entry>
<entry>
<title>shm: Plug leak in shm_create_pool()</title>
<updated>2012-07-09T21:59:45Z</updated>
<author>
<name>Martin Olsson</name>
<email>martin@minimum.se</email>
</author>
<published>2012-07-09T09:35:57Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=c94c0946db694ec29b5aebb94a8be0501bacfbc7'/>
<id>urn:sha1:c94c0946db694ec29b5aebb94a8be0501bacfbc7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>server: Don't crash for wl_seat_set_touch(seat, NULL)</title>
<updated>2012-07-09T21:59:36Z</updated>
<author>
<name>Martin Olsson</name>
<email>martin@minimum.se</email>
</author>
<published>2012-07-09T09:35:56Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=53bb40170475a9eaef23c700c5d1f6fac8b3510f'/>
<id>urn:sha1:53bb40170475a9eaef23c700c5d1f6fac8b3510f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>scanner: Plug memory leak in end_element()</title>
<updated>2012-07-09T21:59:23Z</updated>
<author>
<name>Martin Olsson</name>
<email>martin@minimum.se</email>
</author>
<published>2012-07-09T09:35:55Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=e760ec9fa97c3776d8db47d26ad93b1bfd09fc6d'/>
<id>urn:sha1:e760ec9fa97c3776d8db47d26ad93b1bfd09fc6d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>protocol: Add explicit nullable types</title>
<updated>2012-07-02T17:53:02Z</updated>
<author>
<name>Christopher James Halse Rogers</name>
<email>christopher.halse.rogers@canonical.com</email>
</author>
<published>2012-07-02T10:03:30Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=161c690b558fff9d0f407311ae4e1fbe389775f7'/>
<id>urn:sha1:161c690b558fff9d0f407311ae4e1fbe389775f7</id>
<content type='text'>
Most of the time it does not make sense to pass a NULL object, string, or array
to a protocol request. This commit adds an explicit “allow-null” attribute
to mark the request arguments where NULL makes sense.

Passing a NULL object, string, or array to a protocol request which is not
marked as allow-null is now an error. An implementation will never receive
a NULL value for these arguments from a client.

Signed-off-by: Christopher James Halse Rogers &lt;christopher.halse.rogers@canonical.com&gt;
</content>
</entry>
<entry>
<title>wayland-client: reject socket paths longer than 108 bytes</title>
<updated>2012-06-30T19:58:36Z</updated>
<author>
<name>Dylan Noblesmith</name>
<email>nobled@dreamwidth.org</email>
</author>
<published>2012-06-15T21:39:50Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=af5f8cc2004ae6a56447614ac9d61ac75115ea7d'/>
<id>urn:sha1:af5f8cc2004ae6a56447614ac9d61ac75115ea7d</id>
<content type='text'>
Attempting to write anything longer into the embedded char
array would create a non-null-terminated string, and all
later reads would run off the end into invalid memory.

This is a hard limitation of AF_LOCAL/AF_UNIX sockets.
</content>
</entry>
<entry>
<title>wayland-server: reject socket paths longer than 108 bytes</title>
<updated>2012-06-30T19:58:05Z</updated>
<author>
<name>Dylan Noblesmith</name>
<email>nobled@dreamwidth.org</email>
</author>
<published>2012-06-15T21:32:19Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=00c25a05656b0bbc3da56383ca2aa9be7f6ebdbf'/>
<id>urn:sha1:00c25a05656b0bbc3da56383ca2aa9be7f6ebdbf</id>
<content type='text'>
Attempting to write anything longer into the embedded char
array would create a non-null-terminated string, and all
later reads would run off the end into invalid memory.

This is a hard limitation of AF_LOCAL/AF_UNIX sockets.
</content>
</entry>
<entry>
<title>wayland-server: add more logging of errors</title>
<updated>2012-06-30T19:57:22Z</updated>
<author>
<name>Dylan Noblesmith</name>
<email>nobled@dreamwidth.org</email>
</author>
<published>2012-06-16T22:51:35Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=4522467268492e64b690d93cf57749c099ce101e'/>
<id>urn:sha1:4522467268492e64b690d93cf57749c099ce101e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>wayland-server: fix socket ownership race condition</title>
<updated>2012-06-30T19:50:09Z</updated>
<author>
<name>Dylan Noblesmith</name>
<email>nobled@dreamwidth.org</email>
</author>
<published>2012-06-30T19:50:09Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=30ff420ca9707fbbde7e70e789a8698058b4cb4b'/>
<id>urn:sha1:30ff420ca9707fbbde7e70e789a8698058b4cb4b</id>
<content type='text'>
Always unlink() the lock file before closing the file
descriptor for it. Otherwise, there is a race like this:

Process A closes fd, releasing the lock
Process B opens the same file, taking the lock
Process A unlinks the lock file
Process C opens the same file, which now no longer exists,
and takes the lock on the newly created lock file

Process B and C both 'own' the same display socket.

unlink()ing while holding the lock is effectively a better
way to release the lock atomically.
</content>
</entry>
<entry>
<title>wayland-server: fix fd leak on error path</title>
<updated>2012-06-30T19:37:42Z</updated>
<author>
<name>Dylan Noblesmith</name>
<email>nobled@dreamwidth.org</email>
</author>
<published>2012-06-16T22:47:42Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=94752574592a59c74340816063ad12a18433a75d'/>
<id>urn:sha1:94752574592a59c74340816063ad12a18433a75d</id>
<content type='text'>
And restructure get_socket_lock() so it's clearer that it's
allocating a new file descriptor.

Uncovered by an upcoming test.
</content>
</entry>
<entry>
<title>drop use of strerror()</title>
<updated>2012-06-30T19:37:04Z</updated>
<author>
<name>Dylan Noblesmith</name>
<email>nobled@dreamwidth.org</email>
</author>
<published>2012-06-15T22:01:06Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=cadd9992921c92c4cf4c72ee40ff5ab4d44066cd'/>
<id>urn:sha1:cadd9992921c92c4cf4c72ee40ff5ab4d44066cd</id>
<content type='text'>
It isn't thread-safe. Use the %m conversion specifier instead,
like the rest of the code already does.
</content>
</entry>
</feed>
