Commit Graph

8481 Commits

Author SHA1 Message Date
Daniel Stone
59968f7d78 frontend: Use enums for backend type, not strings
Convert our backend type to an enum early, and use it in place of a
string.

Signed-off-by: Daniel Stone <daniels@collabora.com>
2023-01-10 10:59:04 +02:00
Daniel Stone
ef87ad2237 build: Add unreachable()
unreachable() is used to hint to the compiler that a certain branch
cannot ever be reached. The implementation is taken from Mesa.

Signed-off-by: Daniel Stone <daniels@collabora.com>
2023-01-10 10:59:04 +02:00
Daniel Stone
35f04139c8 man: Reformat shell section, add kiosk-shell
Reformat the shell section of the manpage to be more similar to the backend
section.

Signed-off-by: Daniel Stone <daniels@collabora.com>
2023-01-10 10:53:02 +02:00
Daniel Stone
2c3693bf2e frontend: Use short-form names for shell argument
Instead of passing --shell=foo-shell.so, just pass --shell=foo, whilst
accepting the old form for compatibility.

Whilst we're at it, document the --shell argument in the manpage and
README.

Signed-off-by: Daniel Stone <daniels@collabora.com>
2023-01-10 10:53:02 +02:00
Derek Foreman
e7251a759b xwm: Preserve unmaximized window size at map time
This fixes a problem that can be seen with Firefox running under xwayland.
- Start it (or another client that remembers its size and maximized state),
- resize it
- maximize it
- exit it
- restart it
- unmaximize it

The size will be changed to a default size and not the previous unmaximized
size.

To fix this, save the unmaximized height and width like we do for the
fullscreen case.

Co-authored-by: Steve Pronovost <spronovo@microsoft.com>
Co-authored-by: Brenton DeGeer <brdegeer@microsoft.com>
Signed-off-by: Hideyuki Nagase <hideyukn@microsoft.com>
Signed-off-by: Steve Pronovost <spronovo@microsoft.com>
Signed-off-by: Brenton DeGeer <brdegeer@microsoft.com>
Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
2023-01-09 22:16:29 +00:00
Marius Vlad
eeef6be8e2 doc/sphinx: Include weston-config and shell-utils in docs
libweston contains weston_config and weston_shell_utils utilities
functions so include these in the sphinx documentation as well.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
2023-01-09 22:13:07 +00:00
Marius Vlad
6293ab1f90 libweston, shared: Move out weston_shell_get_binding_modifier
This doesn't really belong into shell-utils,  so better move it out to
shared/config-parser. Renamed to weston_config_get_binding_modifier
to maintain the same namespace.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
2023-01-09 22:13:07 +00:00
Marius Vlad
58c3e263a0 shell-utils: Add missing macros and C++ compat/install header
Allow C++ access from within C code and add macros to avoid
multiple inclusion of the header. Also, install the header for other
users of libweston to actually make use of it.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
2023-01-09 22:13:07 +00:00
Marius Vlad
19d32da742 shell-utils: Integrate shell-utils into libweston
These shell utils functions are potentially useful to other shells as
well, so make them widely available.

Renamed all functions to weston_shell_utils namespace.

No functional change, copied ad litteram.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
2023-01-09 22:13:07 +00:00
Derek Foreman
68cad4db42 drm: Use cached matrix in drm_paint_node_transform_supported
We've passed the paint node deeply enough that we can now use the cached
matrix in it to save some calculations.

Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
2023-01-09 21:58:19 +00:00
Derek Foreman
05eee6eaef drm: Pass paint node to drm_view_transform_supported
Rename it as well.

By passing the paint node we'll have access to the cached buffer to output
matrix later.

Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
2023-01-09 21:58:19 +00:00
Derek Foreman
2a1a8994c4 drm: Cache buffer to output matrix in paint node
We use this a few times for plane tests, so we can cache it here to avoid
recalculating it.

Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
2023-01-09 21:58:19 +00:00
Derek Foreman
7c7489fe79 drm: Pass paint node to drm_plane_state_coords_for_view
Rename the function as well, as it no longer takes a view.

Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
2023-01-09 21:58:19 +00:00
Derek Foreman
a65ba82232 drm: Pass paint node to drm_output_try_view_on_plane
Rename the function as it no longer tests views, but paint nodes.

Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
2023-01-09 21:58:19 +00:00
Derek Foreman
263e78d0fc drm: Pass paint node to cursor view prep function
Rename this as well, since it no longer takes a view.

Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
2023-01-09 21:58:19 +00:00
Derek Foreman
567ed2706a drm: pass paint node to drm_fb_get_from_view
This is a preamble to saving a bit of matrix maths.

Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
2023-01-09 21:58:19 +00:00
Marius Vlad
0b9620b83e fullscreen-shell: Trigger output repaints
This fixes up fullscreen-shell as with commit 'libweston: Update view
transforms more often' we no longer trigger output repaints making the
RPD backend (mostly) unsable.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
2023-01-09 14:33:40 +02:00
Daniel Stone
50809097a8 man: Rewrite Xwayland section
Try to make it more useful and accessible to users. And capitalise it
correctly.

Signed-off-by: Daniel Stone <daniels@collabora.com>
2023-01-03 11:12:03 +02:00
Daniel Stone
a14fa9071c man: Make --config vs. --no-config more explicit
Signed-off-by: Daniel Stone <daniels@collabora.com>
2023-01-03 11:12:03 +02:00
Daniel Stone
5ffda17e21 man: Alphabetise weston command-line options
Signed-off-by: Daniel Stone <daniels@collabora.com>
2023-01-03 11:12:03 +02:00
Daniel Stone
515708040a README: Reorder sections, rewrite intro + libweston
Reorder the sections into what people care about: what is it, how do I
build it, how do I run it, where are the docs for when I want to do
more?

The libweston section has been substantially rewritten to trim the
details down to what is accurate and relevant, and the introduction has
accordingly been updated to reflect the reality of Weston as a project
today.

Signed-off-by: Daniel Stone <daniels@collabora.com>
2023-01-03 11:12:03 +02:00
Daniel Stone
6c3eb6b17e README: Make doc section more useful
Not only are Sphinx and Breathe clearly not placeholders by this point,
but no-one really cares about the development history, just what it
means to them, i.e. how to use it.

Signed-off-by: Daniel Stone <daniels@collabora.com>
2023-01-03 11:12:03 +02:00
Daniel Stone
1a94c4a3cb README: Delete misleading API-versioning section
All of this sounded nice, but none of this was true.

Signed-off-by: Daniel Stone <daniels@collabora.com>
2023-01-03 11:12:03 +02:00
Daniel Stone
f825def623 README: Delete packager-guidance section
To the extent that it's accurate, it's already obvious. Packagers have
figured out how to package it anyway.

Signed-off-by: Daniel Stone <daniels@collabora.com>
2023-01-03 11:12:03 +02:00
Daniel Stone
e716d8550b README: Fix wayland-protocols URL
It's on GitLab now.

Signed-off-by: Daniel Stone <daniels@collabora.com>
2023-01-03 11:12:03 +02:00
Daniel Stone
0278383e38 README: Delete reference to GNOME and KDE
No need to itemise every environment around; it's common enough these
days that people can work it out.

Signed-off-by: Daniel Stone <daniels@collabora.com>
2023-01-03 11:12:03 +02:00
Daniel Stone
651df5b587 man: Update ancient URLs
We don't use Bugzilla, and we also have TLS on our site.

Signed-off-by: Daniel Stone <daniels@collabora.com>
2023-01-03 11:12:03 +02:00
Andrei Makeev
5b7561b25d compositor: don't pass the signal flags to autolaunched process
Signed-off-by: Andrei Makeev <amaksoft@gmail.com>
2022-12-30 14:06:22 +00:00
Marius Vlad
ab1a3c8164 libweston/input: update view transforms when handling touch_down
Another leftover from d611ab24 "libweston: Update view transforms more
often".

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
2022-12-30 14:02:59 +00:00
Daniel Stone
03dd560d45 tests: Don't leak single-pixel-buffer factory object
Signed-off-by: Daniel Stone <daniels@collabora.com>
2022-12-29 17:41:24 +00:00
Daniel Stone
5a26809560 tests: Store output description into correct field
We were storing the output description into the name field, which was
harmless but did cause a leak.

Signed-off-by: Daniel Stone <daniels@collabora.com>
2022-12-29 17:41:24 +00:00
Leandro Ribeiro
04cc477afa libweston/input: update view transforms when handling confined pointer motion
When the pointer is confined and we are handling motion, we need
up-to-date view transforms in order to respect the confinement. So
update view transforms in such case.

This fixes an issue in which we'd try to transform views with dirty
transforms in weston_pointer_clamp_event_to_region(), hitting an assert.

This is a leftover of d611ab24 "libweston: Update view transforms more
often".

Signed-off-by: Leandro Ribeiro <leandro.ribeiro@collabora.com>
2022-12-19 17:05:37 -03:00
Philipp Zabel
ce4cf2d060 backend-vnc: move accumulated damage with output
When the output is moved, move its per-framebuffer accumulated damage
with it. The alternative would be to track accumulated damage in the
local output coordinate system, but that would require translating back
into global coordinates for repaint_output.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
2022-12-16 15:51:27 +02:00
Philipp Zabel
0ece6cb436 compositor: configure VNC output size via weston.ini
Use parse_simple_mode() to allow configuring the VNC framebuffer size
with a mode property in weston.ini, like this:

  [output]
  name=vnc
  mode=1280x720

Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
2022-12-16 15:37:12 +02:00
Philipp Zabel
553387dd07 compositor: extract mode parsing from windowed output configuration
To make it reusable, extract parse_simple_mode() from
wet_configure_windowed_output_from_config().

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
2022-12-16 15:37:11 +02:00
Philipp Zabel
0706569ac9 linux-dmabuf: add missing includes and declarations
Currently linux-dmabuf.h implicitly depends on libweston.h being
included before it. Instead of adding missing includes for bool,
dev_t, struct timespec, struct weston_compositor,
struct weston_drm_format_array, struct wl_array, and struct wl_list,
just include libweston.h.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
2022-12-16 15:05:10 +02:00
Michael Olbrich
a943e5e70e compositor: commit subsurfaces before the main surface
The main surface commit includes the xdg surface commit. Here, the
accumulated surface size is validated. All subsurfaces must be comitted
first to ensure that the corrent current values are used.

Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
2022-12-16 08:32:29 +00:00
Pekka Paalanen
212c666ab5 backend-wayland: use gl-borders
Use the gl-renderer border code shared with headless-backend. We can
drop all this open-coded stuff.

In the output disable path, make sure to call this only when gl-renderer
is used. It will also reset the border state in gl-renderer, which is
harmless here, and it's necessary in the resize path.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
2022-12-14 11:57:24 +00:00
Pekka Paalanen
e619a65b09 libweston: move gl-borders code into helper lib
Move this code from headless-backend to a helper library, so it can be
shared with wayland-backend.

gl-renderer.h was missing #pragma once, which made the build fail.

Unfortunately gl-borders needs gl-renderer.h which will attempt to
include EGL headers if gl-renderer is enabled in the build, so we must
get the EGL build flags too, just for the headers.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
2022-12-14 11:57:24 +00:00
Pekka Paalanen
c57112a40a backend-headless: refactor into weston_gl_borders
Refactor this code into two backend-agnostic functions, that in the next
step can be moved into code shared between backends.

Pure refactoring, no changes.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
2022-12-14 11:57:24 +00:00
Pekka Paalanen
5522f73559 backend-headless: clean up gl border data pointer
GL-renderer keeps the pointer for the border image data for later use.
When we destroy our cairo_surface, that data gets freed. Therefore,
reset the pointer stored by GL-renderer too, to ensure use-after-free
cannot happen.

This is not really necessary in this particular case, because the
renderer output is destroyed immediately after, so there is no chance of
UAF.

However, this is needed for code sharing purposes. Wayland-backend will
do exactly this when an output is resized. To share this code with
wayland-backend, we also need to reset the pointers. It's harmless and
more correct in the output disable path.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
2022-12-14 11:57:24 +00:00
Pekka Paalanen
f47ed7894c backend-headless: use a loop in update_gl_border
Replace a bunch of copied code with a loop over a simple array. This
makes the code easier to read, and allows further refactoring.

This is pure refactoring, no changes to results or behavior.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
2022-12-14 11:57:24 +00:00
Pekka Paalanen
915d8e8cdf build: simplify dep_egl a bit
Make sure dep_egl is always a valid dependency object, even if not
found. Ensure it is not found when not wanted, to avoid linking when
found but not wanted.

Using a not-found dependency in Meson is defined to be a safe no-op, so
use that to simplify the backend dependencies.

libweston/meson.build already errors out if renderer-gl is enabled and
EGL is not found, so the same checks can be removed from the backends.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
2022-12-14 11:57:24 +00:00
Philipp Zabel
2667829746 libweston: call correct weston_backend::create_output depending on head
Now that struct weston_head contains a pointer to the backend owning
the head, choose to call the same backend's create_output callback.

This will be necessary to support loading multiple backends
simultaneously.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
2022-12-12 17:24:45 +01:00
Philipp Zabel
746a03068e libweston, backends: store backend pointer in struct weston_head
Compositor code can use opaque pointer comparison to determine whether
a head belongs to a given backend. Store a backend pointer in struct
weston_head to enable the compositor to select the correct backend
specific output configuration code.

This also allows to use the backend pointer instead of the opaque
backend_id pointer to check whether a head belongs to a backend, so
replace the checks in all to_xyz_head() functions and drop backend_id.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
2022-12-12 15:21:16 +01:00
Philipp Zabel
1e901fa2b7 backend-vnc: drop unnecessary output release
No output is created at this point. Even if an output existed,
it should be relased when the head ist destroyed.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
2022-12-12 13:55:20 +01:00
Philipp Zabel
635aa225c6 backend-vnc: set flags of current mode instead of template
vnc_ensure_matching_mode() does not transfer flags from init_mode.
Set flags on the returned mode instead.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
2022-12-12 13:55:20 +01:00
Philipp Zabel
853eb7327f backend-vnc: set head properties in vnc_head_create
Set static monitor strings and physical size once, on head creation.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
2022-12-12 13:55:20 +01:00
Philipp Zabel
233e056b50 backend-vnc: allocate mode with xzalloc
Let xzalloc warn and abort when running out of memory.
With this, vnc_insert_new_mode() and vnc_ensure_matching_mode() can not
return NULL anymore. Remove the now unnecessary error handling.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
2022-12-12 13:55:20 +01:00
Philipp Zabel
1e6e885e36 backend-vnc: allocate head with xzalloc
Let xzalloc warn and abort when running out of memory.
With this, vnc_head_create() doesn't need an error return value anymore.
Remove the now unnecessary error handling.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
2022-12-12 13:55:20 +01:00