Commit graph

1257 commits

Author SHA1 Message Date
Jonas Ådahl
cb73bffed5 client: Invoke new_id closure arguments as pointers instead of integers
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 <jadahl@gmail.com>
2013-03-17 16:39:48 -04:00
Jonas Ådahl
e053a56251 client: Check reference count only for destroyed proxies
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 <jadahl@gmail.com>
2013-03-17 16:24:02 -04:00
Kristian Høgsberg
9a2fab49e5 configure.ac: Use wayland_version macro in bug url 2013-03-17 13:53:29 -04:00
Kristian Høgsberg
8f1386fb50 Stylistic nitpicking
No space between '!' and its argument, 	prefer i++ over ++i.
2013-02-26 13:40:38 -05:00
Jason Ekstrand
2fc248dc2c Clean up and refactor wl_closure and associated functions
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 <jason@jlekstrand.net>
2013-02-26 11:31:55 -05:00
Pekka Paalanen
a51ed6d50f client: add wl_proxy_get_class()
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 <ppaalanen@gmail.com>
2013-02-26 11:28:21 -05:00
Kristian Høgsberg
b581d13a7e scanner: Fix 'destroy)' typo in check for destroy request presence
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.
2013-02-25 16:01:38 -05:00
Ran Benita
f53f42a1e7 scanner: remove list_length in favor of wl_list_length 2013-02-25 13:12:27 -05:00
Kristian Høgsberg
df1a934b8b configure.ac: Update bug URL 2013-02-14 17:00:46 -05:00
Armin K
9c7fb931c9 Make sure that man page xml files are always disted 2013-02-14 14:44:08 -05:00
Siddharth Heroor
d4bfbdb9b5 README: Fix typos
Signed-off-by: Siddharth Heroor <heroor@gmail.com>
2013-02-14 12:14:54 -05:00
Kristian Høgsberg
13d5271b47 tests: Add a help message for the test runner
In case we forget the name of the test case or typo it, the test runner
will now list the test cases in the test binary.
2013-02-11 13:58:39 -05:00
Kristian Høgsberg
adcb2d73b3 queue-test: WEXITSTATUS() is undefined if WIFEXITED() is false
If a child process dies from a signal, WIFEXITED() returns false and
WEXITSTATUS() isn't well-defined.  In this case, if the client segfaults,
the status is 134 and WEXITSTATUS(134) is EXIT_SUCCESS, so we mask the error.
2013-02-08 11:38:59 -05:00
Kristian Høgsberg
f02f82ef78 connection.c: Align pointer extra storage correctly
Most extra data are just pointers, but in case of fds we store an int in
the extra space.  That can cause un-aligned access to pointers on 64 bit
architectures.  Make sure we always align pointer storage correctly.
2013-02-04 07:07:17 -05:00
Kristian Høgsberg
9d2db599e7 configure.ac: Lower git master version to 1.0.90
The idea was to use 1.1.0 for the git master version, so that git master
would always be newer than any release or 1.1.x version.  This means
we have to skip 1.1 as a release, which turns out to be confusing.

We can just use version 1.0.90 instead, which lets us call the next
release 1.1.0.
2013-02-02 10:44:32 -05:00
Kristian Høgsberg
dd7ef2e17d Match libtool version info in 1.0 branch
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.
2013-01-28 15:27:38 -05:00
David Herrmann
66d55ab3c3 gitignore: add test-suite files
The *.log and *.trs files should be ignored by git as well as the GNU
autotools ./test-driver helper script.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2013-01-24 16:14:52 -05:00
David Herrmann
142aa4a119 event-loop: fix returning the destroy-signal listener
We need to actually return the destroy-listener, otherwise the return
value is undefined.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2013-01-24 16:14:33 -05:00
Jason Ekstrand
2423497b99 Add a destroy signal to the wl_event_loop object 2013-01-15 14:05:27 -05:00
Jason Ekstrand
31511d0ea0 Added a destroy signal to the wl_display object.
Added a destroy signal to the wl_display object.
2013-01-11 15:52:39 -05:00
Quentin Glidic
0d2c233e15 test/event-loop: Check readable state on a pipe
When redirecting stdout to a non-readable file makes the test fail as a
false negative
2013-01-11 15:12:45 -05:00
Pekka Paalanen
812bd4dd0f client: remove two unused function pointer typedefs
The need for wl_display_update_func_t was removed in

commit 53d24713a3
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Thu Oct 4 16:54:22 2012 -0400

    Change filedescriptor API to be thread safe

and wl_callback_func_t does not seem to have ever been used in the first place.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-12-12 11:04:53 -05:00
Pekka Paalanen
bfdf44ec48 tests: rename temporary files
This is libwayland, not weston, so call the temporary files
wayland-tests-*, not weston-tests-*.

This is a candidate for the stable branch.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-12-03 10:10:22 -05:00
Sven Joachim
7415e8eb05 tests: Don't leave temporary files behind
Signed-off-by: Sven Joachim <svenjoac@gmx.de>
2012-12-03 09:55:58 -05:00
Jonas Ådahl
e8ce683920 man, configure.ac: Only generate man pages if we can do it offline
Instead of relying on downloading the stylesheet from the Internet for
generating man pages, only generate them if the stylesheet is available
locally.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2012-12-03 09:49:36 -05:00
Jonas Ådahl
76dae4f089 doc: Only generate Wayland documentation if xsltproc was found
Instead of failing to generate documentation because xsltproc doesn't
exist, don't try to generate at all.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2012-12-03 09:49:34 -05:00
Kristian Høgsberg
d943c3de08 configure.ac: Update version to 1.1.0 during development on git master
This lets dependent components, such as mesa or toolkits use git master
instead of any 1.0.x release.
2012-11-30 17:19:47 -05:00
Kristian Høgsberg
5940419626 client: Add \since tag for wl_display_dispatch_queue_pending() documentation 2012-11-30 14:05:32 -05:00
Quentin Glidic
92ca1a0e80 pkgconfig: Use configure provided directories
https://bugs.freedesktop.org/show_bug.cgi?id=57630
2012-11-27 20:35:50 -05:00
Ander Conselvan de Oliveira
e8fbce73c7 protocol: Add a wl_surface request for setting buffer transformation
This request allows a client to render its contents according to the
output transform, enabling the compositor to use optimizations such as
overlays, hardware cursors, scan out of a client buffer for
fullscreen surface, etc, even if the output is rotated.
2012-11-27 11:13:38 -05:00
Ander Conselvan de Oliveira
00639de120 scanner: Fix wrong restriction on since field
The scanner would not allow two consecutive requests on an interface to
have the same since number, so if a new version of an interface added
two new request the version number would have to be increased by two.
2012-11-27 11:13:36 -05:00
Jonas Ådahl
d7a63fdbfb client: Don't cancel a roundtrip when any event is received
Since wl_display_dispatch() returns the number of processed events or -1
on error, only cancel the roundtrip if an -1 is returned.

This also fixes a potential memory corruption bug happening when
wl_display_roundtrip() does an early return and the callback later
writes to the then out of scope stack allocated `done' parameter.

Introduced by 33b7637b45.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2012-11-27 11:09:45 -05:00
Tiago Vignatti
5df752ab16 doc: Fix typos
Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
2012-11-23 22:51:51 -05:00
Ander Conselvan de Oliveira
fb20507881 client: Add an entry point for dispatching a queue without blocking
On the client side EGL, all the wl_buffer.release events need to be
processed before buffer allocation, otherwise a third buffer might
be allocated unnecessarily. However, the buffer allocation should
not block in the case no event was received. In order to do that, a
non-blocking queue dispatch function is needed.
2012-11-23 21:50:14 -05:00
Kristian Høgsberg
0f5d41e3bb debug: Allow WAYLAND_DEBUG=server/client for server/client side only debug
By default the server will dump protocol for both the server and its
clients when run with WAYLAND_DEBUG=1.  That's still the case, but it now
also understands WAYLAND_DEBUG=client or WAYLAND_DEBUG=server, which
will only enable debug dumping on either client or server side.
2012-11-21 17:14:55 -05:00
Kristian Høgsberg
5006829041 configure.ac: Bump version to 1.0.1 2012-11-19 17:30:07 -05:00
Kristian Høgsberg
edb0a1bef5 doc: Fix out-of-source build so distcheck works again
The amount of generated files and hacks over hacks in the doc/ directory
is getting out of hand and we need a better solution.  For now, just get
distcheck back to working.
2012-11-19 17:28:15 -05:00
Kristian Høgsberg
173e160632 Fix distcheck by adding back protocol/Makefile.am
5909dddc78 removed protocol/Makefile.am
which meant protocol/wayland.xml no longer got included in the tarball.
Add back protocol/Makefile.am and configure.ac bits and add protocol to
subdirs in Makefile.am to fix this.
2012-11-19 17:11:58 -05:00
Kristian Høgsberg
3a671b4d3d protocol: Fix copy and paste summary 2012-11-19 15:44:14 -05:00
Kristian Høgsberg
94fd3d1dd4 protocol: Add summary description for wl_data_device_manager 2012-11-19 15:02:45 -05:00
Martin Olsson
b46dab17f0 client: Fix source comment typos 2012-11-14 13:59:03 -05:00
Tiago Vignatti
73d845af94 doc: Fix incorrectly formatted section header
https://bugs.freedesktop.org/show_bug.cgi?id=56719

Reported-by: Petr Gladkikh <PetrGlad@gmail.com>
Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
2012-11-12 16:08:40 -02:00
Tiago Vignatti
4a8395f1a8 doc: Update .gitignore
Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
2012-11-12 16:08:38 -02:00
Tiago Vignatti
5afebc4cb1 doc: Set publican to quiet mode
Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
2012-11-12 16:08:35 -02:00
Tiago Vignatti
5909dddc78 doc: Remove unused css and xslt for the protocol
This was added previously (commit 015c42e1) when we didn't have docbook
formatted documentation. Now it became quite useless.

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
2012-11-12 16:08:32 -02:00
Tiago Vignatti
c77ba6bebc doc: Auto-generate API methods and classes documentation
There's work to do still for giving a prettier style on the documentation, for
instance splitting paragraphs correctly and printing the detailed description
of the methods as well.

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
2012-11-12 16:08:29 -02:00
Tiago Vignatti
a95aba7fca doc: doxygen: Interpret the first line comment as the brief
Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
2012-11-12 16:07:16 -02:00
Jonas Ådahl
2a8da76fb1 tests: Add out of order delete_id queue tests
Verify that when receiving the first of two synchronization callback
events, destroying the second one doesn't cause any errors even if the
delete_id event is handled out of order.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2012-11-07 18:37:55 -05:00
Jonas Ådahl
3d651dc2ee tests: Use a pipe for synchronization to avoid potential deadlock
Using signals in the previous way could potentially lead to dead locks
if the SIGCONT was signalled before a listener was registered.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2012-11-07 18:37:46 -05:00
Jonas Ådahl
1801cdc41a tests: Add queue test case
Check that after a callback removes a proxy that most likely will have
several events queued up with the same target proxy, no more callbacks
are invoked.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2012-11-05 15:48:12 -05:00