<feed xmlns='http://www.w3.org/2005/Atom'>
<title>wayland/src, branch 1.3.92</title>
<subtitle>[no description]</subtitle>
<id>http://git.sudomsg.com/mirror/wayland/atom/src?h=1.3.92</id>
<link rel='self' href='http://git.sudomsg.com/mirror/wayland/atom/src?h=1.3.92'/>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/'/>
<updated>2014-01-09T22:27:52Z</updated>
<entry>
<title>Fix buffer overflow when serializing a closure object</title>
<updated>2014-01-09T22:27:52Z</updated>
<author>
<name>chi ding</name>
<email>chi.ding@mobica.com</email>
</author>
<published>2013-12-05T13:28:53Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=c102c20f01c84abde71b7f208aae9b232226da1e'/>
<id>urn:sha1:c102c20f01c84abde71b7f208aae9b232226da1e</id>
<content type='text'>
Here is the JIRA page of this issue
https://bugs.tizen.org/jira/browse/TIVI-1889

Change-Id: I773a6d2d8f6fd02ff10c92450db1fa8a69544219
Signed-off-by: Chi Ding &lt;chi.ding@mobica.com&gt;
Closes: https://bugs.freedesktop.org/show_bug.cgi?id=65186
</content>
</entry>
<entry>
<title>scanner: set errno=0 before strtol</title>
<updated>2013-12-17T18:57:52Z</updated>
<author>
<name>Adrian Negreanu</name>
<email>adrian.m.negreanu@intel.com</email>
</author>
<published>2013-12-17T11:48:54Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=cd0dccd01e16fa404e03974d30ded3aebdb1c4bc'/>
<id>urn:sha1:cd0dccd01e16fa404e03974d30ded3aebdb1c4bc</id>
<content type='text'>
POSIX says to set errno=0 before calling strtol since
the return value alne cannot tell a failure.

on ubuntu armel I get:

  ../src/wayland-scanner client-header &lt; ../../protocol/wayland.xml &gt; wayland-client-protocol.h
  &lt;stdin&gt;:1188: error: invalid integer (2)

Signed-off-by: Adrian Negreanu &lt;adrian.m.negreanu@intel.com&gt;
</content>
</entry>
<entry>
<title>client: Handle EINTR in wl_display_dispatch_queue()</title>
<updated>2013-12-10T00:19:33Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-12-09T23:49:48Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=1a58c7f2115a982a9156779bb6141acd303ddef5'/>
<id>urn:sha1:1a58c7f2115a982a9156779bb6141acd303ddef5</id>
<content type='text'>
Restart the poll() if we take a signal.  This is easily triggered in
an application that ends up blocking in eglSwapBuffers(), and causes EGL
to fail to allocate a back buffer.
</content>
</entry>
<entry>
<title>doc: Fix spelling of parameters</title>
<updated>2013-12-09T23:50:01Z</updated>
<author>
<name>Jonas Ådahl</name>
<email>jadahl@gmail.com</email>
</author>
<published>2013-12-09T21:35:22Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=09877f3231623cca65ca08f3a3a694b2af495c80'/>
<id>urn:sha1:09877f3231623cca65ca08f3a3a694b2af495c80</id>
<content type='text'>
Signed-off-by: Jonas Ådahl &lt;jadahl@gmail.com&gt;
</content>
</entry>
<entry>
<title>doc: Remove incorrect docmentation</title>
<updated>2013-12-09T23:43:04Z</updated>
<author>
<name>Jonas Ådahl</name>
<email>jadahl@gmail.com</email>
</author>
<published>2013-12-09T21:35:21Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=c30208f0b7ae964ad14546936d8320b61a506653'/>
<id>urn:sha1:c30208f0b7ae964ad14546936d8320b61a506653</id>
<content type='text'>
The documentation was about wl_client_get_object(), not about
wl_resource_get_client().

Signed-off-by: Jonas Ådahl &lt;jadahl@gmail.com&gt;
</content>
</entry>
<entry>
<title>client: Make wl_proxy_set_queue() with NULL revert to default queue</title>
<updated>2013-12-05T01:01:01Z</updated>
<author>
<name>Neil Roberts</name>
<email>neil@linux.intel.com</email>
</author>
<published>2013-12-05T00:58:39Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=1521c62a31664d7372f5a987bd7f34574bd0c7d6'/>
<id>urn:sha1:1521c62a31664d7372f5a987bd7f34574bd0c7d6</id>
<content type='text'>
This will be useful in order to implement the
EGL_WL_create_wayland_buffer_from_image extension. The buffers created
within Mesa's Wayland platform are created using the the wl_drm object
as a proxy factory which means they will be set to use Mesa's internal
event queue. However, these buffers will be owned by the client
application so they ideally need to use the default event loop. This
function provides a way to set the proxy's event queue back to the
default.

krh: Edited from Neils original patch to just use wl_proxy_set_queue() with
a NULL argument instead of introducing a new function.
</content>
</entry>
<entry>
<title>Add -pthread to AM_CFLAGS to do the right thing when using threads</title>
<updated>2013-11-23T20:24:43Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-11-23T20:24:26Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=5a019e38a1316a31072a9cb6de8da4377f3cfad5'/>
<id>urn:sha1:5a019e38a1316a31072a9cb6de8da4377f3cfad5</id>
<content type='text'>
https://bugs.freedesktop.org/show_bug.cgi?id=71633
</content>
</entry>
<entry>
<title>connection: Error out if file descriptor was not received</title>
<updated>2013-11-22T06:01:48Z</updated>
<author>
<name>Lubomir Rintel</name>
<email>lkundrak@v3.sk</email>
</author>
<published>2013-11-16T13:31:03Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=360dca517a8ae58f9709420b0570b4e36a1ffa3f'/>
<id>urn:sha1:360dca517a8ae58f9709420b0570b4e36a1ffa3f</id>
<content type='text'>
Otherwise the tail of fds_in buffer would just shift beyond the beginning.
That confuses the actual request handler and results in a crash further on
due to corrupted tail.

Signed-off-by: Lubomir Rintel &lt;lkundrak@v3.sk&gt;
</content>
</entry>
<entry>
<title>wayland-server: Improve error messages for bad globals</title>
<updated>2013-11-19T21:26:32Z</updated>
<author>
<name>Jasper St. Pierre</name>
<email>jstpierre@mecheye.net</email>
</author>
<published>2013-11-13T02:44:37Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=40d057f2c90eaeffd6185078b25a0e0ff861f2a8'/>
<id>urn:sha1:40d057f2c90eaeffd6185078b25a0e0ff861f2a8</id>
<content type='text'>
A bug in Weston's toytoolkit gave me an hour of debugging headaches.
Improve the error messages that we send if a client requests an invalid
global, either by name or by version.
</content>
</entry>
<entry>
<title>client: Introduce functions to allocate and marshal proxies atomically</title>
<updated>2013-11-16T04:49:36Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-11-15T05:29:06Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=853c24e6998f747150e4233cf41bfa8268964cc2'/>
<id>urn:sha1:853c24e6998f747150e4233cf41bfa8268964cc2</id>
<content type='text'>
The server requires clients to only allocate one ID ahead of the previously
highest ID in order to keep the ID range tight.  Failure to do so will
make the server close the client connection.  However, the way we allocate
new IDs is racy.  The generated code looks like:

  new_proxy = wl_proxy_create(...);
  wl_proxy_marshal(proxy, ... new_proxy, ...);

If two threads do this at the same time, there's a chance that thread A
will allocate a proxy, then get pre-empted by thread B which then allocates
a proxy and then passes it to wl_proxy_marshal().  The ID for thread As
proxy will be one higher that the currently highest ID, but the ID for
thread Bs proxy will be two higher.  But since thread B prempted thread A
before it could send its new ID, B will send its new ID first, the server
will see the ID from thread Bs proxy first, and will reject it.

We fix this by introducing wl_proxy_marshal_constructor().  This
function is identical to wl_proxy_marshal(), except that it will
allocate a wl_proxy for NEW_ID arguments and send it, all under the
display mutex.  By introducing a new function, we maintain backwards
compatibility with older code from the generator, and make sure that
the new generated code has an explicit dependency on a new enough
libwayland-client.so.

A virtual Wayland merit badge goes to Kalle Vahlman, who tracked this
down and analyzed the issue.

Reported-by: Kalle Vahlman &lt;kalle.vahlman@movial.com&gt;
</content>
</entry>
<entry>
<title>shm: Avoid file descriptor leak upon unsuccessful mmap</title>
<updated>2013-11-16T00:21:45Z</updated>
<author>
<name>Lubomir Rintel</name>
<email>lkundrak@v3.sk</email>
</author>
<published>2013-11-15T13:17:56Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=4a196570a3f528e9092014f8320f4a2bb4aba680'/>
<id>urn:sha1:4a196570a3f528e9092014f8320f4a2bb4aba680</id>
<content type='text'>
It would be possible to make the compositor leak file descriptors by
passing descriptors of open unmmapable files to it, such as /dev/null.

Signed-off-by: Lubomir Rintel &lt;lkundrak@v3.sk&gt;
</content>
</entry>
<entry>
<title>Add documentation for wl_shm_buffer_begin/end_access</title>
<updated>2013-11-15T22:46:48Z</updated>
<author>
<name>Neil Roberts</name>
<email>neil@linux.intel.com</email>
</author>
<published>2013-11-14T12:28:51Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=c2bba88ccd68c5ea6792a875499cec276db594f8'/>
<id>urn:sha1:c2bba88ccd68c5ea6792a875499cec276db594f8</id>
<content type='text'>
It's not obvious that these functions are needed so it would be good
to have some documentation for them.
</content>
</entry>
<entry>
<title>scanner: Add location to elements so we can give better errors/warnings</title>
<updated>2013-11-15T22:44:39Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-11-15T22:37:55Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=a71cf48ce0d92d891461fd2a2da05860b418dcee'/>
<id>urn:sha1:a71cf48ce0d92d891461fd2a2da05860b418dcee</id>
<content type='text'>
</content>
</entry>
<entry>
<title>scanner: Make fail() function use va_list and elaborate a few errors</title>
<updated>2013-11-15T22:44:39Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-11-15T22:29:40Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=5a4dd7649553524b3229038b351d24f87f3e5740'/>
<id>urn:sha1:5a4dd7649553524b3229038b351d24f87f3e5740</id>
<content type='text'>
</content>
</entry>
<entry>
<title>scanner: Introduce struct location for tracking source locations</title>
<updated>2013-11-15T22:44:39Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-11-15T22:21:11Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=db8ae8903fc605b42fdacd8b70df3516afa96f3e'/>
<id>urn:sha1:db8ae8903fc605b42fdacd8b70df3516afa96f3e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>scanner: Warn about requests with more than one new-id and don't generate stubs</title>
<updated>2013-11-15T22:44:39Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-11-15T21:26:03Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=3470fa17b5fcd8c0e88ed0dabf375c4bae543ea4'/>
<id>urn:sha1:3470fa17b5fcd8c0e88ed0dabf375c4bae543ea4</id>
<content type='text'>
The generated code only support one new-id per request, since the stubs
return the new proxy.  It's still possible to send requests with multiple
new-id arguments, but it must be done with
wl_proxy_marshal_array_constructor().
</content>
</entry>
<entry>
<title>server: Start documenting the server side API</title>
<updated>2013-11-14T05:11:17Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-11-14T05:11:17Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=b583b54560391d73cd1eb3bfe2581d3695d01019'/>
<id>urn:sha1:b583b54560391d73cd1eb3bfe2581d3695d01019</id>
<content type='text'>
This is now public, stable API, so it seems prudent to actually document it.
</content>
</entry>
<entry>
<title>server: Add API to protect access to an SHM buffer</title>
<updated>2013-11-14T00:31:28Z</updated>
<author>
<name>Neil Roberts</name>
<email>neil@linux.intel.com</email>
</author>
<published>2013-11-13T15:32:05Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=cf4f5995dce400b2feaf9875d5bbc7c42a99f905'/>
<id>urn:sha1:cf4f5995dce400b2feaf9875d5bbc7c42a99f905</id>
<content type='text'>
Linux will let you mmap a region of a file that is larger than the
size of the file. If you then try to read from that region the process
will get a SIGBUS signal. Currently the clients can use this to crash
a compositor because it can create a pool and lie about the size of
the file which will cause the compositor to try and read past the end
of it. The compositor can't simply check the size of the file to
verify that it is big enough because then there is a race condition
where the client may truncate the file after the check is performed.

This patch adds the following two public functions in the server API
which can be used wrap access to an SHM buffer:

void wl_shm_buffer_begin_access(struct wl_shm_buffer *buffer);
void wl_shm_buffer_end_access(struct wl_shm_buffer *buffer);

The first time wl_shm_buffer_begin_access is called a signal handler
for SIGBUS will be installed. If the signal is caught then the buffer
for the current pool is remapped to an anonymous private buffer at the
same address which allows the compositor to continue without crashing.
The end_access function will then post an error to the buffer
resource.

The current pool is stored as part of some thread-local storage so
that multiple threads can safely independently access separate
buffers.

Eventually we may want to add some more API so that compositors can
hook into the signal handler or replace it entirely if they also want
to do some SIGBUS handling.
</content>
</entry>
<entry>
<title>wayland: Be consistent about #include-guard names</title>
<updated>2013-10-21T21:39:06Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-10-21T21:39:06Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=deddea6549af5f9c4f700b0949c2cb6393edb1bb'/>
<id>urn:sha1:deddea6549af5f9c4f700b0949c2cb6393edb1bb</id>
<content type='text'>
We had a mix of inconsistent names, some of which were non-conformant.
Standardize on all-uppercase-and-underscore naming convention.

https://bugs.freedesktop.org/show_bug.cgi?id=70679
</content>
</entry>
<entry>
<title>scanner: Handle unrecognized invocation mode</title>
<updated>2013-10-08T04:36:31Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-10-08T04:36:31Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=bb6f6faaa2acfebfe3658ae48951e1b84ed1fabf'/>
<id>urn:sha1:bb6f6faaa2acfebfe3658ae48951e1b84ed1fabf</id>
<content type='text'>
Print usage if we don't recognize the invocation mode.  Also fixes
uninitialized variable warning.
</content>
</entry>
<entry>
<title>client: Fix handling display-&gt;reader_count if poll fails</title>
<updated>2013-09-25T17:11:20Z</updated>
<author>
<name>Neil Roberts</name>
<email>neil@linux.intel.com</email>
</author>
<published>2013-09-25T09:39:12Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=799ea7206b3af987e5aae7d47f86643edbbb014d'/>
<id>urn:sha1:799ea7206b3af987e5aae7d47f86643edbbb014d</id>
<content type='text'>
In wl_display_dispatch_queue, if poll fails then it would previously
return immediately and leak a reference in display-&gt;reader_count. Then
if the application ignores the error and tries to read again it will
block forever. This can happen for example if the poll fails with
EINTR which the application might consider to be a recoverable error.
This patch makes it cancel the read so the reader_count will be
decremented when poll fails.
</content>
</entry>
<entry>
<title>Export the Wayland protocol XML file</title>
<updated>2013-09-22T04:48:56Z</updated>
<author>
<name>Jason Ekstrand</name>
<email>jason@jlekstrand.net</email>
</author>
<published>2013-09-20T13:27:06Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=ba90497b872720d42a63c090be24f339679c6706'/>
<id>urn:sha1:ba90497b872720d42a63c090be24f339679c6706</id>
<content type='text'>
Signed-off-by: Jason Ekstrand &lt;jason@jlekstrand.net&gt;
</content>
</entry>
<entry>
<title>client: fix an inconsistency in documentation</title>
<updated>2013-09-21T18:34:57Z</updated>
<author>
<name>Chang Liu</name>
<email>cl91tp@gmail.com</email>
</author>
<published>2013-09-18T10:45:06Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=5cf31443c50fd0c2b2ebe6059f725d1c554c3647'/>
<id>urn:sha1:5cf31443c50fd0c2b2ebe6059f725d1c554c3647</id>
<content type='text'>
The errno is set to EAGAIN when there are undispatched events, according
to L1066 of wayland-client.c.
</content>
</entry>
<entry>
<title>doc: Slight tweaks to wl_listener</title>
<updated>2013-09-21T18:31:50Z</updated>
<author>
<name>Aaron Faanes</name>
<email>dafrito@gmail.com</email>
</author>
<published>2013-09-17T21:44:24Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=5a925532374ebb955bf7a51357b19314a74aeae5'/>
<id>urn:sha1:5a925532374ebb955bf7a51357b19314a74aeae5</id>
<content type='text'>
Prefer \comment over // in code blocks for consistency's sake and keep
variable definitions separated by a line from the rest of the body.
</content>
</entry>
<entry>
<title>utils: Document wl_container_of</title>
<updated>2013-09-21T18:31:41Z</updated>
<author>
<name>Aaron Faanes</name>
<email>dafrito@gmail.com</email>
</author>
<published>2013-09-17T21:42:43Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=8267f283dccaf26ccb28a8161c5f4ff703c86cf0'/>
<id>urn:sha1:8267f283dccaf26ccb28a8161c5f4ff703c86cf0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>wayland-server: Improve wording for wl_signal_get's doc</title>
<updated>2013-09-17T04:59:28Z</updated>
<author>
<name>Aaron Faanes</name>
<email>dafrito@gmail.com</email>
</author>
<published>2013-09-15T18:37:08Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=5197aa30c81c076d018641fc6199d64431d518a4'/>
<id>urn:sha1:5197aa30c81c076d018641fc6199d64431d518a4</id>
<content type='text'>
The old description was a bit vague; this commit hopefully improves
describing what is returned.
</content>
</entry>
<entry>
<title>utils: Add doxygen for wayland-util.h</title>
<updated>2013-09-17T04:59:12Z</updated>
<author>
<name>Aaron Faanes</name>
<email>dafrito@gmail.com</email>
</author>
<published>2013-09-15T18:37:07Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=fffcdb25deb51bcb3698563f30c5b4882e3ff107'/>
<id>urn:sha1:fffcdb25deb51bcb3698563f30c5b4882e3ff107</id>
<content type='text'>
This is needed for doxygen to generate output for macro definitions, such
as wl_container_of, that are contained by this file. Classes like
wl_list would be documented regardless.
</content>
</entry>
<entry>
<title>utils: Reference some useful methods in wl_signal's doxygen</title>
<updated>2013-09-17T04:59:00Z</updated>
<author>
<name>Aaron Faanes</name>
<email>dafrito@gmail.com</email>
</author>
<published>2013-09-15T18:37:06Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=bc30c5eb8a88f4e99555de72d4b098d1cb1efdf1'/>
<id>urn:sha1:bc30c5eb8a88f4e99555de72d4b098d1cb1efdf1</id>
<content type='text'>
This commit adds a bit more detail on the lifecycle of a signal.
</content>
</entry>
<entry>
<title>wayland-server: Document wl_listener</title>
<updated>2013-09-17T04:47:52Z</updated>
<author>
<name>Aaron Faanes</name>
<email>dafrito@gmail.com</email>
</author>
<published>2013-09-15T18:09:18Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=f8b27300395998866903277399d130febb3da1c8'/>
<id>urn:sha1:f8b27300395998866903277399d130febb3da1c8</id>
<content type='text'>
This patch takes Kristian's comments into account, adding a demonstration and
giving a more thorough idea of how wl_listener is used.
</content>
</entry>
<entry>
<title>wayland-server: Add a wl_resource_for_each_safe macro</title>
<updated>2013-09-11T19:03:22Z</updated>
<author>
<name>Rob Bradford</name>
<email>rob@linux.intel.com</email>
</author>
<published>2013-09-06T16:56:27Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=656f3ea5b34cbaac3c00576226098279f953cee7'/>
<id>urn:sha1:656f3ea5b34cbaac3c00576226098279f953cee7</id>
<content type='text'>
A version of wl_resource_for_each that is safe for iteration when items
in the list are removed.
</content>
</entry>
<entry>
<title>utils: tweak wl_list for better doxygen output</title>
<updated>2013-09-11T17:53:39Z</updated>
<author>
<name>Aaron Faanes</name>
<email>dafrito@gmail.com</email>
</author>
<published>2013-08-28T23:02:02Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=a27b7304905bd5dc1aecd5afd8259a834e3da175'/>
<id>urn:sha1:a27b7304905bd5dc1aecd5afd8259a834e3da175</id>
<content type='text'>
</content>
</entry>
<entry>
<title>wayland-server: Document wl_signal</title>
<updated>2013-09-11T17:52:41Z</updated>
<author>
<name>Aaron Faanes</name>
<email>dafrito@gmail.com</email>
</author>
<published>2013-08-28T23:02:01Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=660f2d7accc6f546d45f6363fdbad10e9054b32a'/>
<id>urn:sha1:660f2d7accc6f546d45f6363fdbad10e9054b32a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>wayland-server: Fix a uninitialized warning from clang</title>
<updated>2013-09-11T17:42:37Z</updated>
<author>
<name>Aaron Faanes</name>
<email>dafrito@gmail.com</email>
</author>
<published>2013-08-28T22:43:34Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=cdea6698582ffb874b7ece91ad057bc1ac5aa27b'/>
<id>urn:sha1:cdea6698582ffb874b7ece91ad057bc1ac5aa27b</id>
<content type='text'>
This warning is unnecessary, since the pointer in question is only used
for pointer arithmetic, but setting it explicitly to NULL doesn't hurt.
</content>
</entry>
<entry>
<title>scanner: Emit wl_*_destroy stub even if interface has a destructor</title>
<updated>2013-08-30T22:53:55Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-08-13T19:06:30Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=b76a6968fcf3cec1d7f4c30ba67bb44b20c0ff03'/>
<id>urn:sha1:b76a6968fcf3cec1d7f4c30ba67bb44b20c0ff03</id>
<content type='text'>
If an interface has a destructor but no 'destroy' method we used to
not emit a destroy method.  Now with the fix for missing destroy
requests for wl_pointer etc we need to emit the local wl_*_destroy
always.
</content>
</entry>
<entry>
<title>Add support for client-side language bindings</title>
<updated>2013-08-19T23:23:08Z</updated>
<author>
<name>Jason Ekstrand</name>
<email>jason@jlekstrand.net</email>
</author>
<published>2013-07-18T02:58:47Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=eb947e9408c149041c4c8e1c80ef9ebea049f477'/>
<id>urn:sha1:eb947e9408c149041c4c8e1c80ef9ebea049f477</id>
<content type='text'>
This commit adds support for language bindings on the client half of the
library.  The idea is the same as for server-side dispatchers.

Signed-off-by: Jason Ekstrand &lt;jason@jlekstrand.net&gt;
</content>
</entry>
<entry>
<title>Add support for server-side language bindings</title>
<updated>2013-08-19T23:23:08Z</updated>
<author>
<name>Jason Ekstrand</name>
<email>jason@jlekstrand.net</email>
</author>
<published>2013-07-18T02:58:46Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=c44090908db1c4f1b0e87bda2e4fdaa6bc15c0d1'/>
<id>urn:sha1:c44090908db1c4f1b0e87bda2e4fdaa6bc15c0d1</id>
<content type='text'>
This commit adds support for server-side languages bindings.  This is done
in two ways:

1. Adding a wl_resource_set_dispatcher function that corresponds to
wl_resource_set_interface.  The only difference between the two functions
is that the new version takes a dispatcher along with the implementation,
data, and destructor.  This allows for runtime calling of native language
functions for callbacks instead of having to generate function pointers.

2. Adding versions of wl_resource_post_event and wl_resource_queue_event
that take an array of wl_argument instead of a variable argument list.
This allows for easier run-time argument conversion and removes the need
for libffi-based calling of variadic functions.

Signed-off-by: Jason Ekstrand &lt;jason@jlekstrand.net&gt;
</content>
</entry>
<entry>
<title>wayland-client: Add wl_proxy_get_listener</title>
<updated>2013-08-12T23:26:36Z</updated>
<author>
<name>Rob Bradford</name>
<email>rob@linux.intel.com</email>
</author>
<published>2013-07-22T16:30:52Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=4ad58fbb4a8eaa1852326df6cf71ad6e60dd891f'/>
<id>urn:sha1:4ad58fbb4a8eaa1852326df6cf71ad6e60dd891f</id>
<content type='text'>
This is the mirror function to wl_proxy_add_listener and is useful
inside client libraries to differentiate events on listeners for which
multiple proxies have been created.
</content>
</entry>
<entry>
<title>wayland-server: Add a wl_resource_for_each macro</title>
<updated>2013-08-12T23:26:36Z</updated>
<author>
<name>Rob Bradford</name>
<email>rob@linux.intel.com</email>
</author>
<published>2013-07-22T16:30:51Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=748c20c46f6c85203dc5582c9e7fce9fee7a1331'/>
<id>urn:sha1:748c20c46f6c85203dc5582c9e7fce9fee7a1331</id>
<content type='text'>
This macro allows you to correctly iterate through a list of resources
handling the opaque nature of this type.
</content>
</entry>
<entry>
<title>client: Improve spelling and grammar in comments</title>
<updated>2013-08-09T04:41:33Z</updated>
<author>
<name>Bryce W. Harrington</name>
<email>b.harrington@samsung.com</email>
</author>
<published>2013-08-09T01:47:06Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=65efa2ed3a3da215764857fee69eeed52faf6989'/>
<id>urn:sha1:65efa2ed3a3da215764857fee69eeed52faf6989</id>
<content type='text'>
Signed-off-by: Bryce Harrington &lt;b.harrington@samsung.com&gt;
</content>
</entry>
<entry>
<title>server: Release additional_shm_formats array at display destruction</title>
<updated>2013-08-08T20:51:13Z</updated>
<author>
<name>Tomeu Vizoso</name>
<email>tomeu@tomeuvizoso.net</email>
</author>
<published>2013-08-08T08:31:56Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=f26a322327309c9493ec932642131162d103ca66'/>
<id>urn:sha1:f26a322327309c9493ec932642131162d103ca66</id>
<content type='text'>
</content>
</entry>
<entry>
<title>scanner: expand help string</title>
<updated>2013-08-07T23:24:55Z</updated>
<author>
<name>Peter Hutterer</name>
<email>peter.hutterer@who-t.net</email>
</author>
<published>2013-08-07T01:05:58Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=2b26edb877d21a26721b0d1b0c676cf67be80ada'/>
<id>urn:sha1:2b26edb877d21a26721b0d1b0c676cf67be80ada</id>
<content type='text'>
Signed-off-by: Peter Hutterer &lt;peter.hutterer@who-t.net&gt;
</content>
</entry>
<entry>
<title>scanner: support help and --help</title>
<updated>2013-08-07T23:24:44Z</updated>
<author>
<name>Peter Hutterer</name>
<email>peter.hutterer@who-t.net</email>
</author>
<published>2013-08-07T01:05:57Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=2d1ed470d946ca8f8b988e3d11f642e85fa0a290'/>
<id>urn:sha1:2d1ed470d946ca8f8b988e3d11f642e85fa0a290</id>
<content type='text'>
wayland-scanner without arguments prints out usage. With help or --help it
waits for stdin to supply something which isn't quite as informative as
printing out the help.

This patch also moves the strcmp for args up to have all of them in one
location.
</content>
</entry>
<entry>
<title>Don't include wayland-server.h in wayland-private.h</title>
<updated>2013-08-07T16:17:24Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-08-07T16:17:02Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=81555350affea0a7fba5894116b1ec178ac53827'/>
<id>urn:sha1:81555350affea0a7fba5894116b1ec178ac53827</id>
<content type='text'>
We just declare struct wl_display manually instead.
</content>
</entry>
<entry>
<title>shm: Add API for renderers to register additional pixel formats</title>
<updated>2013-08-06T23:48:02Z</updated>
<author>
<name>Tomeu Vizoso</name>
<email>tomeu@tomeuvizoso.net</email>
</author>
<published>2013-08-06T18:05:53Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=d9883a6be1688a716a235466a59f5c5432e87e65'/>
<id>urn:sha1:d9883a6be1688a716a235466a59f5c5432e87e65</id>
<content type='text'>
</content>
</entry>
<entry>
<title>server: Set client-&gt;error when we fail to send a closure</title>
<updated>2013-08-06T17:16:46Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-08-06T17:15:35Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=dbeb5134fa8e612826d7c7d5b9146e89822c59fb'/>
<id>urn:sha1:dbeb5134fa8e612826d7c7d5b9146e89822c59fb</id>
<content type='text'>
We we're using wl_event_loop_add_idle() here, but if we're failing
because of OOM, that will typically also fail.  Instead, use the
existing client-&gt;error flag, which will break out of the event
handling loop and shut down the client.
</content>
</entry>
<entry>
<title>server: Handle OOM properly when we fail to allocate a send closure</title>
<updated>2013-08-06T16:51:53Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-08-06T16:50:14Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=1b0cabfc48cf4c13fec95f749d3b44050fe9ff79'/>
<id>urn:sha1:1b0cabfc48cf4c13fec95f749d3b44050fe9ff79</id>
<content type='text'>
If we can't allocate a closure, don't just silently continue.  Set
client-&gt;error so we shut down the client when we're done processing events.
</content>
</entry>
<entry>
<title>client: Simply wl_display_dispatch_queue_pending() and fix return value</title>
<updated>2013-07-29T23:50:44Z</updated>
<author>
<name>Jiergir Ogoerg</name>
<email>f35f22fan@gmail.com</email>
</author>
<published>2013-07-29T23:50:44Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=c1fd097cd995ec02cfcf673fa243f95d4439bac2'/>
<id>urn:sha1:c1fd097cd995ec02cfcf673fa243f95d4439bac2</id>
<content type='text'>
We're supposed to return number of events dispatched on success, not 0.
Refactor to avoid goto and just return ret.
</content>
</entry>
<entry>
<title>wayland-client: Handle potential NULL-deref</title>
<updated>2013-07-13T04:42:14Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-07-13T04:42:14Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=e0579bfb61320653e3af74f5abb3bd50785c10b1'/>
<id>urn:sha1:e0579bfb61320653e3af74f5abb3bd50785c10b1</id>
<content type='text'>
Instead, return -1 on out-of-memory.  errno will be set to ENOMEM by
the failing malloc.
</content>
</entry>
<entry>
<title>scanner: Fail more gracefully on out-of-memory</title>
<updated>2013-07-13T04:35:21Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-07-13T04:35:21Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=8bd93c5c9df2c40d01b7918c666edd68c0be1544'/>
<id>urn:sha1:8bd93c5c9df2c40d01b7918c666edd68c0be1544</id>
<content type='text'>
Failing with an error message and error code is little nicer.  I doubt we'll
hit this case much, but it makes the static analysis happy.
</content>
</entry>
<entry>
<title>connection: Handle empty signature and signature with just a version.</title>
<updated>2013-07-13T01:52:33Z</updated>
<author>
<name>Mariusz Ceier</name>
<email>mceier+wayland@gmail.com</email>
</author>
<published>2013-07-10T21:40:56Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=43f7268989d8feb4b57c0f17af96f8c4ca2e6dd0'/>
<id>urn:sha1:43f7268989d8feb4b57c0f17af96f8c4ca2e6dd0</id>
<content type='text'>
Functions like wl_argument_from_va_list expect from get_next_argument,
to initialize details-&gt;type but when the signature is empty or contains
only version (like in desktop-shell-protocol.c in weston) it is left
uninitialized.

This patch fixes it, by initializing details-&gt;type with '\0' value,
signaling end of arguments.

Signed-off-by: Mariusz Ceier &lt;mceier+wayland@gmail.com&gt;
</content>
</entry>
<entry>
<title>Replace two remaining wl_display_add_gloavl() occurences</title>
<updated>2013-07-09T23:18:10Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-07-09T23:18:10Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=7100a5e0bb07d77f1700abe53968ffc5ba3749ce'/>
<id>urn:sha1:7100a5e0bb07d77f1700abe53968ffc5ba3749ce</id>
<content type='text'>
</content>
</entry>
<entry>
<title>wayland-server: Don't close display fd in fatal error handler</title>
<updated>2013-07-09T22:59:11Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-07-09T22:59:11Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=93d888aec6331ce30e61188cc00ab3dc9f137efb'/>
<id>urn:sha1:93d888aec6331ce30e61188cc00ab3dc9f137efb</id>
<content type='text'>
We can't do that there, we have to make sure it stays a valid fd until
the application calls wl_display_disconnect().  Otherwise the application
may end up poll()ing on a stale or wrong fd in case another part of the
application (or another thread) triggered a fatal error.
</content>
</entry>
<entry>
<title>wayland-server: Return 0 from read_events() in case of EAGAIN</title>
<updated>2013-07-09T22:00:00Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-07-09T21:55:45Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=becca5fcf7a69e5e7b2d287a8a24d93d9d29fa5a'/>
<id>urn:sha1:becca5fcf7a69e5e7b2d287a8a24d93d9d29fa5a</id>
<content type='text'>
Getting no data from the socket is not an error condition.  This may
happen in case of calling prepare_read() and then read_events() with
no other pending readers and no data in the socket.  In general,
read_events() may not queue up events in the given event queue.  From
a given threads point of view it doesn't matter whether events were
read and put in a different event queue or no events were read at all.
</content>
</entry>
<entry>
<title>wayland-client: Treat EOF when reading the wayland socket as an error</title>
<updated>2013-07-09T21:59:56Z</updated>
<author>
<name>Neil Roberts</name>
<email>neil@linux.intel.com</email>
</author>
<published>2013-07-09T13:10:45Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=12cea9559313c3503a7a321e684e3ef1ec7a6e49'/>
<id>urn:sha1:12cea9559313c3503a7a321e684e3ef1ec7a6e49</id>
<content type='text'>
If EOF is encountered while reading from the Wayland socket, make
wl_display_read_events() return -1 so that it will be treated as an
error. The documentation for this function states that it will set
errno when there is an error so it additionally makes up an errno of
EPIPE.

If we don't do this then when the compositor quits the Wayland socket
will be become ready for reading but wl_display_dispatch will do
nothing which typically makes the application take up 100% CPU. In
particular eglSwapBuffers will likely get stuck in an infinite busy
loop because it repeatedly calls wl_display_dispatch_queue while it
waits for the frame callback.

https://bugzilla.gnome.org/show_bug.cgi?id=703892
</content>
</entry>
<entry>
<title>wayland-server: Add wl_global_create/destroy()</title>
<updated>2013-07-09T05:15:37Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-07-08T22:45:41Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=4cffa0fd61fde7760f2506b154b2af7d24b8c25f'/>
<id>urn:sha1:4cffa0fd61fde7760f2506b154b2af7d24b8c25f</id>
<content type='text'>
This patch introduces wl_global_create() and wl_global_destroy() as
replacements for wl_display_add_global() and wl_display_remove_global().
The add/remove_global API did not allow a compositor to indicate
the implemented version of a global, it just took the version from
the interface meta data.  The problem is that the meta data
(which lives in libwayland-server.so) can get out of sync with a
compositor implementation.  The compositor will then advertise a
higher version of a global than what it actually implements.

The new API lets a compositor pass in a version when it registers
a global, which solves the problem.  The add/remove API is deprecated
with this patch and will be removed.
</content>
</entry>
<entry>
<title>build: Add wayland-scanner.pc.</title>
<updated>2013-07-03T20:38:12Z</updated>
<author>
<name>Daiki Ueno</name>
<email>ueno@gnu.org</email>
</author>
<published>2013-07-02T09:38:15Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=40fc79d5b095e330ab6f851e35ba54a65781679f'/>
<id>urn:sha1:40fc79d5b095e330ab6f851e35ba54a65781679f</id>
<content type='text'>
To allow user program to include wayland-scanner.m4 in tarball, move
the path variables from it into wayland-scanner.pc.
</content>
</entry>
<entry>
<title>wayland-server: Free non-legacy wl_resource structs during wl_client_destroy</title>
<updated>2013-07-02T21:01:46Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-07-02T20:59:44Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=3cff4693ea2d547191a2d4270d9444da7df7d462'/>
<id>urn:sha1:3cff4693ea2d547191a2d4270d9444da7df7d462</id>
<content type='text'>
We need to free the non-legacy resources during client shutdown as well.
</content>
</entry>
<entry>
<title>wayland-server: Remove left-over double free in unbind_resource() helper</title>
<updated>2013-07-02T21:01:46Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-07-02T20:57:45Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=477c7237e1f09695f37f062c2bb5520bc3a9ed4c'/>
<id>urn:sha1:477c7237e1f09695f37f062c2bb5520bc3a9ed4c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>wayland-server: Remove error event posting from wl_resource_create</title>
<updated>2013-07-02T21:01:46Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-07-02T19:39:03Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=c82a52a47e5e01246680b5d257fff7bc42cb48bf'/>
<id>urn:sha1:c82a52a47e5e01246680b5d257fff7bc42cb48bf</id>
<content type='text'>
The wl_client_add/new_object() functions sends out an NO_MEMORY error if
the allocation fails.  This was convenient in a couple of places where
that was all the error handling that was needed.  Unfortunately that
looks like out-of-memory isn't handled at the call site and set a bad
precedent for not cleaning up properly or not handling at all.

As we're introducing wl_resource_create() as a replacement for those two
functions, let's remove the automatic error event posting and require
the caller to do that if necessary.

This commit also introduces a new helper, wl_client_post_no_memory() to
make it possible to send NO_MEMORY events from bind where we don't have
a wl_resource.
</content>
</entry>
<entry>
<title>wayland-server: Mark wl_client_add/new_object as deprecated</title>
<updated>2013-07-02T21:01:46Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-07-02T18:34:42Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=b5b11650081f7adb4866fcacd216d3bd83da5024'/>
<id>urn:sha1:b5b11650081f7adb4866fcacd216d3bd83da5024</id>
<content type='text'>
</content>
</entry>
<entry>
<title>wayland-server: Dont free resource in user data destroy callback</title>
<updated>2013-07-02T21:01:46Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-07-02T18:09:16Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=9cc0a6789695a2b41d1aa514900ba3b81f9c3c44'/>
<id>urn:sha1:9cc0a6789695a2b41d1aa514900ba3b81f9c3c44</id>
<content type='text'>
</content>
</entry>
<entry>
<title>wayland-server: Verify request versions before invoking handler</title>
<updated>2013-07-02T21:01:46Z</updated>
<author>
<name>Jason Ekstrand</name>
<email>jason@jlekstrand.net</email>
</author>
<published>2013-07-02T18:57:10Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=a09d7f0d60143653f0bd3e569e8bc4fcef73eeba'/>
<id>urn:sha1:a09d7f0d60143653f0bd3e569e8bc4fcef73eeba</id>
<content type='text'>
This commit provides a layer of protection for the compositor in the form
of message version checking.  We track version information in the
wl_resource and now use this version information to verify that a request
exists in that protocol version before invoking it.  This way libwayland
won't accidentally invoke a request that does not exist and thereby cause
the compositor to crash.

Signed-off-by: Jason Ekstrand &lt;jason@jlekstrand.net&gt;
</content>
</entry>
<entry>
<title>Add wl_resource_create() and a version field to wl_resource</title>
<updated>2013-07-02T21:01:23Z</updated>
<author>
<name>Jason Ekstrand</name>
<email>jason@jlekstrand.net</email>
</author>
<published>2013-06-28T01:09:20Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=4917a967bdcd33b7ad264af9c984c3957d87f569'/>
<id>urn:sha1:4917a967bdcd33b7ad264af9c984c3957d87f569</id>
<content type='text'>
A new function, wl_resource_create(), lets the compositor create a
wl_resource for a given version of the interface.  Passing 0 for the
object ID will allocate a new ID. The implementation, user data and
destructor can be set with wl_resource_set_implementation().

These two functions deprecates wl_client_add/new_object and the
main difference and motivation is the ability to provide a version number
for the resource.  This lets the compositor track which version of the
interface a client has created and we'll use that to verify incoming requests.

Signed-off-by: Jason Ekstrand &lt;jason@jlekstrand.net&gt;
</content>
</entry>
<entry>
<title>Add version information to wl_message signatures.</title>
<updated>2013-07-02T19:52:47Z</updated>
<author>
<name>Jason Ekstrand</name>
<email>jason@jlekstrand.net</email>
</author>
<published>2013-06-28T01:09:19Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=d35b6278c0a4b731fcd2464c848a1c3ab5ec93a4'/>
<id>urn:sha1:d35b6278c0a4b731fcd2464c848a1c3ab5ec93a4</id>
<content type='text'>
This commit adds version information to wl_message signatures and a
wl_message_get_since function to retrieve.  The since version comes in the
form of a (possible) integer at the begining of the message.  If the
message starts with an integer, then it specifies the "since" version of
that message.  Messages present in version one do not get this "since"
information.  In this way we can run-time detect the version information
for a structure on a per-message basis.

Signed-off-by: Jason Ekstrand &lt;jason@jlekstrand.net&gt;
</content>
</entry>
<entry>
<title>server: Make wl_object and wl_resource opaque structs</title>
<updated>2013-07-02T19:52:47Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-06-28T01:09:18Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=d94a8722cb29d8b897672be66ff3c9ff79eab6fe'/>
<id>urn:sha1:d94a8722cb29d8b897672be66ff3c9ff79eab6fe</id>
<content type='text'>
With the work to add wl_resource accessors and port weston to use them,
we're ready to make wl_resource and wl_object opaque structs.  We keep
wl_buffer in the header for EGL stacks to use, but don't expose it by
default.  In time we'll remove it completely, but for now it provides a
transition paths for code that still uses wl_buffer.

Reviewed-by: Jason Ekstrand&lt;jason@jlekstrand.net&gt;
</content>
</entry>
<entry>
<title>Change wl_shm_buffer to use a resource pointer</title>
<updated>2013-06-21T23:18:08Z</updated>
<author>
<name>Jason Ekstrand</name>
<email>jason@jlekstrand.net</email>
</author>
<published>2013-06-21T01:36:49Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=3af748b872f8f1ac4ce536b9826cc7ecbe74df6a'/>
<id>urn:sha1:3af748b872f8f1ac4ce536b9826cc7ecbe74df6a</id>
<content type='text'>
This commit also has the effect of making wl_shm_buffer no longer a
wl_buffer derivative.

Signed-off-by: Jason Ekstrand &lt;jason@jlekstrand.net&gt;
</content>
</entry>
<entry>
<title>Change SHM wl_buffer functions to use the wl_shm_buffer structure</title>
<updated>2013-06-21T23:18:06Z</updated>
<author>
<name>Jason Ekstrand</name>
<email>jason@jlekstrand.net</email>
</author>
<published>2013-06-21T01:36:48Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=ee0d986a50aed60a4373dc1f4ca36f4180def1a9'/>
<id>urn:sha1:ee0d986a50aed60a4373dc1f4ca36f4180def1a9</id>
<content type='text'>
This commit does not break ABI.  It merely changes the types of some things
and adds a wl_shm_buffer_get function.

Signed-off-by: Jason Ekstrand &lt;jason@jlekstrand.net&gt;
</content>
</entry>
<entry>
<title>Add a wl_resource_instance_of function</title>
<updated>2013-06-21T23:18:04Z</updated>
<author>
<name>Jason Ekstrand</name>
<email>jason@jlekstrand.net</email>
</author>
<published>2013-06-21T01:36:47Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=5ac5d55d81dc1dad8f68ddde60b9f8895641567d'/>
<id>urn:sha1:5ac5d55d81dc1dad8f68ddde60b9f8895641567d</id>
<content type='text'>
Signed-off-by: Jason Ekstrand &lt;jason@jlekstrand.net&gt;
</content>
</entry>
<entry>
<title>Free non-legacy resources inside wl_resource_destroy</title>
<updated>2013-06-20T19:12:26Z</updated>
<author>
<name>Jason Ekstrand</name>
<email>jason@jlekstrand.net</email>
</author>
<published>2013-06-18T17:42:40Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=96afa347762bd9796288e8052ccc42989a68386d'/>
<id>urn:sha1:96afa347762bd9796288e8052ccc42989a68386d</id>
<content type='text'>
This commit makes wl_resource_destroy automatically free all non-legacy
resource structures.  Since wl_resource is now an opaque structure it
doesn't make sense for the clients to be freeing it.  This checks to make
sure that it was added through wl_client_add_object or wl_client_new_object
and not wl_client_add_resource before it frees it.  This way if it is a
legacy resources embedded in a structure somewhere we don't have an invalid
free.

Signed-off-by: Jason Ekstrand &lt;jason@jlekstrand.net&gt;
</content>
</entry>
<entry>
<title>client: Add wl_display_prepare_read() API to relax thread model assumptions</title>
<updated>2013-06-17T15:50:42Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-03-17T18:21:48Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=3c7e8bfbb4745315b7bcbf69fa746c3d6718c305'/>
<id>urn:sha1:3c7e8bfbb4745315b7bcbf69fa746c3d6718c305</id>
<content type='text'>
The current thread model assumes that the application or toolkit will have
one thread that either polls the display fd and dispatches events or just
dispatches in a loop.  Only this main thread will read from the fd while
all other threads will block on a pthread condition and expect the main
thread to deliver events to them.

This turns out to be too restrictive.  We can't assume that there
always will be a thread like that.  Qt QML threaded rendering will
block the main thread on a condition that's signaled by a rendering
thread after it finishes rendering.  This leads to a deadlock when the
rendering threads blocks in eglSwapBuffers(), and the main thread is
waiting on the condition.  Another problematic use case is with games
that has a rendering thread for a splash screen while the main thread
is busy loading game data or compiling shaders.  The main thread isn't
responsive and ends up blocking eglSwapBuffers() in the rendering thread.

We also can't assume that there will be only one thread polling on the
file descriptor.  A valid use case is a thread receiving data from a
custom wayland interface as well as a device fd or network socket.
The thread may want to wait on either events from the wayland
interface or data from the fd, in which case it needs to poll on both
the wayland display fd and the device/network fd.

The solution seems pretty straightforward: just let all threads read
from the fd.  However, the main-thread restriction was introduced to
avoid a race.  Simplified, main loops will do something like this:

	wl_display_dispatch_pending(display);

	/* Race here if other thread reads from fd and places events
	 * in main eent queue.  We go to sleep in poll while sitting on
	 * events that may stall the application if not dispatched. */

	poll(fds, nfds, -1);

	/* Race here if other thread reads and doesn't queue any
	 * events for main queue. wl_display_dispatch() below will block
	 * trying to read from the fd, while other fds in the mainloop
	 * are ignored. */

	wl_display_dispatch(display);

The restriction that only the main thread can read from the fd avoids
these races, but has the problems described above.

This patch introduces new API to solve both problems.  We add

	int wl_display_prepare_read(struct wl_display *display);

and

	int wl_display_read_events(struct wl_display *display);

wl_display_prepare_read() registers the calling thread as a potential
reader of events.  Once data is available on the fd, all reader
threads must call wl_display_read_events(), at which point one of the
threads will read from the fd and distribute the events to event
queues.  When that is done, all threads return from
wl_display_read_events().

From the point of view of a single thread, this ensures that between
calling wl_display_prepare_read() and wl_display_read_events(), no
other thread will read from the fd and queue events in its event
queue.  This avoids the race conditions described above, and we avoid
relying on any one thread to be available to read events.
</content>
</entry>
<entry>
<title>server: Add aditional wl_resource accessors</title>
<updated>2013-06-14T19:56:08Z</updated>
<author>
<name>Jason Ekstrand</name>
<email>jason@jlekstrand.net</email>
</author>
<published>2013-06-14T15:07:52Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=61ac9c68490b311afc4e34f0c515bef85f66a69a'/>
<id>urn:sha1:61ac9c68490b311afc4e34f0c515bef85f66a69a</id>
<content type='text'>
Signed-off-by: Jason Ekstrand &lt;jason@jlekstrand.net&gt;
</content>
</entry>
<entry>
<title>server: Add wl_resource_get_id()</title>
<updated>2013-06-07T05:00:30Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-06-07T05:00:30Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=bca4124045e2a0a4356ead2c58c446a65102e74e'/>
<id>urn:sha1:bca4124045e2a0a4356ead2c58c446a65102e74e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Remove incorrect sanity-check from wl_map_insert_at</title>
<updated>2013-06-05T21:45:47Z</updated>
<author>
<name>Jason Ekstrand</name>
<email>jason@jlekstrand.net</email>
</author>
<published>2013-06-05T21:39:51Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=2d586a759eeb7890f76e091791acd86b669061df'/>
<id>urn:sha1:2d586a759eeb7890f76e091791acd86b669061df</id>
<content type='text'>
I got a little over-eager with my sanity checks and didn't realize that the
client uses wl_map_insert_at to mark objects as zombies when they come from
the server-side.

Signed-off-by: Jason Ekstrand &lt;jason@jlekstrand.net&gt;
</content>
</entry>
<entry>
<title>Change WL_ZOMBIE_OBJECT from 0x2 to an actual pointer</title>
<updated>2013-06-05T21:45:36Z</updated>
<author>
<name>Jason Ekstrand</name>
<email>jason@jlekstrand.net</email>
</author>
<published>2013-06-05T21:39:50Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=8fd60c683a3da7299b0c891c73e26385ed895f16'/>
<id>urn:sha1:8fd60c683a3da7299b0c891c73e26385ed895f16</id>
<content type='text'>
In order to use the second-lowest bit of each pointer in wl_map for the
WL_MAP_ENTRY_LEGACY flag, every pointer has to be a multiple of 4.  This
was a good assumption, except with WL_ZOMBIE_OBJECT.  This commit creates
an actual static variable to which WL_ZOMBIE_OBJECT now points.  Since
things are only every compared to WL_ZOMBIE_OBJECT with "==" or "!=", the
only thing that matters is that it is unique.

Signed-off-by: Jason Ekstrand &lt;jason@jlekstrand.net&gt;
</content>
</entry>
<entry>
<title>Add accessor functions for wl_resource and deprecate wl_client_add_resource</title>
<updated>2013-06-05T04:59:08Z</updated>
<author>
<name>Jason Ekstrand</name>
<email>jason@jlekstrand.net</email>
</author>
<published>2013-06-01T22:40:54Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=1488c96a5db72bcd3b73fabd1f26e8031f773f64'/>
<id>urn:sha1:1488c96a5db72bcd3b73fabd1f26e8031f773f64</id>
<content type='text'>
This is the first step towards making wl_resource an opaque pointer type.

Signed-off-by: Jason Ekstrand &lt;jason@jlekstrand.net&gt;
</content>
</entry>
<entry>
<title>Add support for flags in the wl_map API and add a WL_MAP_ENTRY_LEGACY flag</title>
<updated>2013-06-05T04:55:17Z</updated>
<author>
<name>Jason Ekstrand</name>
<email>jason@jlekstrand.net</email>
</author>
<published>2013-06-01T22:40:53Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=2c7468b868acc334b483fa2617f31bbfb13a3412'/>
<id>urn:sha1:2c7468b868acc334b483fa2617f31bbfb13a3412</id>
<content type='text'>
The implementation in this commit allows for one bit worth of flags.  If
more flags are desired at a future date, then the wl_map implementation
will have to change but the wl_map API will not.

Signed-off-by: Jason Ekstrand &lt;jason@jlekstrand.net&gt;
</content>
</entry>
<entry>
<title>Add a "side" field and some sanity checks to wl_map.</title>
<updated>2013-06-05T04:33:57Z</updated>
<author>
<name>Jason Ekstrand</name>
<email>jason@jlekstrand.net</email>
</author>
<published>2013-06-01T22:40:52Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=28472970df58c69565dbbee2074c434041f9ece4'/>
<id>urn:sha1:28472970df58c69565dbbee2074c434041f9ece4</id>
<content type='text'>
The original wl_map implementation did no checking to ensures that ids fell
on the correct side of the WL_SERVER_ID_START line.  This meant that a
client could send the server a server ID and it would happily try to use
it.  Also, there was no distinction between server-side and client-side in
wl_map_remove.  Because wl_map_remove added the entry to the free list
regardless of which side it came from, the following set of actions would
break the map:

1. Client creates a bunch of objects
2. Client deletes one or more of those objects
3. Client does something that causes the server to create an object

Because of the problem in wl_map_remove, the server would take an old
client-side id, apply the WL_SERVER_ID_START offset, and try to use it as a
server-side id regardless of whether or not it was valid.

Signed-off-by: Jason Ekstrand &lt;jason@jlekstrand.net&gt;
</content>
</entry>
<entry>
<title>server: Drop struct wl_surface</title>
<updated>2013-05-08T13:45:59Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-05-08T13:45:59Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=508dd69b5654b632cbbae9d20068cbc3b5ff7eb9'/>
<id>urn:sha1:508dd69b5654b632cbbae9d20068cbc3b5ff7eb9</id>
<content type='text'>
This struct was only defined in the server API for the purpose of the
input structs and helper functions.  Now that those are gone we can dro it.
</content>
</entry>
<entry>
<title>Remove input structs</title>
<updated>2013-05-07T13:10:49Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-04-18T19:07:23Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=e920572e5cc120b3d03b0b2c40af67927fcb73d7'/>
<id>urn:sha1:e920572e5cc120b3d03b0b2c40af67927fcb73d7</id>
<content type='text'>
Looking at the functionality in the server library, it's clear (in
hindsight) that there are two different "things" in there: 1) The IPC
API, that is, everything that concerns wl_display, wl_client,
wl_resource and 2) and half-hearted attempt at sharing input code and
focus logic that leaves a lot of problematic structs in the API
surface, only to share less than 1000 lines of code.

We can just move those input structs and helper functions into weston
and cut libwayland-server down to just the core server side IPC API.
In the short term, compositors can copy those structs and functions
into their source, but longer term, they're probably better off
reimplementing those objects and logic their native framework
(QObject, GObject etc).
</content>
</entry>
<entry>
<title>wayland-client: Avoid null dereference when handling deletion</title>
<updated>2013-04-04T16:39:57Z</updated>
<author>
<name>Rob Bradford</name>
<email>rob@linux.intel.com</email>
</author>
<published>2013-04-04T16:26:57Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=9fbcc7ae7dbbca215d0a1edcede4b7cc95ced7f2'/>
<id>urn:sha1:9fbcc7ae7dbbca215d0a1edcede4b7cc95ced7f2</id>
<content type='text'>
If an unknown id is deleted then the lookup in the map will return NULL and
so we should avoid dereferencing that.

As this is unexpected behaviour log a message about the problem too.
</content>
</entry>
<entry>
<title>utils: const-ify some function arguments</title>
<updated>2013-04-03T16:46:57Z</updated>
<author>
<name>Giulio Camuffo</name>
<email>giuliocamuffo@gmail.com</email>
</author>
<published>2013-04-03T15:29:16Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=4e9892478ba2a57ebf1dc57f8e9aec963015b3f1'/>
<id>urn:sha1:4e9892478ba2a57ebf1dc57f8e9aec963015b3f1</id>
<content type='text'>
</content>
</entry>
<entry>
<title>wayland-server: Listen for pointer current surface destruction</title>
<updated>2013-04-03T16:46:57Z</updated>
<author>
<name>Rob Bradford</name>
<email>rob@linux.intel.com</email>
</author>
<published>2013-04-03T14:20:49Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=db19b443cc8d3179df31cb96b9c45527ad403fef'/>
<id>urn:sha1:db19b443cc8d3179df31cb96b9c45527ad403fef</id>
<content type='text'>
Add a destroy listener so that when the current surface associated with the
pointer is destroyed we can reset the pointer to the current surface. In order
to achieve this add a wl_pointer_set_current() which handles assigning the
surface and creating the listener.

This resolves a use-after-free error triggered with nested popup surfaces

Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=696946
</content>
</entry>
<entry>
<title>docs: Document non-blocking behaviour of wl_display_flush()</title>
<updated>2013-04-03T01:31:02Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-04-03T01:31:02Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=858fcbde59cfd2b42644c43bf481ffd70b30d5be'/>
<id>urn:sha1:858fcbde59cfd2b42644c43bf481ffd70b30d5be</id>
<content type='text'>
</content>
</entry>
<entry>
<title>server: use void* instead of function pointer for wl_object.implementation</title>
<updated>2013-04-03T01:07:07Z</updated>
<author>
<name>Giulio Camuffo</name>
<email>giuliocamuffo@gmail.com</email>
</author>
<published>2013-03-28T13:55:51Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=88d873ecb971a3f2d0f7420edf9711346f0344a3'/>
<id>urn:sha1:88d873ecb971a3f2d0f7420edf9711346f0344a3</id>
<content type='text'>
This is needed to make C++ programs that include wayland-server.h build:
C++ does not allow conversions from data pointers to function pointers.
</content>
</entry>
<entry>
<title>server: use the right function pointer type in wl_signal_get</title>
<updated>2013-04-02T21:11:44Z</updated>
<author>
<name>Giulio Camuffo</name>
<email>giuliocamuffo@gmail.com</email>
</author>
<published>2013-04-02T20:29:46Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=6ca428edc8344c800be3369da3ac8d91fe75c175'/>
<id>urn:sha1:6ca428edc8344c800be3369da3ac8d91fe75c175</id>
<content type='text'>
use the wl_notify_func type, and not void *, or else wl_signal_get
will not be usable by a c++ plugin because it will not cast
void * to a function pointer.
</content>
</entry>
<entry>
<title>wayland-server: Avoid deferencing a NULL pointer in error case</title>
<updated>2013-04-01T21:16:29Z</updated>
<author>
<name>Rob Bradford</name>
<email>rob@linux.intel.com</email>
</author>
<published>2013-03-28T18:48:09Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=8680c67c478d13de757268120494a89b120cf881'/>
<id>urn:sha1:8680c67c478d13de757268120494a89b120cf881</id>
<content type='text'>
Reorder the error handling in the case that closure is NULL due to ENOMEM to
ensure that we can safely call wl_closure_lookup_objects on the second test.
Prior to this reordering the closure would be deferenced in the ENOMEM case
due to the invocation of the second half of the logical OR check.
</content>
</entry>
<entry>
<title>Add wl_resource_init and use it in libwayland implementations of data sharing and SHM</title>
<updated>2013-03-19T03:04:32Z</updated>
<author>
<name>Jason Ekstrand</name>
<email>jason@jlekstrand.net</email>
</author>
<published>2013-03-09T04:26:13Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=bedc3432ff731b0ad680831ecc66a7a5829621a6'/>
<id>urn:sha1:bedc3432ff731b0ad680831ecc66a7a5829621a6</id>
<content type='text'>
This commit adds a wl_resource_init function for initializing wl_resource
structures similar to wl_client_add_object.

From this commit forward, wl_resource structures should not be initialized
manually, but should use wl_resource_init.  In the event of a change to the
wl_resource structure, this allows us to protect against regressions by filling
in added fields with reasonable defaults.  In this way, while changing
wl_object or wl_resource still constitutes an ABI break, compositors following
this rule will only need to be recompiled in order to properly link against the
new version.

Signed-off-by: Jason Ekstrand &lt;jason@jlekstrand.net&gt;
</content>
</entry>
<entry>
<title>Change wl_closure_invoke to take an opcode instead of an actual function pointer</title>
<updated>2013-03-19T03:04:32Z</updated>
<author>
<name>Jason Ekstrand</name>
<email>jason@jlekstrand.net</email>
</author>
<published>2013-03-09T04:26:12Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=ca5b1946cb0f186d604858bec75bba0435f9adc9'/>
<id>urn:sha1:ca5b1946cb0f186d604858bec75bba0435f9adc9</id>
<content type='text'>
Signed-off-by: Jason Ekstrand &lt;jason@jlekstrand.net&gt;
</content>
</entry>
<entry>
<title>client: Invoke new_id closure arguments as pointers instead of integers</title>
<updated>2013-03-17T20:39:48Z</updated>
<author>
<name>Jonas Ådahl</name>
<email>jadahl@gmail.com</email>
</author>
<published>2013-03-08T17:44:16Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=cb73bffed53128ed4f7a943e37c718b724199461'/>
<id>urn:sha1:cb73bffed53128ed4f7a943e37c718b724199461</id>
<content type='text'>
This commit adds a flags parameter to wl_closure_invoke(). The so far
added flags are ment to specify if the invokation is client side or
server side. When on the server side, closure arguments of type 'new_id'
should be invoked as a integer id while on the client side they should
be invoked as a pointer to a proxy object.

This fixes a bug happening when the address of a client side 'new_id'
proxy object did not fit in a 32 bit integer.

krh: Squashed test suite compile fix from Jason Ekstrand.

Signed-off-by: Jonas Ådahl &lt;jadahl@gmail.com&gt;
</content>
</entry>
<entry>
<title>client: Check reference count only for destroyed proxies</title>
<updated>2013-03-17T20:24:02Z</updated>
<author>
<name>Jonas Ådahl</name>
<email>jadahl@gmail.com</email>
</author>
<published>2013-03-07T22:32:39Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=e053a5625129bd11c301c9587f5f29cbda95c66d'/>
<id>urn:sha1:e053a5625129bd11c301c9587f5f29cbda95c66d</id>
<content type='text'>
The llvm static analyzer tool reported "Use of memory after it is freed"
in dispatch_event() because the proxy is used after being freed if the
reference count reaches zero without the destroyed flag being set. This
would never happen in practice because the owner of the proxy object
always holds a reference until calling wl_proxy_destroy() which would
also set the destroyed flag.

Since this is the case, it is safe to do the reference count check only
if the destroyed flag is set, as it can never reach zero if not.

This commit doesn't change the behavior of the function, but makes the
static analyzer more happy.

Fixes https://bugs.freedesktop.org/show_bug.cgi?id=61385

Signed-off-by: Jonas Ådahl &lt;jadahl@gmail.com&gt;
</content>
</entry>
<entry>
<title>Stylistic nitpicking</title>
<updated>2013-02-26T18:40:38Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-02-26T18:40:34Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=8f1386fb504c298f703501dc409ddbd14e1ae036'/>
<id>urn:sha1:8f1386fb504c298f703501dc409ddbd14e1ae036</id>
<content type='text'>
No space between '!' and its argument, 	prefer i++ over ++i.
</content>
</entry>
<entry>
<title>Clean up and refactor wl_closure and associated functions</title>
<updated>2013-02-26T16:31:55Z</updated>
<author>
<name>Jason Ekstrand</name>
<email>jason@jlekstrand.net</email>
</author>
<published>2013-02-26T16:30:51Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=2fc248dc2c877d02694db40aad52180d71373d5a'/>
<id>urn:sha1:2fc248dc2c877d02694db40aad52180d71373d5a</id>
<content type='text'>
The primary purpose of this patch is to clean up wl_closure and separate
closure storage, libffi, and the wire format.  To that end, a number of changes
have been made:

 - The maximum number of closure arguments has been changed from a magic number
   to a #define WL_CLOSURE_MAX_ARGS

 - A wl_argument union has been added for storing a generalized closure
   argument and wl_closure has been converted to use wl_argument instead of the
   combination of libffi, the wire format, and a dummy extra buffer.  As of
   now, the "extra" field in wl_closure should be treated as bulk storage and
   never direclty referenced outside of wl_connection_demarshal.

 - Everything having to do with libffi has been moved into wl_closure_invoke
   and the convert_arguments_to_ffi helper function.

 - Everything having to do with the wire format has been restricted to
   wl_connection_demarshal and the new static serialize_closure function.  The
   wl_closure_send and wl_closure_queue functions are now light wrappers around
   serialize_closure.

Signed-off-by: Jason Ekstrand &lt;jason@jlekstrand.net&gt;
</content>
</entry>
<entry>
<title>client: add wl_proxy_get_class()</title>
<updated>2013-02-26T16:28:21Z</updated>
<author>
<name>Pekka Paalanen</name>
<email>ppaalanen@gmail.com</email>
</author>
<published>2013-02-26T13:19:44Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=a51ed6d50f220488108a4c48fec4858f9fd91cdc'/>
<id>urn:sha1:a51ed6d50f220488108a4c48fec4858f9fd91cdc</id>
<content type='text'>
This is a useful shorthand for client application debugging macros,
since you can ask the object class from the object itself.

Signed-off-by: Pekka Paalanen &lt;ppaalanen@gmail.com&gt;
</content>
</entry>
<entry>
<title>scanner: Fix 'destroy)' typo in check for destroy request presence</title>
<updated>2013-02-25T21:01:38Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-02-25T21:01:38Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=b581d13a7e799edf54a287a8f429c992d774993e'/>
<id>urn:sha1:b581d13a7e799edf54a287a8f429c992d774993e</id>
<content type='text'>
This is there to enforce that we don't have interfaces with a destroy
request that isn't a destructor.  The check never worked because of the
typo, but we also don't have any interfaces like that.
</content>
</entry>
<entry>
<title>scanner: remove list_length in favor of wl_list_length</title>
<updated>2013-02-25T18:12:27Z</updated>
<author>
<name>Ran Benita</name>
<email>ran234@gmail.com</email>
</author>
<published>2013-02-25T15:12:51Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=f53f42a1e7da88605524851ac826c6643e15fd78'/>
<id>urn:sha1:f53f42a1e7da88605524851ac826c6643e15fd78</id>
<content type='text'>
</content>
</entry>
<entry>
<title>connection.c: Align pointer extra storage correctly</title>
<updated>2013-02-04T12:07:17Z</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=f02f82ef7802c4961c784121c4475e8958c8e41f'/>
<id>urn:sha1:f02f82ef7802c4961c784121c4475e8958c8e41f</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>Match libtool version info in 1.0 branch</title>
<updated>2013-01-28T20:27:38Z</updated>
<author>
<name>Kristian Høgsberg</name>
<email>krh@bitplanet.net</email>
</author>
<published>2013-01-28T20:27:27Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/wayland/commit/?id=dd7ef2e17d1ea24c9c59a6e4f4fd523cce41d75b'/>
<id>urn:sha1:dd7ef2e17d1ea24c9c59a6e4f4fd523cce41d75b</id>
<content type='text'>
Master should always as old or older than the stable branch.  I didn't
copy over the libtool version bump when we bumped it in the 1.0 branch.
</content>
</entry>
<entry>
<title>event-loop: fix returning the destroy-signal listener</title>
<updated>2013-01-24T21:14:33Z</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=142aa4a1197f6d4c8a7963dcc762e3d881d249fc'/>
<id>urn:sha1:142aa4a1197f6d4c8a7963dcc762e3d881d249fc</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:05:27Z</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=2423497b999c999528a7d2380a13fcb3e3412d0a'/>
<id>urn:sha1:2423497b999c999528a7d2380a13fcb3e3412d0a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Added a destroy signal to the wl_display object.</title>
<updated>2013-01-11T20:52:39Z</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=31511d0ea08e9419bf6a3169ea196a551b4a94be'/>
<id>urn:sha1:31511d0ea08e9419bf6a3169ea196a551b4a94be</id>
<content type='text'>
Added a destroy signal to the wl_display object.
</content>
</entry>
</feed>
