Commit Graph

214 Commits

Author SHA1 Message Date
Pekka Paalanen
7e62d25257 protocol: add presentation extension v5
Add accurate presentation timing features to Wayland: queueing and
feedback.

This specification is based on the draft written by Frederic Plourde
<frederic.plourde@collabora.co.uk> and redesigned by Pekka Paalanen.

The RFC v2 version is from
http://lists.freedesktop.org/archives/wayland-devel/2014-January/012988.html

Changes in v3:

* associate presentation time to current surface contents

This implements the suggestion from
http://lists.freedesktop.org/archives/wayland-devel/2014-February/013066.html

which prevents surface content from jumping backwards in time if a
client retroactively queues an update with a target time in the past.

* use 64-bit tv_sec in presentation

The time_t type used in struct timespec could be almost anything. POSIX
probably defines it to be an integer, but not the size. Apparently it is
usually 'long', which makes it 64-bit on x86_64.

To be able to fully represent timespec values returned by clock_gettime,
change the protocol to use 64 bits for the tv_sec part.

* define an error for invalid tv_nsec

This allow us to rely on the normalized timestamp form.

* define some interactions with sub-surfaces

Sub-surface cached state updates (synchronized mode) are designed
especially for resizing. As queued updates are not meant to produce any
resizing-like effects, they also do not trigger any sub-surface
operations.

* add sub-headings as xml comments

* queued update cannot map

Because before mapping, the surface has no main output assigned. An
immediate commit is needed anyway, to be able to set all the surface
state, which a queued update cannot touch.

* frame callbacks are not queued

It is not known when queueing frame callbacks would be useful.

Changes in v4:

* remove mentions of the queuing feature

The specification has been split and the queuing feature will be added
back in another version of the extension.

* add flags argument to 'presented' event

Describe the nature of how the update was presented to screen and the
characteristics of the feedback information. No flags have been
defined for now.

* add a protocol error code for invalid flags

Changes in v5:

* remove the destroy method for the feedback object

The protocol object should instead be automatically destroyed after
a 'presented' or 'discarded' event has been triggered.

* some grammatical corrections to the specification

[Louis-Francis Ratté-Boulianne: split the spec in two parts]

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Signed-off-by: Louis-Francis Ratté-Boulianne <lfrb@collabora.com>
v3 Reviewed-by: Mario Kleiner <mario.kleiner.de@gmail.com>
2014-09-30 11:35:38 +03:00
Pekka Paalanen
3d3f48548a build: do not run xwayland test for distcheck
The Xwayland test has been broken ever since the migration to the
stand-alone Xwayland server binary.

Disable the test, so 'make distcheck' can actually run.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Boyan Ding <stu_dby@126.com>
2014-08-22 16:08:20 +03:00
Pekka Paalanen
7511118118 build: use AM_DISTCHECK_CONFIGURE_FLAGS
According to
http://www.gnu.org/software/automake/manual/html_node/Checking-the-Distribution.html
the DISTCHECK_CONFIGURE_FLAGS is for the user, while
AM_DISTCHECK_CONFIGURE_FLAGS is the one to use in Makefile.am.

Make it so.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Boyan Ding <stu_dby@126.com>
Reviewed-by: Marek Chalupa <mchqwerty@gmail.com>
2014-08-22 16:08:12 +03:00
Pekka Paalanen
461e93c7bf build: cliptest uses also vertex-clipping.h
Add it to the list of source files.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-08-20 11:58:47 +03:00
Ondřej Majerech
06e089275d Remove duplicated code from cliptest.c
Signed-off-by: Ondřej Majerech <oxyd.oxyd@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-08-20 11:43:26 +03:00
Thierry Reding
0e6d9a771a build: Silence libtoolize warnings
When running the autogen.sh script, libtoolize complains thusly:

	libtoolize: Consider adding `AC_CONFIG_MACRO_DIR([m4])' to configure.ac and
	libtoolize: rerunning libtoolize, to keep the correct libtool macros in-tree.
	libtoolize: Consider adding `-I m4' to ACLOCAL_AMFLAGS in Makefile.am.

Silence the warnings by following libtoolize's advice.

Signed-off-by: Thierry Reding <treding@nvidia.com>
2014-06-18 17:14:40 -07:00
Jason Ekstrand
549a53f186 Add a simple client for testing compositor damage handling
This allows for easily testing a compositor's damage tracking in all
currently available configurations including wl_surface.buffer_transform,
wl_surface.buffer_scale, and wl_viewport.  It also includes a
--rotating-damage that flag instructs the client to change the
wl_surface.buffer_transform on every commit.  This tests the compositor for
proper handling of texture uploads even when the transform has changed but
the buffer size hasn't.
2014-06-18 10:45:50 -07:00
Pekka Paalanen
15f8563524 build: let 'make clean' remove logs/ again
Before in the recursive automake setting, we had tests/logs/ for
explicitly created test log files. There is a Makefile rule to
remove the logs directory on 'make clean'. The rule broke on moving to
non-recursive make, since now we have logs/, not tests/logs/.

Fix the rule to remove the intended directory.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-05-12 10:07:03 -07:00
Pekka Paalanen
f9a2626cb1 tests: rename xwayland test
If the test is named xwayland.weston, then the automake test harness
keys it off xwayland.log. Making xwayland.log runs the test.
The test harness has implicit rules to create a %.log from all of
%$TEST_EXTENSIONS. So we have implicit rules to create %.log from %.la
and %.log from %.weston.

We also build xwayland.so, which produces xwayland.la.

When the test harness goes running the xwayland test, it ends up using
the %.la rule, which is wrong. It passes xwayland.la as the test name to
weston-tests-env, which then loads it as a plugin into Weston and waits
for Weston to exit. Which it never does.

Fix this by making the test have a different name than the Xwayland
plugin.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-05-09 15:00:36 -07:00
Kristian Høgsberg
757d8aff27 xwayland: Use new Xwayland DDX 2014-04-06 22:32:24 -07:00
Jason Ekstrand
47928d8715 Add a screen sharing plugin
This adds a plugin called screen-share.so.  If the screen-share.so module
is imported, it will add the CTRL+ALT+s keybinding to start a screen
sharing session.  If you press CTRL+ALT+S, weston will spawn another copy
of weston, this time with the RDP backend, and mirrors the current screen
to it and adds any seats from RDP as aditional seats.  The current screen
is defined as the one with the mouse pointer.  Currently the CTRL+ALT+s
keybinding is hardcoded as the only way to activate screen sharing.  If, at
some point, shells want more control over the screen sharing process, the
API's should be easy to update and export to make this possible.

For security, the command and path to weston is currently hard-coded.  It
would not take much aditional code to make this configurable or to allow a
shell to launch other screen-sharing programs.  However, handling those
security issues is outside the scope of this patch so it is hard-coded for
now.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
2014-04-02 21:28:09 -07:00
Jason Ekstrand
53ee0dcca4 compositor-wayland: Add support for running on top of wl_fullscreen_shell
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
2014-04-02 21:26:39 -07:00
Jason Ekstrand
2bb72fe6fb weston-fullscreen: Add wl_fullscreen_shell support
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
2014-04-02 21:26:31 -07:00
Jason Ekstrand
428c24e25e simple-shm: Add wl_fullscreen_shell support
This makes simple-shm act like a very simple fullscreen shell client.  This
is the kind of interaction one would expect out of a boot splash screen or
similar.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
2014-04-02 21:26:00 -07:00
Jason Ekstrand
946a9489bf Add a wl_fullscreen_shell implementation
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
2014-04-02 21:25:56 -07:00
Jason Ekstrand
27e1167957 Generate/build the fullscreen shell protocol files
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
2014-04-02 21:24:39 -07:00
Jonas Ådahl
e0de3c2418 Add libinput based input device backend
While disable by default, passing --enable-libinput-backend to
./configure switches the input backend in weston's drm, fbdev and rpi
compositing backends to use libinput instead of udev-seat.c, evdev.c and
friends.

When enabled, weston now also depends on libinput >= 0.1.0.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2014-03-12 14:55:22 -07:00
Kristian Høgsberg
fe84a97f17 build: List xdg protocol files as nodist SOURCEs 2014-02-11 16:22:10 -08:00
Kristian Høgsberg
4c1bfc9c46 build: Link to libshared.la instead of adding to SOURCES
libshared.la is just os-compat, the option and config parser, so let's
link to that instead of adding the os-compat files to all these targets.
2014-02-11 16:22:10 -08:00
Kristian Høgsberg
dfaf65ba16 clients: Port simple-shm and simple-egl to xdg-shell 2014-02-07 17:01:57 -08:00
Kristian Høgsberg
e5b4dce642 build: Add missing AM_CFLAGS to client target CFLAGS 2014-02-05 22:00:59 -08:00
Jason Ekstrand
ab39f4db0f nested-client: Fix build error 2014-02-05 20:36:18 -08:00
Kristian Høgsberg
49fcd001b1 build: Pass pkg-config CFLAGS as target_CFLAGS, not CPPFLAGS 2014-02-03 11:21:41 -08:00
Kristian Høgsberg
1d2dd077e7 build: Add a rule for creating git-version.h when we don't have a git repo
For dist tarballs we ship git-version.h but if you do a git archive or
similar to check out a source tree, there's no git-version.h and no
way to make one.

https://bugs.freedesktop.org/show_bug.cgi?id=74459
2014-02-03 10:55:51 -08:00
Pekka Paalanen
5124b53a13 build: fix weston-info CFLAGS
CC       clients/weston-info.o
clients/weston-info.c:31:28: fatal error: wayland-client.h: No such file or directory
compilation terminated.
make[1]: *** [clients/weston-info.o] Error 1

Only triggerable if libwayland is only in a custom prefix.

Fix by adding CLIENT_CFLAGS.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-02-03 09:54:28 -08:00
Pekka Paalanen
cca3a06cab build: pass client flags to test programs
Fix build failures of the kind:

  CC       tests/bad-buffer-test.o
In file included from tests/weston-test-client-helper.h:28:0,
                 from tests/bad-buffer-test.c:28:
./protocol/wayland-test-client-protocol.h:35:28: fatal error: wayland-client.h: No such file or directory
compilation terminated.
make[1]: *** [tests/bad-buffer-test.o] Error 1

These are only triggerable if libwayland has not been installed
system-wide, but only in a custom prefix.

Since the Makefile already uses AM_CPPFLAGS, simply add
TEST_CLIENT_CFLAGS to test programs instead of dropping AM_CPPFLAGS.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-02-03 09:54:22 -08:00
Kristian Høgsberg
bece0ee726 build: Don't dist generated sources 2014-02-01 21:52:43 -08:00
Quentin Glidic
088ba5e475 Makefile.am: Fix protocol source files usage
Signed-off-by: Quentin Glidic <sardemff7+git@sardemff7.net>
2014-02-01 21:21:39 -08:00
Jasper St. Pierre
0790e3978a westoy: Port the toy toolkit over to xdg-shell 2014-02-01 01:53:05 -08:00
Kristian Høgsberg
cd31275f28 build: Stop using xmllint to validate protocol files
The scanner needs to be good enough.  If it crashes or fails to report
invalid input, that needs to get fixed.
2014-02-01 01:05:36 -08:00
Kristian Høgsberg
0822942be2 build: Drop wayland-scanner.mk
We now only have one Makefile.am so we don't need to keep these rules
in a separate file for sharing.
2014-02-01 01:05:36 -08:00
Kristian Høgsberg
0aa19e9457 build: Only regenerate src/git-version.h when .git/logs/HEAD changes
We rely on .git/logs/HEAD to be a file that changes when we commit to HEAD.
The first idea is to make the makefile rule depend on .git/HEAD, but that's
a symbolic ref that points to the current ref in refs/heads.  However,
.git/logs/HEAD changes whenever we commit to HEAD, so we can use that in the
makefile rule.
2014-02-01 01:05:35 -08:00
Kristian Høgsberg
0987f81ee9 build: Move shared/Makefile.am into toplevel Makefile.am 2014-02-01 01:05:35 -08:00
Kristian Høgsberg
e73eccdb66 build: Move clients/Makefile.am into toplevel Makefile.am 2014-02-01 01:05:33 -08:00
Kristian Høgsberg
1e80afa36c build: Move tests/Makefile.am into toplevel Makefile.am 2014-02-01 01:04:32 -08:00
Kristian Høgsberg
b7e3ef460f build: Move src/Makefile.am into toplevel Makefile.am 2014-02-01 01:03:06 -08:00
Kristian Høgsberg
68c5c10905 build: Move man/Makefile.am into toplevel Makefile.am 2014-02-01 00:08:51 -08:00
Kristian Høgsberg
f9bc6f63fb build: Move protocol/Makefile.am into toplevel Makefile.am 2014-02-01 00:08:39 -08:00
Kristian Høgsberg
058bd32620 build: Move xwayland/Makefile.am into toplevel Makefile.am 2014-02-01 00:07:23 -08:00
Kristian Høgsberg
bc00dbe4f5 build: Move desktop-shell/Makefile.am into toplevel Makefile.am 2014-02-01 00:07:21 -08:00
Kristian Høgsberg
e895f148e6 build: Move wcap/Makefile.am into top-level Makefile.am 2014-01-31 23:50:00 -08:00
Kristian Høgsberg
5b9f9f8fc4 build: Move data/Makefile.am into Makefile.am 2014-01-31 23:49:39 -08:00
Kristian Høgsberg
98463743ca Makefile.am: Clean generated weston.ini on make clean 2013-12-16 23:12:46 -08:00
Kristian Høgsberg
19d1e6b185 desktop-shell: Move to new desktop-shell subdirectory 2013-12-04 10:20:02 -08:00
Kristian Høgsberg
2ba10df300 Move xwayland up one directory level 2013-12-04 10:20:02 -08:00
Neil Roberts
e3de16ea30 Automatically generate weston.ini with the right paths
Previously weston.ini had hardcoded paths for the weston-* clients in
/usr/bin and /usr/libexec. This was a bit annoying when testing Weston
because you wouldn't usually install those in the system prefix. This
patch adds a make rule to automatically generate weston.ini from a
template file with some replacement markers for the paths so that they
can have the right prefix.
2013-11-27 22:49:31 -08:00
Daiki Ueno
3e9df07269 autotools: Don't use wayland-scanner.m4 2013-08-20 11:15:19 -07:00
Kristian Høgsberg
24639cc0ca Makefile.am: Distribute weston.ini sample
https://bugs.freedesktop.org/show_bug.cgi?id=61388
2013-02-25 13:04:40 -05:00
Quentin Glidic
056e8379a2 Makefile.am: SUBDIRS is automagic
DIST_SUBDIRS should be used for corner cases only, not for conditional
SUBDIRS:

  If `SUBDIRS' is defined conditionally using Automake conditionals,
  Automake will define `DIST_SUBDIRS' automatically from the possible
  values of `SUBDIRS' in all conditions.

Signed-off-by: Quentin Glidic <sardemff7+git@sardemff7.net>
2013-02-22 08:41:08 -05:00
Pekka Paalanen
a91291c4d6 man: add man page for weston
It is not complete, but has lots of stuff already.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-08-29 15:32:05 -04:00
Kristian Høgsberg
b278fdf1fc Makefile.am: Don't list wcap sub directory twice in DIST_SUBDIRS 2012-06-25 18:05:08 -04:00
Kristian Høgsberg
61cfa66d6f wcap: Add option to disable building wcap tools 2012-05-26 13:19:22 -04:00
Kristian Høgsberg
2bcb2fc1fd wcap: Rename wcap-encode to just wcap 2012-05-25 18:03:52 -04:00
Kristian Høgsberg
89060c0a8b Import vpxenc from libvpx as a starting point 2012-05-25 11:59:53 -04:00
Kristian Høgsberg
850f24c712 Disable setuid install for distcheck 2012-02-09 09:20:44 -05:00
Pekka Paalanen
4520d5cafb tests: add matrix-test
Add a new directory tests/ for unit test applications. This directory
will be built only if --enable-tests is given to ./configure.

Add matrix-test application. It excercises especially the
weston_matrix_invert() and weston_matrix_inverse_transform() functions.
It has one test for correctness and precision, and other tests for
measuring the speed of various matrix operations.

For the record, the correctness test prints:

a random matrix:
   1.112418e-02   2.628150e+00   8.205844e+02  -1.147526e-04
   4.943677e-04  -1.117819e-04  -9.158849e-06   3.678122e-02
   7.915063e-03  -3.093254e-04  -4.376583e+02   3.424706e-02
  -2.504038e+02   2.481788e+03  -7.545445e+01   1.752909e-03

The matrix multiplied by its inverse, error:
   0.000000e+00  -0.000000e+00  -0.000000e+00  -0.000000e+00
   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00
  -0.000000e+00  -0.000000e+00   0.000000e+00  -0.000000e+00
   0.000000e+00   0.000000e+00   0.000000e+00   0.000000e+00
max abs error: 0, original determinant 11595.2

Running a test loop for 10 seconds...
test fail, det: -0.00464805, error sup: inf
test fail, det: -0.0424053, error sup: 1.30787e-06
test fail, det: 5.15191, error sup: 1.15956e-06
tests: 6791767 ok, 1 not invertible but ok, 3 failed.
Total: 6791771 iterations.

These results are expected with the current precision thresholds in
src/matrix.c and tests/matrix-test.c. The random number generator is
seeded with a constant, so the random numbers should be the same on
every run. Machine speed and scheduling affect how many iterations are
run.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-01-27 10:44:22 +02:00
Kristian Høgsberg
f6a5f7def3 Fix distcheck 2012-01-03 11:04:09 -05:00
Kristian Høgsberg
8334bc1ef9 Rename wayland-compositor to weston
This rename addresses a few problems around the split between core
Wayland and the wayland-demos repository.

1) Initially, we had one big repository with protocol code, sample
compositor and sample clients.  We split that repository to make it
possible to implement the protocol without pulling in the sample/demo
code.  At this point, the compositor is more than just a "demo" and
wayland-demos doesn't send the right message.  The sample compositor
is a useful, self-contained project in it's own right, and we want to
move away from the "demos" label.

2) Another problem is that the wayland-demos compositor is often
called "the wayland compsitor", but it's really just one possible
compositor.  Existing X11 compositors are expected to add Wayland
support and then gradually phase out/modularize the X11 support, for
example.  Conversely, it's hard to talk about the wayland-demos
compositor specifically as opposed to, eg, the wayland protocol or a
wayland compositor in general.

We are also renaming the repo to weston, and the compositor
subdirectory to src/, to emphasize that the main "output" is the
compositor.
2012-01-03 11:04:04 -05:00
Pekka Paalanen
c1765c67b3 move config parser to a convenience library
Create a new directory for convenience librariers that can be shared
between compositor components and clients.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2011-12-08 10:25:12 +02:00
Tiago Vignatti
93165e3e23 configure: set up simple clients independently from the others
Namely, simple-client and simple-shm.

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
2011-07-21 08:42:58 -07:00
Kristian Høgsberg
60c15080ab Add --disable-clients configure option 2011-04-26 11:47:00 -04:00
Kristian Høgsberg
b2d71852fd Split into a demo repository that holds the demo compositor and clients 2011-02-14 22:13:33 -05:00
Javier Jardón
5b7e43ac56 Update autotools configuration
Use new libtool syntax and cleaning the code a bit
2010-11-06 21:04:03 -04:00
Kristian Høgsberg
f0152daad7 Use automake 2010-10-12 18:00:16 -04:00