platform/upstream/weston.git
4 years agoCI: Bump ci-templates dependency for working pip
Daniel Stone [Wed, 11 Dec 2019 15:22:24 +0000 (15:22 +0000)]
CI: Bump ci-templates dependency for working pip

wayland/ci-templates!18 allows the $HOME environment variable to
propagate into the execution of creating our build container. Without
that, buildah would leave us with an empty $HOME, which would have pip
install into /.local/bin.

As $HOME is preserved during our actual native builds, we would try to
find meson in /root/.local/bin and fail, since it had been stored to a
different path.

Bump the ci-templates dependency to one with the fix so we can build new
images again.

Signed-off-by: Daniel Stone <daniels@collabora.com>
4 years agobackend-drm: Define potentially missing aspect-ratio bit definitions
Stefan Agner [Mon, 9 Dec 2019 12:06:36 +0000 (13:06 +0100)]
backend-drm: Define potentially missing aspect-ratio bit definitions

The aspect ratio definitions for 64:27 and 256:135 have been added with
libdrm 2.4.95. However, Weston currently depends on libdrm 2.4.89 or
higher. Define the definitions in Weston to support libdrm older than
2.4.95.

Fixes: #332
Fixes: 6093772f45a4 ("backend-drm: Use aspect-ratio bit definitions from libdrm")
Signed-off-by: Stefan Agner <stefan@agner.ch>
4 years agorenderer: change all frame_signal emission to pass previous_damage
Stefan Agner [Mon, 9 Dec 2019 12:26:57 +0000 (13:26 +0100)]
renderer: change all frame_signal emission to pass previous_damage

Commit adaf8c7410da ("renderer: change frame_signal emission to pass
previous_damage as data argument") missed updating all frame_signal
emissions. Later commit 2619bfe420 ("move frame_signal emission to
weston_output_repaint()") fixed this deficency along with moving the
location of the emission. Due to an issue of the location change, this
commit had to be reverted again.

This makes sure that the pixman as well as the GL renderer now also
emits the damage region instead of the Weston output.

Fixes: adaf8c7410da ("renderer: change frame_signal emission to pass previous_damage as data argument")
Signed-off-by: Stefan Agner <stefan@agner.ch>
4 years agobuild: bump to version 7.0.91 for the alpha release
Simon Ser [Fri, 6 Dec 2019 19:30:51 +0000 (20:30 +0100)]
build: bump to version 7.0.91 for the alpha release

4 years agolibweston: remove previous_damage from struct weston_output
Leandro Ribeiro [Fri, 29 Nov 2019 02:04:46 +0000 (23:04 -0300)]
libweston: remove previous_damage from struct weston_output

The member previous_damage from struct weston_output is no longer necessary.
First, stop calling init, fini and copying output_damage to it. Then remove
it from struct weston_output.

Signed-off-by: Leandro Ribeiro <leandrohr@riseup.net>
4 years agogitlab-ci: Update ci-templates to latest SHA commit
Marius Vlad [Tue, 3 Dec 2019 16:03:42 +0000 (18:03 +0200)]
gitlab-ci: Update ci-templates to latest SHA commit

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
4 years agoRevert "move frame_signal emission to weston_output_repaint()"
Leandro Ribeiro [Tue, 3 Dec 2019 15:22:11 +0000 (12:22 -0300)]
Revert "move frame_signal emission to weston_output_repaint()"

The emission of frame_signal has to happen before a flip, otherwise
glReadPixels() could read an old frame or even worse an uninitialized buffer.
So move frame_signal emission back to renderers.

This reverts commit 2619bfe420c493b0adef57cf2f57b3b5fe7d7078.

Signed-off-by: Leandro Ribeiro <leandrohr@riseup.net>
4 years agoclients: remove leftover from simple-dmabuf-drm
Simon Ser [Mon, 2 Dec 2019 09:43:06 +0000 (10:43 +0100)]
clients: remove leftover from simple-dmabuf-drm

This header is not used anymore.

Signed-off-by: Simon Ser <contact@emersion.fr>
Fixes: 0a4f6e7d6d63 ("clients: drop simple-dmabuf-drm")
Reported-by: Marius Vlad <marius.vlad@collabora.com>
4 years agoxwayland: Remove unused variable
Link Mauve [Sat, 30 Nov 2019 22:16:22 +0000 (22:16 +0000)]
xwayland: Remove unused variable

4 years agooption-parser: Make bools boolean
Daniel Stone [Tue, 26 Nov 2019 00:32:22 +0000 (00:32 +0000)]
option-parser: Make bools boolean

When option-parser is confronted with a boolean option, have it write a
bool rather than treating the value as a pointer to an int32.

(lib)weston already heavily uses bool types internally, so this has the
nice side effect of eliminating quite a few local variables which only
existed as integer shadows of internal boolean variables.

Signed-off-by: Daniel Stone <daniels@collabora.com>
4 years agotests/config-parser: Remove useless duplicate test
Daniel Stone [Tue, 26 Nov 2019 00:16:35 +0000 (00:16 +0000)]
tests/config-parser: Remove useless duplicate test

test012 and test013 were exact duplicates of each other: asserting that
they could successfully look up a single boolean value.

Signed-off-by: Daniel Stone <daniels@collabora.com>
4 years agoconfig-parser: Make get_bool be bool
Daniel Stone [Tue, 26 Nov 2019 00:14:24 +0000 (00:14 +0000)]
config-parser: Make get_bool be bool

Wayland innovated a lot of cool things, but non-binary boolean values is
the great advances of our time.

Make config_parser_get_bool() work on boolean values, and switch all its
users.

Signed-off-by: Daniel Stone <daniels@collabora.com>
4 years agoclients: drop simple-dmabuf-drm
Simon Ser [Tue, 16 Jul 2019 12:18:25 +0000 (15:18 +0300)]
clients: drop simple-dmabuf-drm

This client contains driver-specific code to allocate buffers. However clients
shouldn't contain driver-specific code and should rely on e.g. mesa to allocate
buffers via standard interfaces.

Additionally, because the build system always tries to enable all features, some
experimental drivers and drivers that aren't included in amd64 distribution
packages were required. Users would need to manually disable some drivers.
Releasers would need to install libdrm from source (because the release process
forbids adding custom build flags). Dropping simple-dmabuf-drm simplifies both
building and releasing.

The functionality previously tested via simple-dmabuf-drm can now be tested with
simple-dmabuf-egl.

Signed-off-by: Simon Ser <contact@emersion.fr>
4 years agobackend-drm: Use aspect-ratio bit definitions from libdrm
Daniel Stone [Tue, 26 Nov 2019 10:48:12 +0000 (10:48 +0000)]
backend-drm: Use aspect-ratio bit definitions from libdrm

When the aspect-ratio-aware mode support was added to Weston, it was
done before the libdrm support was finalised and merged. Between it
being added to Weston and being merged, it changed to no longer provide
the offset for the bitmask.

Instead of using the mask and a compatible enum, if we update our
libdrm dependency, we can use the flag definitions directly from libdrm.

In 94e4068ba171, the libdrm dependency was bumped to 2.4.83, which
enabled us to remove a bunch of error-prone ifdefs by making atomic and
modifier support mandatory.

We determined in the discussion of !311 that it was safe to push the
dependency as high as 2.4.91, as that was what was available in major
distributions.

Bumping to 2.4.86 allows us to safely remove the ifdef and go with
upstream flags, as that was added in mesa/drm@0d889201d106.

Signed-off-by: Daniel Stone <daniels@collabora.com>
4 years agoscreen-share: get previous_damage from data argument instead of weston_output
Leandro Ribeiro [Wed, 27 Nov 2019 16:43:02 +0000 (13:43 -0300)]
screen-share: get previous_damage from data argument instead of weston_output

Instead of getting previous_damage from the weston_output struct, get it from
the frame_signal data argument. This will make possible to remove
previous_damage from weston_output after we decide what to do with
output->previous_damage usage in DRM backend.

Signed-off-by: Leandro Ribeiro <leandrohr@riseup.net>
4 years agoscreenshooter: get previous_damage from data argument instead of weston_output
Leandro Ribeiro [Wed, 27 Nov 2019 16:02:24 +0000 (13:02 -0300)]
screenshooter: get previous_damage from data argument instead of weston_output

Instead of getting previous_damage from the weston_output struct, get it from
the frame_signal data argument. This will make possible to remove
previous_damage from weston_output after we decide what to do with
output->previous_damage usage in DRM backend.

Signed-off-by: Leandro Ribeiro <leandrohr@riseup.net>
4 years agorenderer: change frame_signal emission to pass previous_damage as data argument
Leandro Ribeiro [Wed, 27 Nov 2019 14:20:47 +0000 (11:20 -0300)]
renderer: change frame_signal emission to pass previous_damage as data argument

This will make possible to users that are listening to frame_signal to get
previous_damage from the data parameter instead of using
output->previous_damage.

Signed-off-by: Leandro Ribeiro <leandrohr@riseup.net>
4 years agotests: stop using frame_signal 'void *data' argument to get weston_output
Leandro Ribeiro [Wed, 27 Nov 2019 15:47:19 +0000 (12:47 -0300)]
tests: stop using frame_signal 'void *data' argument to get weston_output

Instead of getting weston_output from the frame_signal argument 'void *data',
add weston_output in the private data struct of the users that are listening
to frame_signal. With this change we are able to pass previous_damage as the
data argument.

Signed-off-by: Leandro Ribeiro <leandrohr@riseup.net>
4 years agoscreenshooter: stop using frame_signal void *data parameter to get weston_output
Leandro Ribeiro [Wed, 27 Nov 2019 15:43:01 +0000 (12:43 -0300)]
screenshooter: stop using frame_signal void *data parameter to get weston_output

Instead of getting weston_output from the frame_signal argument 'void *data',
add weston_output in the private data struct of the users that are listening
to frame_signal. With this change we are able to pass previous_damage as the
data argument.

Signed-off-by: Leandro Ribeiro <leandrohr@riseup.net>
4 years agomove frame_signal emission to weston_output_repaint()
Leandro Ribeiro [Mon, 25 Nov 2019 15:31:46 +0000 (12:31 -0300)]
move frame_signal emission to weston_output_repaint()

In order to remove duplication and make the code easier to follow, move
frame_signal emission from renderers to weston_output_repaint(). This should
have no observable effect.

Signed-off-by: Leandro Ribeiro <leandrohr@riseup.net>
4 years agogl-renderer: Add support for XYUV format (v2)
Vivek Kasireddy [Thu, 21 Feb 2019 01:28:48 +0000 (17:28 -0800)]
gl-renderer: Add support for XYUV format (v2)

Accept XYUV dmabuf buffers that a client application such as
weston-simple-dmabuf-v4l might submit.

v2 (Daniel):
Add XYUV to yuv_formats array to have the compositor color convert
with a shader if GL_TEXTURE_EXTERNAL_OES does not work.

Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>
4 years agogl-renderer: Replace EGL_*_WL macros with locally defined enums
Vivek Kasireddy [Wed, 24 Apr 2019 22:40:47 +0000 (15:40 -0700)]
gl-renderer: Replace EGL_*_WL macros with locally defined enums

Instead of using the EGL_*_WL macros imported from EGL headers,
start using enums that would be defined locally. This is needed as
there are limited number of macros defined in EGL headers and
adding new ones is not practically feasible when adding a new
texture type. (suggested by Daniel Stone)

Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>
4 years agodesktop-shell: Set 1x1 buffers for solid-color backgrounds
Harish Krupo [Tue, 11 Dec 2018 08:29:07 +0000 (13:59 +0530)]
desktop-shell: Set 1x1 buffers for solid-color backgrounds

When we are going to set a solid color for the background, use
a 1x1 buffer and set the viewport to the full size. This avoids
un-necessary allocation of buffer memory.

Signed-off-by: Harish Krupo <harish.krupo.kps@intel.com>
4 years agoclients/window: Add viewport destination support
Harish Krupo [Tue, 11 Dec 2018 08:15:43 +0000 (13:45 +0530)]
clients/window: Add viewport destination support

Add support for setting the widget's destination wp viewport.
Setting it in the widget instead of being set directly by the client
ensure that the widget can be identified in widget_find_widget.

v2: Return -1 on error (Pekka)
    Scale allocated x and y when viewport is set (Pekka)
    Allow user to set -1 for viewport width and height (Pekka)

v3: Use NULL instead of 0 (Daniel)
    return 0 if width and height are -1 (Daniel)

Signed-off-by: Harish Krupo <harish.krupo.kps@intel.com>
4 years agoclients/fullscreen: Refuse to resize the surface size when fullscreen'ed
Marius Vlad [Sun, 25 Aug 2019 19:33:41 +0000 (22:33 +0300)]
clients/fullscreen: Refuse to resize the surface size when fullscreen'ed

This would be causing a protocol error in which the buffer size needs to
match the one provided in the configure event.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
4 years agodoc/scripts/gdb: Added gdb script to dump contents of the flight recorder
Marius Vlad [Fri, 19 Jul 2019 08:29:53 +0000 (11:29 +0300)]
doc/scripts/gdb: Added gdb script to dump contents of the flight recorder

Mimics the C version that displays the contents of the flight recorder.
With a core-dump in place source the python file then call
'display_flight_rec' to dump the data.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
4 years agoweston-log-flight-rec: Fix useless comparison when displaying the
Marius Vlad [Wed, 7 Aug 2019 14:21:49 +0000 (17:21 +0300)]
weston-log-flight-rec: Fix useless comparison when displaying the
contents of the flight recorder

The overlap variable is sufficient to determine from where to start
displaying the contents of the ring buffer. Also redundant to verify
if the position in the buffer went over the maximum size.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Reported-by: Pekka Paalanen <pekka.paalanen@collabora.com>
4 years agoweston-log-flight-rec: Don't allow more than one flight recorder to be
Marius Vlad [Wed, 7 Aug 2019 14:18:37 +0000 (17:18 +0300)]
weston-log-flight-rec: Don't allow more than one flight recorder to be
created

Having a (single) global variable which others depend on it implies
having a single flight recorder present. Until we have a reason to
support multiple flight recorders limit the amount to a maximum of one.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Reported-by: Pekka Paalanen <pekka.paalanen@collabora.com>
4 years agoweston-log-flight-rec: Add a global variable to access the ring buffer
Marius Vlad [Thu, 18 Jul 2019 14:04:37 +0000 (17:04 +0300)]
weston-log-flight-rec: Add a global variable to access the ring buffer

With it add also a function which can be used in an assert()-like
situation to display the contents of the ring buffer. Within gdb
this call also be called if the program is loaded/still loaded into
memory.

The global variable will be used in a later patch to be accessed from a
python gdb script.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
4 years agosimple-dmabuf-egl: make application generic
Veeresh Kadasani [Fri, 15 Nov 2019 05:37:16 +0000 (14:37 +0900)]
simple-dmabuf-egl: make application generic

Don't exit if EGL_KHR_no_config_context extension
is not supported

Signed-off-by: Veeresh Kadasani <external.vkadasani@jp.adit-jv.com>
4 years agoconfig-parser: Export get_full_path and destroy
Daniel Stone [Mon, 25 Nov 2019 10:30:11 +0000 (10:30 +0000)]
config-parser: Export get_full_path and destroy

Make sure we export the get_full_path() accessor (declared in the
header, used by Weston itself) and the parser's destroy function.

Signed-off-by: Daniel Stone <daniels@collabora.com>
4 years agolibweston: do not include weston.h
Pekka Paalanen [Mon, 25 Nov 2019 11:11:56 +0000 (13:11 +0200)]
libweston: do not include weston.h

Libweston is not allowed to depend on Weston. Fortunately this include is
unnecessary and can be simply removed.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
4 years agobackend-drm: remove unnecessary ifdefs
Leandro Ribeiro [Sat, 23 Nov 2019 16:15:52 +0000 (13:15 -0300)]
backend-drm: remove unnecessary ifdefs

Remove unnecessary ifdefs for DRM_MODE_CONNECTOR_DSI, DRM_MODE_CONNECTOR_DPI.
They are both provided by libdrm and were introduced long before 2.4.83 (the
lowest version we currently support).

Signed-off-by: Leandro Ribeiro <leandrohr@riseup.net>
4 years agobackend-drm: remove unecessary ifdef checks
Leandro Ribeiro [Fri, 22 Nov 2019 19:55:56 +0000 (16:55 -0300)]
backend-drm: remove unecessary ifdef checks

Since commit 28d26483 ("build: bump libdrm requirement to newer version
(2.4.83)"), all supported libdrm versions provide modifier formats,
atomic API and blob formats. Remove ifdef checks (HAVE_DRM_ADDFB2_MODIFIERS,
HAVE_DRM_ATOMIC, HAVE_DRM_FORMATS_BLOB) to improve the code and make it
simpler.

Signed-off-by: Leandro Ribeiro <leandrohr@riseup.net>
4 years agobuild: bump libdrm requirement to newer version (2.4.83)
Leandro Ribeiro [Fri, 22 Nov 2019 17:45:33 +0000 (14:45 -0300)]
build: bump libdrm requirement to newer version (2.4.83)

There are some features that are available only if the user's libdrm version is
not too old: format modifiers require at least libdrm 2.4.71, atomic API at
least 2.4.78 and blob formats at least 2.4.83.

Bump libdrm to 2.4.83 (the oldest version that support these features) in order
to be able to remove ifdef checks and simplify the code. Major distributions
already support libdrm 2.4.91, so it's safe to apply this commit.

Signed-off-by: Leandro Ribeiro <leandrohr@riseup.net>
4 years agobackend-drm: Further checks to skip plane assignment to HW planes
Marius Vlad [Fri, 15 Nov 2019 12:11:49 +0000 (14:11 +0200)]
backend-drm: Further checks to skip plane assignment to HW planes

Mode change from mixed-mode to renderer-only means we should no longer
try to place views in HW planes (as we composite everything into the
primary plane) thus we should avoid that whenever that happens.

In the same time we need to be able to place in mixed-mode/renderer-only
mode the cursor view into the cursor plane (if one is available).

This patch adds a further check to skip plane assignment when disabling
overlay support (when we switch to renderer-only mode), when drivers do
not have atomic-modeset or it has been disabled intentionally.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
4 years agobackend-drm: Turn zpos duplicate check into an hard assert
Marius Vlad [Fri, 15 Nov 2019 12:32:08 +0000 (14:32 +0200)]
backend-drm: Turn zpos duplicate check into an hard assert

This way we make sure we find out (if we have assigned invalid zpos
values) much faster.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
4 years agobackend-drm: Skip testing plane state if plane is not enabled
Marius Vlad [Thu, 14 Nov 2019 22:25:11 +0000 (00:25 +0200)]
backend-drm: Skip testing plane state if plane is not enabled

Adds a further assert() to make sure we're not checking against invalid
values. This was seen in the wild when the kernel rejects the commit for
overlay resulting in a check for invalid zpos values.

Fixes: #304

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
4 years agobackend-drm: Assign the primary plane the lowest zpos value
Marius Vlad [Fri, 15 Nov 2019 11:33:38 +0000 (13:33 +0200)]
backend-drm: Assign the primary plane the lowest zpos value
when switching to mixed-mode of compositing

This way we avoid an (incorrect) duplicate check of zpos values. Also,
this would be needed because the renderer needs have the lowest zpos value
available as we don't (yet) properly support underlays, the primary
plane serves as our renderer.

Adds also a check to see if we try to assign a view to a plane with
a lower zpos value than the one assigned to the primary when switching
to mixed-mode of compositing.

Fixes: #304

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
4 years agotests: drop FAIL_TEST
Pekka Paalanen [Mon, 18 Nov 2019 14:47:45 +0000 (16:47 +0200)]
tests: drop FAIL_TEST

Nothing is using FAIL_TEST or FAIL_TEST_P and that is good. Remove them to not
encourage using them.

If we need a test that should fail, it always needs to fail in a very specific
way which needs to be checked. For this we have e.g. expect_protocol_error().
We never want a fail-test to pass because it failed in a way we did not expect.
Therefore these macros are useless.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
4 years agotests/ivi: rename test_section
Pekka Paalanen [Mon, 11 Nov 2019 13:18:51 +0000 (15:18 +0200)]
tests/ivi: rename test_section

Use a different section name to make sure that if this plugin is loaded into
the same process as where weston-test-runner.h is used, the two different
sections cannot get mixed up. This is just a precaution, but it removes a bit
of reader confusion as well.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
4 years agotests: rename struct weston_test to weston_test_entry
Pekka Paalanen [Thu, 7 Nov 2019 11:34:59 +0000 (13:34 +0200)]
tests: rename struct weston_test to weston_test_entry

This avoids confusing it with the opaque struct weston_test from
protocol/weston-test.xml.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
4 years agotests/xwayland: do not call exit(SUCCESS)
Pekka Paalanen [Wed, 6 Nov 2019 14:09:00 +0000 (16:09 +0200)]
tests/xwayland: do not call exit(SUCCESS)

Successful tests should just return, not call exit() which breaks the new test
harness when it uses TAP.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
4 years agotests: replace fprintf() with testlog()
Pekka Paalanen [Wed, 6 Nov 2019 13:59:33 +0000 (15:59 +0200)]
tests: replace fprintf() with testlog()

When we move on to TAP, stdout will be reserved for TAP and stderr is for free
chatter. Set up an example that tests should use testlog() instead of fprintf
or printf to chat in the right place.

Most statements were already printing to stderr, so this just makes then a
little shorter. There are also some statements that printed to stdout and are
now corrected.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
4 years agotests/subsurface-shot: hardcode reference image names
Pekka Paalanen [Fri, 15 Nov 2019 13:48:08 +0000 (15:48 +0200)]
tests/subsurface-shot: hardcode reference image names

Using the test name for the reference images will stop working when the new
test harness starts using fixtures. Fixtures allow running the same tests in
varying environments, so the test results file names will include fixture
index. However the reference images will remain the same for all fixtures.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
4 years agotests: write image to current directory by default
Pekka Paalanen [Fri, 1 Nov 2019 14:27:07 +0000 (16:27 +0200)]
tests: write image to current directory by default

This reverts 50b7b708352dbf0d6670d9ae5668e3c215e28662.

We didn't make Meson create a logs directory, so writing the images fails
because the directory does not exist. If you run a test without Meson, there is
even less expectation that it would write somewhere else than CWD by default.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
4 years agoclients: Add more sanity checks to catch destroyed window
Jeffy Chen [Mon, 2 Sep 2019 02:26:09 +0000 (10:26 +0800)]
clients: Add more sanity checks to catch destroyed window

Add a sanity check to touch_handle_down() and data_device_enter() as
what we did for pointer and keyboard.

Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
4 years agoclients: Drop corresponding touch points when destroying windows
Jeffy Chen [Mon, 2 Sep 2019 02:15:26 +0000 (10:15 +0800)]
clients: Drop corresponding touch points when destroying windows

This is to avoid memory leaking of these touch points.

Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
4 years agoxwm: Use Xwayland allow commits for repaint
Olivier Fourdan [Fri, 8 Nov 2019 17:31:13 +0000 (18:31 +0100)]
xwm: Use Xwayland allow commits for repaint

Initially, `_XWAYLAND_ALLOW_COMMITS` was introduced in commit 7ace831ca
to avoid drawing the window content before it's ready to be shown.

But a repaint might also be triggered by the client damages before the
XWM has finished drawing its window decorations and drop shadows, which
previously was not too much of an issue since the XWM could still
finish updating the X11 window after the buffer was submitted.

However, with the addition of multiple window buffers in Xwayland [1]
which are aimed at preventing the X11 clients from updating the buffer
after it's been committed, this is no longer possible.

As a result, the use of multiple window buffers in Xwayland can cause
ugly repainting effects of the decorations if the buffer is submitted
before the XWM has finished painting its decorations.

Use the X11 property `_XWAYLAND_ALLOW_COMMITS` can be used to avoid
this, by controlling when Xwayland should commit changes to the Wayland
surface.

[1] https://gitlab.freedesktop.org/xorg/xserver/merge_requests/316
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
4 years agocompositor: allow double-loading modules
Pekka Paalanen [Mon, 4 Nov 2019 12:07:51 +0000 (14:07 +0200)]
compositor: allow double-loading modules

This is necessary for the test harness to be able to execute the compositor
multiple times in the same process. As we never unload opened modules, the
first compositor iteration will leave them all loaded and following compositor
iterations will then have them already loaded.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
4 years agolibweston: allow double-loading modules
Pekka Paalanen [Mon, 4 Nov 2019 12:07:51 +0000 (14:07 +0200)]
libweston: allow double-loading modules

This is necessary for the test harness to be able to execute the compositor
multiple times in the same process. As we never unload opened modules, the
first compositor iteration will leave them all loaded and following compositor
iterations will then have them already loaded.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
4 years agoUse weston_compositor_add_destroy_listener_once() in plugins
Pekka Paalanen [Wed, 6 Nov 2019 10:59:32 +0000 (12:59 +0200)]
Use weston_compositor_add_destroy_listener_once() in plugins

This introduces a new convention of checking through the compositor destroy
listener if the plugin is already initialized. If the plugin is already
initialized, then the plugin entry function succeeds as a no-op. This makes it
safe to load the same plugin multiple times in a running compositor.

Currently module loading functions return failure if a plugin is already
loaded, but that will change in the future. Therefore we need this other method
of ensuring we do not double-initialize a plugin which would lead to list
corruptions the very least.

All plugins are converted to use the new helper, except:
- those that do not have a destroy listener already, and
- hmi-controller which does the same open-coded as the common code pattern
  did not fit there.

Plugins should always have a compositor destroy listener registered since they
very least allocate a struct to hold their data. Hence omissions are
highlighted in code.

Backends do not need this because weston_compositor_load_backend() already
protects against double-init. GL-renderer does not export a standard module
init function so cannot be initialized the usual way and therefore is not
vulnerable to double-init.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
4 years agocolord: remove destroy listener on clean-up
Pekka Paalanen [Wed, 6 Nov 2019 10:07:23 +0000 (12:07 +0200)]
colord: remove destroy listener on clean-up

This was forgetting to remove the compositor destroy listener, which would lead
to use-after-free on compositor tear-down especially on cms-colord init failure
paths. Found by inspection.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
4 years agoivi-shell: fix init error path
Pekka Paalanen [Wed, 6 Nov 2019 10:07:23 +0000 (12:07 +0200)]
ivi-shell: fix init error path

This was forgetting to remove the compositor destroy listener if init failed,
which would lead to use-after-free on compositor tear-down. Found by
inspection.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
4 years agotests: fix test-shell init error path
Pekka Paalanen [Wed, 6 Nov 2019 10:07:23 +0000 (12:07 +0200)]
tests: fix test-shell init error path

This was forgetting to remove the compositor destroy listener if init failed,
which would lead to use-after-free on compositor tear-down. Found by
inspection.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
4 years agotests: remove static data from presentation
Pekka Paalanen [Wed, 13 Nov 2019 13:50:51 +0000 (15:50 +0200)]
tests: remove static data from presentation

While get_presentation() will only ever be called once (making the caching of
the return value moot), it is good to stop using the static variable as it
would cause surprising problems if anyone adds more tests here and runs it
under the new test harness.

It was leaked before and continues to be so.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
4 years agotests: remove static data from ivi-layout-test-client
Pekka Paalanen [Tue, 5 Nov 2019 15:03:34 +0000 (17:03 +0200)]
tests: remove static data from ivi-layout-test-client

Using static data will mess things up when the test harness no longer fork()'s
each sub-test. Hence it needs to be converted to "normal" data.

Unfortunately here the cached value was actually used, so keeping that
behaviour is a handful. Yes, it was all leaked also before.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
4 years agotests: remove static data from ivi-shell-app-test
Pekka Paalanen [Tue, 5 Nov 2019 14:47:10 +0000 (16:47 +0200)]
tests: remove static data from ivi-shell-app-test

Just one test call this only once, so the cached value will never be useful.

Stop using static data, it sets a bad example. If more tests were added, things
would start failing when forking is removed from the test harness.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
4 years agotests: remove static data from ivi-layout-test-plugin
Pekka Paalanen [Tue, 5 Nov 2019 14:32:18 +0000 (16:32 +0200)]
tests: remove static data from ivi-layout-test-plugin

I cannot see any reason why this should be static data. But if it is static
data, it will prevent re-entering wet_main() to run tests with this plugin, so
replace it with "normal" data.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
4 years agotests: remove static data from viewporter
Pekka Paalanen [Tue, 5 Nov 2019 13:40:25 +0000 (15:40 +0200)]
tests: remove static data from viewporter

This caching is actually never hit. I tested by making the early return abort()
instead and all works just fine.

Remove the caching. The static variable will cause problems when we stop
fork()'ing for each test case.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
4 years agoclients/simple-dmabuf-drm: Make use of direct-display
Marius Vlad [Sun, 17 Nov 2019 14:21:14 +0000 (16:21 +0200)]
clients/simple-dmabuf-drm: Make use of direct-display

Uses weston-direct-display extension.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
4 years agoclients/simple-dmabuf-egl: Make use of direct-display
Marius Vlad [Sat, 16 Nov 2019 18:40:13 +0000 (20:40 +0200)]
clients/simple-dmabuf-egl: Make use of direct-display

Uses weston-direct-display extension.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
4 years agorenderer-gl: Display a solid shader color when direct-display is in use
Marius Vlad [Tue, 12 Nov 2019 13:44:43 +0000 (15:44 +0200)]
renderer-gl: Display a solid shader color when direct-display is in use

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
4 years agorenderer-gl: Avoid retrieving the EGL image it direct_display flag was set
Marius Vlad [Tue, 12 Nov 2019 10:18:20 +0000 (12:18 +0200)]
renderer-gl: Avoid retrieving the EGL image it direct_display flag was set

As we avoid importing the buffer in the GPU, when attaching the buffer
we'll not have a valid image to retrieve it from, and as such we'll
avoid touching and setting the surface state shader.

This adds also 'direct_display' to the surface state and with it, sets the
surface state 'direct_display' member whenever the imported buffer will
have the direct-display member set.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
4 years agobackend-drm: Add dmabuf scan-out check for DRM-backend
Marius Vlad [Sun, 10 Nov 2019 22:27:17 +0000 (00:27 +0200)]
backend-drm: Add dmabuf scan-out check for DRM-backend

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
4 years agolibweston: Add the ability to determine if a dmabuf is scanout-capable
Marius Vlad [Sat, 16 Nov 2019 18:26:52 +0000 (20:26 +0200)]
libweston: Add the ability to determine if a dmabuf is scanout-capable

Adds a new callback 'can_scanout_dmabuf' in weston_backend, which
can be set by the back-end do determine if the buffer supplied can be
imported directly by KMS.

This patch adds a wrapper over it, 'weston_compositor_dmabuf_can_scanout'
which is called before importing the dmabuf in the GPU if the
direct_display dmabuf is being set. If that's true and the check
failed, we refuse to create a wl_buffer.

This patch avoids importing in the GPU.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
4 years agolibweston: Add weston-direct-display server side implementation
Marius Vlad [Sat, 16 Nov 2019 17:22:48 +0000 (19:22 +0200)]
libweston: Add weston-direct-display server side implementation

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
4 years agoprotocol: Add weston-direct-display extension
Marius Vlad [Sat, 16 Nov 2019 16:55:17 +0000 (18:55 +0200)]
protocol: Add weston-direct-display extension

Weston extension to assure clients that the dmabuf buffer will be
forwarded directly to the display controller.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
4 years agolibweston: drop a misleading dmabuf comment
Pekka Paalanen [Thu, 14 Nov 2019 13:23:42 +0000 (15:23 +0200)]
libweston: drop a misleading dmabuf comment

This comment was added in 230f3b1bf896fcf3fa76b4d7093122b3361f7e36 with the
intent that if we had an information table about pixel formats (which we do
have today), we could implement more sanity checks like ensuring that width
pixels fit into stride.

Daniel Vetter said on #dri-devel IRC recently:

< danvet> since userspace shouldn't look at stride for buffers with
modifiers, only pass it around unchanged

I asked for clarification. It was expected that userspace would not do any kind
of sanity checks as modifiers could change everything.

Let's remove the misleading code comment so that people don't get the idea of
adding more well-intended but ill-advised sanity checks. If more checks are
added, they must take the modifier into account, which the existing checks do
not do.

After 5 years, it is far too late to remove our existing sanity checks, but we
can attempt to not cause any more damage that would restrict what people can do
in the kernel.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
4 years agocompositor: Fix some warning when passing debugoptimized to meson
Marius Vlad [Wed, 13 Nov 2019 09:40:26 +0000 (11:40 +0200)]
compositor: Fix some warning when passing debugoptimized to meson

Increase the buf size such it can accomodate sufficiently large local
buffers. Spotted whilst looking for something else.

../compositor/main.c:157:22: warning: ‘%s’ directive output may be
truncated writing up to 511 bytes into a region of size 128
[-Wformat-truncation=]
  157 |  snprintf(buf, len, "%s[%s.%03li]", datestr,
      |                      ^~             ~~~~~~~
../compositor/main.c:157:21: note: directive argument in the range
[-92233720368547759223372036854775]
  157 |  snprintf(buf, len, "%s[%s.%03li]", datestr,
      |                     ^~~~~~~~~~~~~~
../compositor/main.c:157:2: note: ‘snprintf’ output between 7 and 659
bytes into a destination of size 128
  157 |  snprintf(buf, len, "%s[%s.%03li]", datestr,
      |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  158 |    timestr, (tv.tv_usec / 1000));
      |    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
4 years agoAdd include for missing symbols
Eero Tamminen [Wed, 13 Nov 2019 11:34:30 +0000 (11:34 +0000)]
Add include for missing symbols

Fixes: https://gitlab.freedesktop.org/wayland/weston/issues/303

4 years agobackend-drm: Added support for legacy fd_import
Nicholas Niro [Wed, 30 Oct 2019 02:13:09 +0000 (22:13 -0400)]
backend-drm: Added support for legacy fd_import

This patch reenables the function drm_fb_get_from_dmabuf but with legacy
fd_import support for gbm/mesa < 17.1.

4 years agobackend-drm: Fix for gbm modifiers when they are not available.
Nicholas Niro [Wed, 30 Oct 2019 01:50:54 +0000 (21:50 -0400)]
backend-drm: Fix for gbm modifiers when they are not available.

When the HAVE_GBM_MODIFIERS is unset, make the code drop back
to a single plane version like other places in the code.

4 years agosimple-dmabuf-egl: update to xdg-shell stable
Drew DeVault [Tue, 12 Nov 2019 16:22:17 +0000 (11:22 -0500)]
simple-dmabuf-egl: update to xdg-shell stable

4 years agobackend-drm: Print whenever a view could not placed on the primary due to
Marius Vlad [Sat, 19 Oct 2019 15:18:38 +0000 (18:18 +0300)]
backend-drm: Print whenever a view could not placed on the primary due to
invalid size

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
4 years agobackend-drm: Print whenever a view will reach the renderer region
Marius Vlad [Mon, 14 Oct 2019 20:15:49 +0000 (23:15 +0300)]
backend-drm: Print whenever a view will reach the renderer region

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
4 years agobackend-drm: Move plane's availability in drm_output_try_view_on_plane()
Marius Vlad [Fri, 1 Nov 2019 21:49:21 +0000 (23:49 +0200)]
backend-drm: Move plane's availability in drm_output_try_view_on_plane()

It makes much more sense to be there. It adds some additional drm_debug()
statements to provide reason for failing to place the view in the HW
plane. Makes the reason for failing more accurate.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Suggested-by: Daniel Stone <daniel.stone@collabora.com>
4 years agobackend-drm: Pass the drm_fb to each prepare_overlay/scanout_view functions
Marius Vlad [Thu, 31 Oct 2019 10:48:35 +0000 (12:48 +0200)]
backend-drm: Pass the drm_fb to each prepare_overlay/scanout_view functions

Avoids the need to retrieve the DRM framebuffer in each function and
re-uses the one got before constructing the zpos candidate list.

Takes another reference for the scanout as to live the state, like
there's one for the overlay bit.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
4 years agobackend-drm: Pass the plane to prepare_overlay_view
Marius Vlad [Thu, 24 Oct 2019 21:07:37 +0000 (00:07 +0300)]
backend-drm: Pass the plane to prepare_overlay_view

As we already have a potential plane available to use, pass it
over the _prepare_overlay_view instead of trying to find one
from the backend plane list.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Suggested-by: Daniel Stone <daniel.stone@collabora.com>
4 years agobackend-drm: Allow for views to reach overlays/underlays planes
Marius Vlad [Wed, 11 Sep 2019 15:21:59 +0000 (18:21 +0300)]
backend-drm: Allow for views to reach overlays/underlays planes

In this manner we will allow views to reach the overlay (or underlays)
even if the damage tracking will detect that the new view will
occlude the view underneath it.

Renames occluded_region to planes_region, and uses occluded_region
to represent the region where we add each view's visible-and-opaque region.
Sprinkle some comments about each region.

Re-uses the view's clipped region to determine visible-and-opaque region
which is accumulated (for both renderer and HW planes cases) into
occluded_region. The current view's clipped_region is then checked against
occluded_region.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Suggested-by: Daniel Stone <daniel.stone@collabora.com>
4 years agobackend-drm: Check pixel format before constructing the zpos candidate list
Marius Vlad [Thu, 24 Oct 2019 11:49:33 +0000 (14:49 +0300)]
backend-drm: Check pixel format before constructing the zpos candidate list

We can determine if the pixel format used by the clients buffer is
scan-out capable much sooner, so do it when constructing the zpos
candidate list. It also removes the checks in their respective
prepare_ functions.

Avoids the situation where we'd need to retrieve the DRM framebuffer each time
when checking the pixel format.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
4 years agobackend-drm: Place pixel format checks for the cursor plane in its own
Marius Vlad [Sun, 13 Oct 2019 21:29:18 +0000 (00:29 +0300)]
backend-drm: Place pixel format checks for the cursor plane in its own
function

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
4 years agobackend-drm: Place pixel format checks for the overlay plane in its own
Marius Vlad [Sun, 13 Oct 2019 21:27:05 +0000 (00:27 +0300)]
backend-drm: Place pixel format checks for the overlay plane in its own
function

The idea is to place pixel the format checks in a common part and until
then, to make it available as a function so we can re-use easily.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
4 years agobackend-drm: Construct a zpos candidate list of planes
Marius Vlad [Mon, 14 Oct 2019 08:05:30 +0000 (11:05 +0300)]
backend-drm: Construct a zpos candidate list of planes

In order to better optimize view assignment to HW planes, we construct
an intermediary zpos candidate list which is used aggregate all suitable
planes for handling scan-out capable client buffers.

We go over it twice: once to construct it and once to pick-and-choose a
suitable plane based its highest zpos position.

In order to maintain the view order correctly we track current zpos
value being applied to the plane state and use it when trying to place
a view into a plane.

Pass the computed zpos value to be applied to the plane state.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Suggested-by: Daniel Stone <daniel.stone@collabora.com>
4 years agolibweston: Add a new helper to check if the view spawns the entire
Marius Vlad [Wed, 11 Sep 2019 13:53:08 +0000 (16:53 +0300)]
libweston: Add a new helper to check if the view spawns the entire
output

Helpful to determine if the view can go through the scanout or not.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
4 years agolibweston: Add a new helper weston_view_has_valid_buffer
Marius Vlad [Wed, 11 Sep 2019 13:41:04 +0000 (16:41 +0300)]
libweston: Add a new helper weston_view_has_valid_buffer

Helper to determine if the buffer attached to the view is valid.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
4 years agobackend-drm: Hard-code zpos values if HW doesn't exposes them
Marius Vlad [Tue, 29 Oct 2019 15:29:37 +0000 (17:29 +0200)]
backend-drm: Hard-code zpos values if HW doesn't exposes them

This is based on the assumption that overlays are in between cursor and
primary plane and it is required to be able to assign views to planes,
even if the driver doesn't not expose such property.

As we hard-code them as immutable the commit part would not need any
further modifications.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Suggested-by: Daniel Stone <daniel.stone@collabora.com>
4 years agobackend-drm: Add a helper to display plane type as a 'string'
Marius Vlad [Fri, 27 Sep 2019 17:45:41 +0000 (20:45 +0300)]
backend-drm: Add a helper to display plane type as a 'string'

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
4 years agobackend-drm: Add zpos DRM-property
Marius Vlad [Thu, 29 Aug 2019 17:42:00 +0000 (20:42 +0300)]
backend-drm: Add zpos DRM-property

Functional no change, as nobody makes use of it. Only apply the zpos
value if the zpos property is mutable (that is, zpos_max and zpos_min
are not the same).

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
4 years agobackend-drm: Teach drm_property_info_populate() to retrieve range values
Marius Vlad [Fri, 1 Nov 2019 10:00:09 +0000 (12:00 +0200)]
backend-drm: Teach drm_property_info_populate() to retrieve range values

Useful for zpos range values.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Suggested-by: Daniel Stone <daniel.stone@collabora.com>
4 years agoRevert "backend-drm: Teach drm_property_info_populate() to retrieve range values"
Daniel Stone [Mon, 11 Nov 2019 16:48:54 +0000 (16:48 +0000)]
Revert "backend-drm: Teach drm_property_info_populate() to retrieve range values"

Due to an error in driving GitLab, this commit erroneously contained the
entirety of !267 (zpos support in the KMS backend) squashed into one
single commit, pushed into master.

In order to keep the history clean, this is being reverted; a rebased
version of !267 with the clear individual commits which were already
present will be applied in its place.

This reverts commit 95e3b0deae85a9c5b96097da843ce3c254cfcee1.

4 years agobackend-drm: Teach drm_property_info_populate() to retrieve range values
Marius Vlad [Mon, 11 Nov 2019 15:24:25 +0000 (15:24 +0000)]
backend-drm: Teach drm_property_info_populate() to retrieve range values

Useful for zpos range values.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Suggested-by: Daniel Stone <daniel.stone@collabora.com>
4 years agoremoting: Use DRM FourCC formats instead of GBM formats
Daniel Stone [Mon, 11 Nov 2019 09:40:27 +0000 (09:40 +0000)]
remoting: Use DRM FourCC formats instead of GBM formats

The remoting plugin currently has a set_gbm_format() hook, which accepts
GBM_FORMAT_* tokens from the host to set as a supported format.
GBM_FORMAT_* values are strictly aliased with DRM_FORMAT_*.

In order to avoid an extra unnecessary dependency from the remoting
plugin on GBM, switch to using the formats from libdrm instead.

This fixes a compile error seen when the remoting plugin is enabled:

    ../remoting/remoting-plugin.c:39:10: fatal error: gbm.h: No such file or directory
       39 | #include <gbm.h>
          |          ^~~~~~~
    compilation terminated.

The error was caused by not having any dependency at all on GBM from
the remoting backend, which is fixed here by adding a new dependency on
the libdrm headers for drm_fourcc.h.

Signed-off-by: Daniel Stone <daniels@collabora.com>
4 years agoweston-launch: use exec to ensure signal delivery
Stefan Agner [Fri, 8 Nov 2019 23:51:29 +0000 (00:51 +0100)]
weston-launch: use exec to ensure signal delivery

Use exec to make sure the direct child process of weston-launch is
weston. This makes sure that signal delivery (SIGINT/SIGTERM) is
properly forwarded to weston.

Fixes ff3230952a68 ("weston-launch: Run weston in the user login shell")
Signed-off-by: Stefan Agner <stefan@agner.ch>
4 years agoweston-launch: show when a signal is sent to a child
Stefan Agner [Fri, 8 Nov 2019 23:50:10 +0000 (00:50 +0100)]
weston-launch: show when a signal is sent to a child

In verbose mode, print when a signal is sent to the child process.

Signed-off-by: Stefan Agner <stefan@agner.ch>
5 years agoweston-log: Avoid prefix-matching the scope name when checking for a
Marius Vlad [Tue, 5 Nov 2019 15:08:17 +0000 (17:08 +0200)]
weston-log: Avoid prefix-matching the scope name when checking for a
pending subscription

It limits to scope name to an exact match.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Reported-by: Pekka Paalanen <pekka.paalanen@collabora.com>
5 years agocompositor: Pass the entire string in one-shot when writting logger data
Marius Vlad [Fri, 1 Nov 2019 12:28:22 +0000 (14:28 +0200)]
compositor: Pass the entire string in one-shot when writting logger data

This fixes the situation where the same logger scope is passed multiple
times and the timestamp is being sent before the log mesasge.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Reported-by: Pekka Paalanen <pekka.paalanen@collabora.com>
5 years agolibweston: Init weston_output's 'destroy_signal' before timeline has a chance to...
Marius Vlad [Mon, 4 Nov 2019 15:53:46 +0000 (17:53 +0200)]
libweston: Init weston_output's 'destroy_signal' before timeline has a chance to emit a
timeline subscription

When subscribing over the command line to the 'timeline' scope we hit
the situation where we could emit a timeline message but without the
weston_output object being (fully) enabled.  The timeline subscription
object requires to install its own callback on the 'destroy_signal' but
at that time, the 'destroy_signal' is not initialized.

This moves 'destroy_signal' initialization before timeline has a chance
to emit a timeline subscription message for that weston_output.

While at it, move also 'frame_signal' initialization before any function
call to keep them nicely organized.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
5 years agocompositor: Allow protocol to be displayed when asked for, even if we're not supplyin...
Marius Vlad [Fri, 1 Nov 2019 11:45:55 +0000 (13:45 +0200)]
compositor: Allow protocol to be displayed when asked for, even if we're not supplying debug argument

This wasn't intentional it just kept the way it was done before.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Reported-by: Pekka Paalanen <pekka.paalanen@collabora.com>
5 years agoinput: use ro_anonymous_file to minimize duplication of keymap files
Sebastian Wick [Fri, 1 Nov 2019 01:38:45 +0000 (02:38 +0100)]
input: use ro_anonymous_file to minimize duplication of keymap files

Since version 7 clients must use MAP_PRIVATE to map the keymap fd so we
can use memfd_create in os_ro_anonymous_file_get_ref using
RO_ANONYMOUS_FILE_MAPMODE_PRIVATE, for older version we use
RO_ANONYMOUS_FILE_MAPMODE_SHARED to be compatibile with MAP_SHARED.

Signed-off-by: Sebastian Wick <sebastian@sebastianwick.net>