There's a big cost to setting up and tearing down a mmap and faulting in
the pages to back it. For cases where we're continuously reallocating
shm wl_buffers (resizing a surface, typically) it is a big performance
improvement to be able to reuse a mmap area. This change makes the shm
buffer allocation a two step process: first allocate a wl_shm_pool, then
allocate a buffer from the pool. The wl_shm_pool encapsulate the shared
memory pool, and lets clients allocate wl_buffers backed by chunks of that
memory. Buffers are allocated at an offset into the pool, so it's possible
to create multiple buffers from one pool, for example for icons or cursor
images.
wl_input_device::grab_button is unsigned but the button parameter to
wl_grab_interface::button is signed. This lead to a warning in
data-device.c.
The button number is unsigned in the protocol, so make it unsigned in
the wl_grab_interface API, too. Fixes the compiler warning "comparison
between signed and unsigned integer expressions".
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
The variables opcode and size were unsigned, which lead to warnings
about comparisons of signed vs. unsigned.
Change these variable to signed. Their usage never relies on being
unsigned.
This also fixes (an assumed) printf format string problem, where these
were printed with %d, not %u.
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
This adds more gcc warnings that should be useful, and suppresses the
unused parameter warnings that are not wanted.
Most importantly, this change enables warnings about comparison between
signed and unsigned.
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
And remove the .tex file
Minor changes:
- where the .tex file had some interface descriptions, the docbook source
now links to the actual protocol. The exception here is the shared object
cache which is simply a <programlisting> until the protocol spec exists.
- "Implementation" section skipped, this seems in need of an update anyway
and may be better documented elsewhere (wiki?)
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Wrap all tests with a memory balance check to detect potential
memory leaks.
Fixed a few tests that had memory leaks contained in the tests
themselves.
Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
Instead of directly freeing an event source upon removal put it in a
queue later handled by the event loop; either after a dispatch or upon
event loop destruction.
This is necessary to avoid already queued up event sources to be freed
during some other dispatch callback, causing segmentation faults when
the event loop later tries to handle an event from the freed source.
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
The attached patch turns on printf argument warnings for this function,
which I found was being called incorrectly at least once in the wayland
source code.
The buffer used by wl_connection_data to receive a cmsg is 128 bytes
long. This can hold at most 28 fds but when a cmsg is generated for
sending the fds, there is no check for this limitation. The man page
for recvmsg does not show any way of recovering from MSG_CTRUNC, that
happens when the buffer supplied for cmsg is too short.
Fix this by flushing the data to be written instead of generating a
cmsg buffer longer than the maximum.