src/agl-compositor.git
10 months agoshell: Don't reset the activation area always 08/29008/1 octopus
Marius Vlad [Tue, 13 Jun 2023 10:47:19 +0000 (13:47 +0300)]
shell: Don't reset the activation area always

Rather than doing that always, be more selective, and perform it if we
had already an application active.

Bug-AGL: SPEC-4829
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I707f92d1cc1f820af493bae9daa5a948aa452ad8

10 months agolayout: Add a fallback for reading activation-area 07/29007/1
Marius Vlad [Fri, 9 Jun 2023 08:49:36 +0000 (11:49 +0300)]
layout: Add a fallback for reading activation-area

This is a temporary work-around for doing another read of the ini file
for the activation-area in case we detected that we have one set-up but
the activation area is empty. This happens when we're getting the ready()
request from the shell client, when we're initializing the layout.

Bug-AGL: SPEC-4829
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I152e7cba34b74390de2a46df4799c1fb44441d3f

11 months agoclients/screenshooter: Add the output name to screenshot name 45/28945/1
Marius Vlad [Fri, 12 May 2023 18:51:32 +0000 (21:51 +0300)]
clients/screenshooter: Add the output name to screenshot name

And split the screenshot in multiple files, to match each output.

Bug-AGL: SPEC-4788
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I6d9e545c05ff949900f0158720888eb757c2c271
(cherry picked from commit e0a1dcc5480872fcb1ddafcd8664ef1b92f9446b)

11 months agodesktop: Don't attempt to send the output name 73/28873/2
Marius Vlad [Wed, 10 May 2023 20:04:02 +0000 (23:04 +0300)]
desktop: Don't attempt to send the output name

Commit 'desktop: Look for app_ids after the initial commit'
assumed we have the ability to send out the output name to the shell
client, when in fact we do not.

Bug-AGL: SPEC-4759
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Ibfb85dea15a948a9171ee249f1f326009252d1a2

11 months agocompositor: Don't reuse previous return values 69/28869/1
Marius Vlad [Thu, 6 Apr 2023 07:59:37 +0000 (10:59 +0300)]
compositor: Don't reuse previous return values

In case we couldn't enable the output do not return early without
setting the proper return value. This causes an issue later one, because
the signal list isn't initalized, taking down the compositor with a crash.

Bug-AGL: SPEC-4734
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Ia5ebc226f6b8f702e710a5976c471d04302bcb00

11 months agodesktop: Look for app_ids after the initial commit 65/28665/2
Marius Vlad [Fri, 21 Apr 2023 11:38:32 +0000 (14:38 +0300)]
desktop: Look for app_ids after the initial commit

Some applications, set up their app_ids after the initial surface
commit, which is too late to move them/place them to a different output.

This addresses that in the case the application sets one up, after the
initial surface commit.

Bug-AGL: SPEC-4759
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I4762af1ba6e8708722385ac06c37486dd4b6aac1

12 months agolayout: Fix no-op check due to invalid checks 64/28664/1
Marius Vlad [Wed, 26 Apr 2023 06:49:08 +0000 (09:49 +0300)]
layout: Fix no-op check due to invalid checks

Checking both width and height isn't a strict requirement, either can
different. This unties the check such that we can actually move
windows/applications between different outputs.

We also add here an explicit surface damage as we're removing the view
from the layer.

Bug-AGL: SPEC-4773
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Ie91b8c0fd2e9357fe00fd693e2a70fa3b4b4d31a

14 months agocompositor: Added layout_save/layout_restore 46/28546/1
Marius Vlad [Wed, 15 Feb 2023 15:02:28 +0000 (17:02 +0200)]
compositor: Added layout_save/layout_restore

In order to send correct dimensions after a hot-plug event, we need to
be able to save the area we had before.

Note that implies that the connectors do not change names in between
hot-plugs, which normally doesn't happen, but it might if udev rules are
executed/invoked. We restore based on output name it had previously.

Bug-AGL: SPEC-4705
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Ice3a127edfc9d356830ba8f0d0a20bb86284d7de
(cherry picked from commit 28ec0cff16d62260fb1a5900f57353f48446e199)

14 months agoshell: Check for a valid ivi_surface 45/28545/1
Marius Vlad [Wed, 15 Feb 2023 15:49:50 +0000 (17:49 +0200)]
shell: Check for a valid ivi_surface

A hot-plug/re-plug event means we remove the black curtain with it the
ivi_surface that hangs out of it, so verify it before assuming there's
one installed.

Bug-AGL: SPEC-4705
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Iad53ae34b4e15b5962cf984978a65c344aac9200
(cherry picked from commit ee50083d93869aaa581a092c522efe08252fae55)

14 months agoshell: Check for invalid outputs passed on when activating 44/28544/1
Marius Vlad [Wed, 15 Feb 2023 10:19:42 +0000 (12:19 +0200)]
shell: Check for invalid outputs passed on when activating

Connector hot-plugging would generate new wl_output object, which the
client might re-use so rather than blindly trusting the client, make
sure that the output we're getting is really one suitable.

This should avoid getting an incorrect output upon re-plugging in a
connector.

Bug-AGL: SPEC-4705
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I732283fc16841e0e57ddbec5d8bd2333d5028433
(cherry picked from commit 02fcb317161c08bcf02093a74abe18d4a4392335)

14 months agocompositor: Fix memleak when disabling the output 43/28543/1
Marius Vlad [Wed, 15 Feb 2023 15:07:09 +0000 (17:07 +0200)]
compositor: Fix memleak when disabling the output

Turns out we're leaking out the app_ids when disabling the output so
turn that memleak off.

Bug-AGL: SPEC-4705
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Ia2d46ecd1748c078e924d8d6c90bd86e9c49f64c
(cherry picked from commit d98b08f1fcb6ff6ccc762f149c8aa53a6921ad60)

15 months agoAdd gitreview file for Optimistic Octopus branch
Jan-Simon Moeller [Wed, 1 Feb 2023 00:26:02 +0000 (01:26 +0100)]
Add gitreview file for Optimistic Octopus branch

Update the .gitreview file.

Bug-AGL: SPEC-4695
Signed-off-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org>
Change-Id: I6011d99c051721feca0094852cf5949ef3522921

15 months agoivi-compositor: Add support for multiple app_ids 79/28379/3
Marius Vlad [Wed, 11 Jan 2023 15:23:37 +0000 (17:23 +0200)]
ivi-compositor: Add support for multiple app_ids

Verify if more than one app_id is being passed in the agl-shell-app-id
to allow more than one appid being placed to that output.

Bug-AGL: SPEC-4666
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I79dc77564ffca41148832af597b6836d7d28f686

15 months agomeson: Deprecate waltham and inform users of that 78/28378/3
Marius Vlad [Wed, 11 Jan 2023 12:48:06 +0000 (14:48 +0200)]
meson: Deprecate waltham and inform users of that

Waltham isn't really used, this is a step forward removing
support for it. For now just add an configuration option if users still
want to use it.

Bug-AGL: SPEC-4670
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I5ec900ef075717b438ef9e41167ad4833b2a8b87

15 months agomeson: Bump to version 0.0.21 77/28377/2
Marius Vlad [Wed, 11 Jan 2023 13:05:02 +0000 (15:05 +0200)]
meson: Bump to version 0.0.21

We should probably cut and update the compositor to a newer version
as gRPC support is a big change to have.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Iac400a3d2f0e62c5fe3b2ab0f681ce228a1865db

15 months agoshell: Reset the area activation 85/28385/1
Marius Vlad [Sat, 14 Jan 2023 17:46:47 +0000 (19:46 +0200)]
shell: Reset the area activation

Re-starting the shell client wouldn't reset the activation area, which
might be rather confusing, so better be re-initialize it as to be able to
switch in-between various configurations.

Bug-AGL: SPEC-4674
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Ib964ebed2c189f82092ffcf4d54dee2cf22093e1

15 months agoshell: Verify agl-shell version for bound_ok/bound_fail 62/28362/1
Marius Vlad [Wed, 4 Jan 2023 14:42:43 +0000 (16:42 +0200)]
shell: Verify agl-shell version for bound_ok/bound_fail

Some additional checks to avoid cases where agl-shell is still
using the version 1 but we're checking against at least version 2 (where
we introduced some additional events). Part of the compat series.

Bug-AGL: SPEC-4667
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I4f5d34fd8b9fe6cf6b8097948afebee550f5345d

15 months agoshell: Add fallback agl-shell version 1 61/28361/1
Marius Vlad [Thu, 5 Jan 2023 11:50:23 +0000 (13:50 +0200)]
shell: Add fallback agl-shell version 1

Turns out I made a mistake making all clients with version 1
not able to bind to agl-shell anymore. Rather than doing that still
allow older clients to bind to agl-shell.

Bug-AGL: SPEC-4667
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I61224f39dd8b0d96b36695f536eed8e701130877

16 months agoinput: Fix minor issue while reporting disable cursor 17/28317/1
Marius Vlad [Wed, 28 Dec 2022 15:59:36 +0000 (17:59 +0200)]
input: Fix minor issue while reporting disable cursor

We actually reported the cursor being disabled when it fact it was not.

Bug-AGL: SPEC-4658
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I81ee23e4ef2621c96344ce526a7b53d235d325e3

16 months agoinput: Rename hide-cursor to disable-cursor 16/28316/1
Marius Vlad [Wed, 28 Dec 2022 14:21:01 +0000 (16:21 +0200)]
input: Rename hide-cursor to disable-cursor

Since hide-cursor doesn't hide the cursor but disables the pointer,
better rename it to something much more appropriate.

While doing that, move also move the ini entry retrieval where is also
more suitable, along side the other parts that do that. Shouldn't be
any functional change while doing that.

Bug-AGL: SPEC-4658
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I8d1aab849b9a96177d17bb639c8e1e209205f7e7

16 months agosrc: Verify if the output is present 59/28259/5
Marius Vlad [Mon, 12 Dec 2022 19:02:19 +0000 (21:02 +0200)]
src: Verify if the output is present

The output destroy handler will invalidate the weston output and with it
we're no longer have access to it when the shell client closes up. This
checks against the weston output to avoid an illegal memory access.

Still part of the hot-plug connector fixes.

Bug-AGL: SPEC-4625
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Reported-by: Detlev Casanova <detlev.casanova@collabora.com>
Change-Id: Ic4c389422057fa082aff7fdbbc13af0c16f7bbb6

16 months agosrc: Further hotplug connector fixes 58/28258/4
Marius Vlad [Thu, 1 Dec 2022 16:37:02 +0000 (18:37 +0200)]
src: Further hotplug connector fixes

Some further checks for the black curtain not being present always when
perform hot-plugging operations.

Bug-AGL: SPEC-4625
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Reported-by: Detlev Casanova <detlev.casanova@collabora.com>
Change-Id: Ia7c05e5b90b9e8260f661a8115a93b0d246b9d98

16 months agogrpc-proxy: Init gRPC 71/28071/5 sandbox/mvlad/grpc-async-cb
Marius Vlad [Tue, 25 Oct 2022 10:06:41 +0000 (13:06 +0300)]
grpc-proxy: Init gRPC

This brings in support for accessing agl-shell protocol indirectly by
using a gRPC interface which bridges the communication between a
particular client (the client issuing gRPC requests) and the AGL
compositor which does that by re-using the same agl-shell protocol.

In order to achieve that, and further more, to avoid having ifdefs code
in the compositor and deal with threading, we instead resorted to using
a helper client.

On one side this helper implements the gRPC server API,
and on the other, a wayland native client that implements the
agl_shell interface.

It uses the agl_shell_ext interface added
previously to communicate with the compositor that it requires access
to agl_shell interface as well. The helper expects that agl_shell interface
was already bounded to another client before starting it so it waits
until that happens and then it implements the protocol specification,
for each interface.

Launching the helper client automatically can be done by adding the
following entry to the ini file:

[shell-client-ext]
command=/path/to/agl-shell-grpc-server

The gRPC server implementation only handles the agl_shell interface
until to this point, specifically, the activate_app request, and the
events that were adedd with version 3 of the agl-shell protocol.

Also the implementation uses the Reactor pattern, with Callback service
that greatly simplifies the async version and avoids putting locks to
to handle multiple clients. This should allow multiple clients being
connected to the gRPC server and receive events / send requests.

Bug-AGL: SPEC-4503
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Ie870da3caa138394d8dd30f9d22a5552d585d63a

16 months agoshell: Not not override the agl_shell interface resources 70/28070/2
Marius Vlad [Wed, 26 Oct 2022 15:07:47 +0000 (18:07 +0300)]
shell: Not not override the agl_shell interface resources

This redoes a bit the way we assigned wl_resources created in case we got
a bound_ok or bound_fail event.

Previously, even if we get a 'bound_fail' event we would override the
shell_client.resource which would make activation of the legitimate
shell client impossible, so this change would make the shell_client.resource
not being set if that happens.

Secondly, this includes a reset change in the agl_shell destructor, a
reset which is implicitly being done when the correct operations for the
protocol specifications have been applied.

Bug-AGL: SPEC-4503
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Ie87ce3b937f041a5704407593f580895f188ef56

16 months agoshell: Add a wrappers for sending events with agl-shell 69/28069/2
Marius Vlad [Tue, 18 Oct 2022 20:32:40 +0000 (23:32 +0300)]
shell: Add a wrappers for sending events with agl-shell

As we now have one more (shell) client that can bind to agl-shell, add a
wrapper for sending the events and include it as well.

Bug-AGL: SPEC-4503
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I869b036d6f24beeb3089bfd24b8d233c5fada71f

16 months agocompositor: Allow to start other clients 68/28068/2
Marius Vlad [Mon, 10 Oct 2022 14:03:15 +0000 (17:03 +0300)]
compositor: Allow to start other clients

This introduces shell-client-ext as a new section entry to add to allow
starting the gRPC server helper client.

Bug-AGL: SPEC-4503
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I41d62c932648699aa21837afc2de5103912c370d

16 months agoagl-shell.xml: Introduce a new interface 67/28067/2
Marius Vlad [Sat, 8 Oct 2022 18:06:18 +0000 (21:06 +0300)]
agl-shell.xml: Introduce a new interface

In order to allow another other client bind to agl_shell interface, this
introduces a new specific interface which the client would bind to
first, issue a doas_shell_client request, wait for a response, and
proceeed further if the event received was successful. Afterwards, the
client can bind to agl_shell protocol (and assuming it got 'bound_ok'
event back) can further use the agl_shell protocol as it happens with
the shell client.

This approach avoids adding a new protocol interface and instead re-uses
the same interface, with the note that the shell client is still in
charge of handling background and panels.

Bug-AGL: SPEC-4503
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Iac1d840a5f917b2a92fdfbdcdc583144d3942a1c

17 months agocompositor: Handle output destruction deferral 02/28202/1
Marius Vlad [Fri, 25 Nov 2022 20:18:10 +0000 (22:18 +0200)]
compositor: Handle output destruction deferral

weston_head_detach() already handles the disable of the output if it's
the last one.

See also: https://gitlab.freedesktop.org/wayland/weston/-/issues/697

Bug-AGL: SPEC-4625
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I542b14905b7b6aa220142d0d2dd5cec922c4fc33

17 months agolayout: Allow background surface roles (to) be activated 63/28163/2
Marius Vlad [Mon, 14 Nov 2022 14:28:28 +0000 (16:28 +0200)]
layout: Allow background surface roles (to) be activated

While nothing technically prevents the background surface role to
be activated, it turns out we don't actually track it so we a) couldn't
find it, and b) we attempted to resize it to an incorrect dimension.

Another small follow-up commit from 'Add manual activation area
configuration option' and with with commit 'agl-shell: Add support for
defining an activation area', which introduced the ability to designate
a certain area as the activation area.

v2: Keep the background surface always mapped

We now have more than one active surfaces at the same time, so we can't
unmap it as it needs to be always displayed.

Bug-AGL: SPEC-4594
Reported-by: Scott Murray <scott.murray@konsulko.com>
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I2561ce2c4c1c96c796fb8ee1c8ca9a30772b71f9

18 months agoagl-shell: Add support for defining an activation area 02/28102/1
Marius Vlad [Tue, 1 Nov 2022 15:42:43 +0000 (17:42 +0200)]
agl-shell: Add support for defining an activation area

This introduces a new request, 'set_activate_region' that hints to the
compositor to use a defined rectangle area, rather than to infer it.

This is a follow-up from commit 924473ef016ba8dcfa863, 'Add manual
activation area configuration option' which brough in the same feature
but by using the ini configuration file.

Bug-AGL: SPEC-4594
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: If9395268e68de6b0d01f04b90822e06603808299

18 months agoAdd manual activation area configuration option 52/28052/2
Scott Murray [Tue, 11 Oct 2022 20:46:26 +0000 (16:46 -0400)]
Add manual activation area configuration option

Add a per-output "activation-area" configuration option that can be
used to define the activation area for applications that are not
using panels.

Notes:
- A new surface is not created for the given activation area, so
  apps that are not opaque will show the background.  After some
  thought, this seems like acceptable behavior, but it is possible
  that I am missing something.
- At present setting the activation area explicitly disables use of
  any panels, this may not need to be the case and some discussion
  with the AGL community with respect to requirements is likely
  needed.
- It is likely that this feature should be done via a agl-shell
  protocol call instead of via configuration, but doing so will
  require some thought as to the interaction with panels and how
  configuration errors would be communicated back to a client.

Bug-AGL: SPEC-4588

Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Change-Id: I6cdae659f5f7636dc94121a69666b905abda3be3

19 months agocompositor: Use sigaction to trap SIGINT 24/28024/1
Marius Vlad [Wed, 21 Sep 2022 14:29:39 +0000 (17:29 +0300)]
compositor: Use sigaction to trap SIGINT

signalfd interacts badly with gdb's signal trapping - when hitting
ctrl-c in a debugger attached to weston, weston will receive the
signal. This results in weston exiting cleanly when the intent
was to use gdb to interfere with its operation.

Trapping SIGINT was introduced in commit 50dc6989 which ensured we
would call wl_display_terminate() on SIGINT or SIGTERM to clean
up our socket.

Killing weston with SIGINT is quite common for several developers,
so it's important to preserve this clean shutdown behaviour, so
we can't naively stop trapping SIGINT entirely.

Instead, use the sigaction() function to trap SIGINT, and have
the SIGINT handler send weston SIGUSR2 (SIGUSR1 is already
used by xwayland). SIGUSR2 can be trapped in the proper wayland
way via wl_event_loop_add_signal(). This way we can properly
break our event loop and clean up on SIGINT, but we can also
have gdb intercept SIGINT.

There are other ways around this, but I'm hoping this one allows
people to continue using ctrl-c to stop weston, and doesn't
require additional project specific gdb knowledge.

Bug-AGL: SPEC-4570

Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I42fc186296856861c8b6aee54a302c7c0574a88d

19 months agocompositor: Add missing SIGCHLD handler 23/28023/1
Marius Vlad [Tue, 20 Sep 2022 11:34:31 +0000 (14:34 +0300)]
compositor: Add missing SIGCHLD handler

We seem to be missing a SIGCHLD signal handlers so this patch
adds one similarity to what weston has.

Bug-AGL: SPEC-4570

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I137af4199c3d543fed940bbe289989095b114b74

19 months agocompositor: Stop trapping SIGQUIT 22/28022/1
Marius Vlad [Tue, 20 Sep 2022 08:45:09 +0000 (11:45 +0300)]
compositor: Stop trapping SIGQUIT

We've been trapping SIGQUIT for a "clean shutdown" since commit 3cad436a

However, sources such as:
http://www.gnu.org/software/libc/manual/html_node/Termination-Signals.html

indicate we probably shouldn't be trapping it at all, as the intent of
SIGQUIT is to leave a core file and debug artifacts from the run.

We should perform the minimal amount of clean up to ensure the system isn't
left in an unusable state - but these days that's performed by other
software such as logind.

We can safely stop trapping SIGQUIT entirely.

(Based on work from https://gitlab.freedesktop.org/wayland/weston/-/merge_requests/817)

Bug-AGL: SPEC-4570

Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Icf7d4f3e76a58e781bad911a966b65e2798266d0

19 months agoshell: Rewrite client_exec as client_launch 21/28021/1
Marius Vlad [Tue, 20 Sep 2022 07:10:01 +0000 (10:10 +0300)]
shell: Rewrite client_exec as client_launch

This patch is a major rewrite of the client_exec which fixes a couple of
issues found by upstream.

Specifically this address the following two issues:

- Do not weston_log() after fork()
- Own the session for the launched client

These two issues were integrated into this single patch.

It makes use of previously added wrappers to handle custom environment
being passed to the (shell) client being executed.

(Based on the work from https://gitlab.freedesktop.org/wayland/weston/-/merge_requests/954
and from https://gitlab.freedesktop.org/wayland/weston/-/merge_requests/817)

Bug-AGL: SPEC-4509

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I29d4bcacba3671f67bb915bdb55a80b556e143ac

19 months agoprocess-util: Move Xwayland fork helpers to shared 20/28020/1
Marius Vlad [Mon, 19 Sep 2022 19:57:13 +0000 (22:57 +0300)]
process-util: Move Xwayland fork helpers to shared

We'll want to reuse these inside desktop-shell as well as the Weston
frontend.

(Based on the work from
 https://gitlab.freedesktop.org/wayland/weston/-/merge_requests/954)

Bug-AGL: SPEC-4510

Signed-off-by: Daniel Stone <daniel.stone@collabora.com>
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Ife13dce545928cf53e4f49a657b756ed88ee742f

19 months agoshared: add str_printf() 26/28026/1
Marius Vlad [Mon, 19 Sep 2022 19:56:43 +0000 (22:56 +0300)]
shared: add str_printf()

asprintf() has the problem that it leaves *strp undefined when it
fails. Here is a simple wrapper that ensures NULL if asprintf() fails,
which is much more convenient to use.

This will be useful in future patches, where one needs to return error
messages from maybe failing functions, and more.

Bug-AGL: SPEC-4510

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I2e689551797da525d110a51b02fd608c9e07c567

19 months agoshared: introduce os_fd_clear_cloexec() 25/28025/1
Marius Vlad [Mon, 19 Sep 2022 19:56:12 +0000 (22:56 +0300)]
shared: introduce os_fd_clear_cloexec()

This function will be used between fork() and exec() to remove the
close-on-exec flag. The first user will be compositor/xwayland.c.

Bug-AGL: SPEC-4510

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Ib2245394654651583f9d59785540962ae4cb8a28

19 months agodesktop: Do not attempt to send terminate event 15/28015/1
Marius Vlad [Wed, 21 Sep 2022 16:44:52 +0000 (19:44 +0300)]
desktop: Do not attempt to send terminate event

For cases where the shell client itself is stopped/terminated
or the compositor is taken down, and implicitly with it, the shell
client we won't really have a reasource available.  Use the shell_ready
flag to verify that.

Fixes: 0512e7251611e7040c55

Bug-AGL: SPEC-4528
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I78b4fb39a76402535e642dda9cf284b57856376d

19 months agoprotocol/agl-shell.xml: Add an app_state event -- app state notification 67/27967/2
Marius Vlad [Thu, 1 Sep 2022 12:19:59 +0000 (15:19 +0300)]
protocol/agl-shell.xml: Add an app_state event -- app state notification

This protocol bump will notify the client binding to the agl-shell protocol
when a particular application changed its state.

This includes four (4) different events:

- started
- terminated
- activated
- deactivated

This should allow orchestrating start-up with activation as we don't
really know when it would be the proper time to activate an application
when starting up (for the first time). A started event will notify the
shell client we it can do that. These events are not sticky such that
the shell would be responsabile for keep  track of the state, if it
wants to.

Bug-AGL: SPEC-4528
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Id162874fa68946bb9b1db9fa356dd617a0db9eb7

19 months agolayout: Handle dynamic application/surface movement between outputs 54/27954/3
Marius Vlad [Fri, 26 Aug 2022 19:59:09 +0000 (22:59 +0300)]
layout: Handle dynamic application/surface movement between outputs

This patch takes care of dynamically moving applications from
one output to another, by tracking the output which was used activation
finalisation. It also logs when we detect that we keep having the same
surface active on the output.

Bug-AGL: SPEC-4516
Reported-by: Vasyl Vavrychuk <vasyl.vavrychuk@opensynergy.com>
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Ic4ce7d56fa360f2bddc087a1af83fc32728cc95d

19 months agoshell: Remove the black curtain installed on outputs 53/27953/3
Marius Vlad [Thu, 25 Aug 2022 16:04:29 +0000 (19:04 +0300)]
shell: Remove the black curtain installed on outputs

Upon completion of activation we might have an output without
a background surface set-up on that particular output, so this patch
either uses the black curtain as a background surface (useful for
transparent applications, which need it) or we remove it entirely in case
the shell client has one installed.

The patch renames the black_surface to black_curtain to better reflect
its name. Also output filtering would need renaming
(desktop_surface_check_last_surfaces)

Bug-AGL: SPEC-4516
Reported-by: Vasyl Vavrychuk <vasyl.vavrychuk@opensynergy.com>
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I6071b07664772d891a4d8c33a7603573ec2069fa

19 months agolayout: Detect when an application should be migrated to other outputs 52/27952/3
Marius Vlad [Thu, 25 Aug 2022 14:42:34 +0000 (17:42 +0300)]
layout: Detect when an application should be migrated to other outputs

This patch adds a way to determine when to move out/migrate the window to another
output, different than one set previously, or where it was initially added.

This patch only adds support for resizing with a later patch touch the
final activation part.

Uses new output variable to track it the outputs. We send new dimensions
of the output if they do not match the previous/older recorded one.

Bug-AGL: SPEC-4516
Reported-by: Vasyl Vavrychuk <vasyl.vavrychuk@opensynergy.com>
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Ic5b6b9c1676543fa5ff1524f58e014ad8abb632b

19 months agodesktop: Avoid sending the dimensions for the first output 05/27905/4
Marius Vlad [Mon, 15 Aug 2022 16:45:53 +0000 (19:45 +0300)]
desktop: Avoid sending the dimensions for the first output

Rather than sending the first available output we have in the system,
use explicitly the output that we specified in the configuration for
that particular appid. If we didn't do that, we would first send the
dimension for the first output, after which we send the dimensions for
the correct output, resulting in a few configure exchanges between the
client and the compositor.

This fixes that by using the correct output from the beginning.

Bug-AGL: SPEC-4520
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: If796f1ce8ba069d4fd2c73a7bdfd42e94c9e0418

19 months agolayout: State explicity the output 04/27904/3
Marius Vlad [Mon, 15 Aug 2022 14:19:56 +0000 (17:19 +0300)]
layout: State explicity the output

No functional changes, just print out in the logs what output is being
explicitly used.

Bug-AGL: SPEC-4520
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I39d3645f287e16c99ded6f0246a6f0d8929fa6eb

19 months agolayout: Use view's mapping once we placed the view in the hidden layer 03/27903/3
Marius Vlad [Mon, 15 Aug 2022 13:01:52 +0000 (16:01 +0300)]
layout: Use view's mapping once we placed the view in the hidden layer

This avoids re-sending the dimensions until the client acks the new
dimensions. It avoids some innocuous logging.

Bug-AGL: SPEC-4520
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Icc8d7a2d8effc09ffe9dc5bee9b586f752e2bfcd

19 months agodesktop: Install a black background for REMOTE roles 01/27901/5
Marius Vlad [Fri, 12 Aug 2022 14:38:04 +0000 (17:38 +0300)]
desktop: Install a black background for REMOTE roles

A while back we added the ability to install a black curtain if there no
applications running. This way it provides a visual cue and it signifies
that the applications is no longer running.

While the idea was to install a remote black background for the REMOTE
role, it turns out this would only happened if we were using the Waltham
output type, which is excluding the REMOTE role. Adds an explicit check
for Waltham to still allow for cases where just the REMOTE role is used.

Bug-AGL: SPEC-4520
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I42951faa7cfb6932fa0e42e75f79245a82181f06

19 months agodesktop: Include REMOTE role in initial configuration 00/27900/4
Marius Vlad [Fri, 12 Aug 2022 14:20:01 +0000 (17:20 +0300)]
desktop: Include REMOTE role in initial configuration

The REMOTE role is identical to the DESKTOP one (its merely a tag), so it
should go in the same category.

Fixes 13ac8bab43fffd00.

Bug-AGL: SPEC-4520
Reported-by: Vasyl Vavrychuk <vasyl.vavrychuk@opensynergy.com
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Iddf7b5ba644cb7317c5f5ac6645c0f149ab1d05d

20 months agoagl-shell: Add bound_ok and bound_fail events and a default destructor 59/27859/4
Marius Vlad [Wed, 3 Aug 2022 13:14:17 +0000 (16:14 +0300)]
agl-shell: Add bound_ok and bound_fail events and a default destructor

As we're increasing the amount of combinations we could have in the AGL
platforms, in which we're mixing various platforms, we require a way
to tell clients that there's already a shell client which in charge.

We can't really have multiple shell clients managing the windows and
surfaces, but in the same time we don't want to sever the wayland
connection the way it happens currently. Racy alternatives might exist,
which  avoid advertising the interface altogether once a
client did bind to the interface but that's not really a
viable solution.

So instead of doing that, this patch introduces two new events which
tells the client that it was either successful, and it can continue
issue requests and receive events or a that it the bind failed. The
client can chose to wait and try later and abandon to bind to the
agl_shell intefface, and behave like a regular client.

While doing an update to protocol to add those two events this patch add
also a default destructor for the protocol.

Bug-AGL: SPEC-4502
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Iacb86a668d1c4630724eecdb18e4b4c2d4e8e34a

21 months agoFix typo in README 77/27777/1 13.93.0 needlefish/13.93.0 needlefish_13.93.0
chintsung [Mon, 18 Jul 2022 03:38:50 +0000 (11:38 +0800)]
Fix typo in README

- Fix brackets of link

Signed-off-by: chintsung <chichon.tw@gmail.com>
Change-Id: I1f96362bf02919b5bffea9977883f58dd2fa66ac

22 months agolayout: Add a wrapper for adding the view to the hidden layer 84/27684/2
Marius Vlad [Tue, 21 Jun 2022 11:13:56 +0000 (14:13 +0300)]
layout: Add a wrapper for adding the view to the hidden layer

And with it, use it *as well* when detecting a surface shouldn't be
presented if activate-by-default is disabled. The reason for doing that
is to allow application the resize and receive frame events right after
the client shell has been started.

Doing it a later point it time, right when a potential activation could
come from a client, wouldn't really be useful as the client won't react
to configure events. This particular fix is for cases where the
activate by default is disabled and the application itself was added
*before* the client shell sent the ready request.

Bug-AGL: SPEC-4423
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Reported-by: Vasyl Vavrychuk <vasyl.vavrychuk@opensynergy.com>
Change-Id: I5b08d2ff65fca28126608c2677ec9b558a34caa1

22 months agoshell: Fix a typo when adding surface to pending list 81/27681/1
Marius Vlad [Mon, 20 Jun 2022 13:16:13 +0000 (16:16 +0300)]
shell: Fix a typo when adding surface to pending list

As both names are similar this was probably a typo, and instead of using
the iterator for the list we should use the item itself. This was pretty
hard to track as initially everything was set-up alright.

We were still getting empty lists of pending remote surfaces, when I
observed that we were using the iterator rather than the new item we
just create in that function.

Bug-AGL: SPEC-4445
Reported-by: Scott Murray <scott.murray@konsulko.com>
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I77c4c6721eb4a4e3e8e66faa4fa0584b136d322e

22 months agocompositor: Allow passing continue-without-input 89/27589/2
Marius Vlad [Wed, 1 Jun 2022 09:12:49 +0000 (12:12 +0300)]
compositor: Allow passing continue-without-input

We can specify over cmd line if we don't have any input devices.
Found while investigating xdg-shell and keyboard activation.

Bug-AGL: SPEC-4415
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I54be16e38922c5216f8075074bd1d47468ec07a3

22 months agoshell: Make sure that app_id is valid before checking it 73/27573/2
Marius Vlad [Mon, 30 May 2022 18:36:30 +0000 (21:36 +0300)]
shell: Make sure that app_id is valid before checking it

Bug-AGL: SPEC-4412
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I427c2920315b223432f273d08a69a069d66310c9

22 months agolayout: Keep track of popup state to handle activation 72/27572/2
Marius Vlad [Mon, 30 May 2022 17:17:36 +0000 (20:17 +0300)]
layout: Keep track of popup state to handle activation

Upon deactivation explicitly mark the surface as unmapped, and keep
track of the state using the enum already added for that.

Further more, at remap, we need to perform a transform update, so this
adds that as well.

Together with these changes, we now can activate/hide the pop-up window
correctly.

Bug-AGL: SPEC-4412
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I4dda48dbda265d19df9c7fb4a25773afa8245cf3

22 months agocompositor: Perform activation from keybindings 95/27595/2
Marius Vlad [Wed, 1 Jun 2022 12:48:53 +0000 (15:48 +0300)]
compositor: Perform activation from keybindings

Now that we have common function that peforms surface activation
(xdg-shell and input one) use it for touch and keyboard.

Bug-AGL: SPEC-4413
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I325e33da4c48f2741a7bb8f5ac706f838f9dabc4

22 months agocompositor: Pass flags when adding keybindgs 94/27594/2
Marius Vlad [Wed, 1 Jun 2022 12:18:06 +0000 (15:18 +0300)]
compositor: Pass flags when adding keybindgs

Although we don't really use these flags make it so we
deliever them to libweston.

Bug-AGL: SPEC-4413
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Idbbf2278c5fcaf75a8ef2f89499f7815d4a9e88f

22 months agolayout: Add a way common way activate views 93/27593/2
Marius Vlad [Tue, 31 May 2022 12:40:43 +0000 (15:40 +0300)]
layout: Add a way common way activate views

We install a common function which is being used to de-couple
keyboard presence from input and xdg-shell activation. We also
also use it at surface removal/destruction.

Bug-AGL: SPEC-4413
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I2686e5a4aab3e95fbeaa4100faa2dc0051881f24

22 months agoshell: Extract some common functions 92/27592/2
Marius Vlad [Tue, 31 May 2022 11:44:49 +0000 (14:44 +0300)]
shell: Extract some common functions

For instance this exports retreiving a ivi_seat from weston_seat, and
they are useful in other parts as well.

Bug-AGL: SPEC-4413
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I838823570792761dfb5ac4beea635e843dd5cd22

22 months agoinput: Migrate ivi_seat to ivi_compositor header 91/27591/2
Marius Vlad [Sat, 19 Feb 2022 19:52:00 +0000 (21:52 +0200)]
input: Migrate ivi_seat to ivi_compositor header

We might need to retrieve the seat in from different places to make it
available.

Bug-AGL: SPEC-4413

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I76343fe6039ae088356ddc33364e917d67dd414b

22 months agoinput: Remove keyboard listener keyboard focus activation 90/27590/2
Marius Vlad [Sat, 19 Feb 2022 19:45:59 +0000 (21:45 +0200)]
input: Remove keyboard listener keyboard focus activation

This is part of the bigger series to remove the need to have a keyboard
present to activate views/surfaces. This clean-ups any keyboard
listener we had installed previously.

Bug-AGL: SPEC-4413

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Iacd63a857cfe4d17c665f37dc8338cd790b7d16f

23 months agocompositor: Properly dispose of fullscreen views at shutdown 96/27596/1
Marius Vlad [Fri, 3 Jun 2022 08:56:29 +0000 (11:56 +0300)]
compositor: Properly dispose of fullscreen views at shutdown

While we can have multiple outputs, each with its own fullscreen view,
we have a layer-per-output hence we can't really call layer_fini()
in the output destruction as that what would result in an invalid
link access.

Handle those views destruction and with it, the fullscreen layer fini,
in the finalize bit where all others are handled as well.

This fixes a crash at shutdown, which could be seen when using multiple
outputs, and probably quite problematic when handling a restart.

Fixes: 43bdf9a42bac33df174d6ac7ff1ab2e15441c7b5

Bug-AGL: SPEC-4420
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I773890a24ad8ca2556c1d4ddda7f37ebae02c9de

2 years agoshell: Do not set none role for applications w/o appid 43/27443/1
Marius Vlad [Wed, 4 May 2022 08:12:54 +0000 (11:12 +0300)]
shell: Do not set none role for applications w/o appid

With commit 'layout: Send dimensions when setting up property as
fullscreen' we made so that fullscreen applications will receive the
configure event right from the beginning but that changed a bit the way
we handled applications that do not set-up an appid before doing the
initial wl_surface.commit.

Avoid doing that such that applications do not need to go through a
resize.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I91a9ab97ff5e30d3a86cda499d394c1a9fcde338

2 years agoshell: Let the output destroy handler handle layer fini 42/27442/1
Marius Vlad [Wed, 4 May 2022 06:54:20 +0000 (09:54 +0300)]
shell: Let the output destroy handler handle layer fini

This way we don't race with it. Part of 'shell: Added missing layer fini
calls'.

Bug-AGL: SPEC-4351
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I366364ba128ca1dacd3d3639a1b74b02f3ceef21

2 years agodesktop: Document the repaint schedule 41/27441/1
Marius Vlad [Wed, 4 May 2022 08:21:42 +0000 (11:21 +0300)]
desktop: Document the repaint schedule

Add some further comment why we could still potential need it.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I510cd60d5feeccf7d8b9b34fb73e0e272fac5c6a

2 years agoRevert "desktop: No need to schedule a compositor repaint" 40/27440/1
Marius Vlad [Wed, 4 May 2022 07:27:21 +0000 (10:27 +0300)]
Revert "desktop: No need to schedule a compositor repaint"

This reverts commit 8f85581e96bc71512cbef015ff12dc6441c07d9c.

I incorrectly assumed that we don't need to schedule a repaint, but
applications that do not set-up an appid would still need to go through
a resize and we need to continue to allow doing that.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I3702fa0a9c29290746250992d8921f777daa9fbf

2 years agoshell: Added missing layer fini calls 36/27436/1
Marius Vlad [Tue, 3 May 2022 15:04:14 +0000 (18:04 +0300)]
shell: Added missing layer fini calls

Newer libweston version introduced additional API to determine if we are
missing out proper destruction paths.

Bug-AGL: SPEC-4351
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I135ca463992244ae91512854c7da7004de48f72e

2 years agocompositor: Proper indentation 35/27435/1
Marius Vlad [Tue, 3 May 2022 09:27:48 +0000 (12:27 +0300)]
compositor: Proper indentation

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I010463d02a1dc71539754be24ce8c5d747a31b96

2 years agodesktop: Remove dead code 34/27434/1
Marius Vlad [Tue, 3 May 2022 08:33:10 +0000 (11:33 +0300)]
desktop: Remove dead code

Some dead code artefacts, no need to keep these in.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Idca7f858592b422a0e028ed03e10f4bb418bcb40

2 years agodesktop: No need to schedule a compositor repaint 33/27433/1
Marius Vlad [Tue, 3 May 2022 08:26:25 +0000 (11:26 +0300)]
desktop: No need to schedule a compositor repaint

Part of a larger clean-up.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I8532fb03e1911f9dc5c04fa113d2b3e2eeba4879

2 years agomeson.build: Bump up meson version 32/27432/1
Marius Vlad [Tue, 3 May 2022 07:56:24 +0000 (10:56 +0300)]
meson.build: Bump up meson version

Bump meson version requirements to a much newer version + some minor
compiler options which are handled directly by the build system.

yocto seem to use meson 0.63 so we're more than fine bumping the verison
for meson.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I69305b3b33e4919cb19ffa088b3530720f1b45c5

2 years agolayout: Inform client to resize for fullscreen roles 23/27423/2
Marius Vlad [Mon, 2 May 2022 12:05:23 +0000 (15:05 +0300)]
layout: Inform client to resize for fullscreen roles

In a previous patch we optimized sending the dimensions from the start,
but in some situations the client might set up the surface roles
*after* that happens, which might lead to issue as we are explicitly
terminating the connection if the client wasn't correctly resized by
that time.

This corrects that such that even if we perform a late set-up for the
fullscreen role, we can still tell the client to resize, and later on to
display the surface.

Bug-AGL: SPEC-4339
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I491c60c9881e99bc3201216a842782417286f0d9

2 years agolayout: Send dimensions when setting up property as fullscreen 15/27415/3
Marius Vlad [Wed, 27 Apr 2022 12:44:58 +0000 (15:44 +0300)]
layout: Send dimensions when setting up property as fullscreen

Instead of doing it at commit time, do it right after getting the xdg
toplevel surface such that clients can use it from the beginning.

This now includes fullscreen, besides regular desktop roles, and it
avoid mapping the fullscreen upon commit if the dimensions do not really
match up.

Bug-AGL: SPEC-4339
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I7185b10770c69d1d6572b0bc025c4a58fe431c67

2 years agolayout: Do perform a view update transform when unmapped 76/27376/3
Marius Vlad [Wed, 13 Apr 2022 14:27:43 +0000 (17:27 +0300)]
layout: Do perform a view update transform when unmapped

We should always perform a view update transformed when the view is not
mapped -- or better said when mapping the view. Found while
investigating some certain bevahiours related to surfaces not being
activated by default.

While a dirty+surface damage is sufficient when adding views to layers,
on mapping we should also perform an transform update of the view.

Bug-AGL: SPEC-4302
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Ia8e8ed2c4cc165e7fd371a474d85b5fe38bd87fa

2 years agolayout: Make the view mapped at activation completion 75/27375/3
Marius Vlad [Wed, 13 Apr 2022 12:37:12 +0000 (15:37 +0300)]
layout: Make the view mapped at activation completion

Instead of tagging it various places just do it a completion phase.
Makes things a bit easier to follow/read.

Bug-AGL: SPEC-4302
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I91ad6b29a786c4c78afa8ff07d104008be7bcb84

2 years agocompositor: Rename activated_by_default to mapped 74/27374/3
Marius Vlad [Tue, 12 Apr 2022 18:05:06 +0000 (21:05 +0300)]
compositor: Rename activated_by_default to mapped

This variable is about surface being displayed, rather than being
activatred so use mapped to better reflect that.

It also makes things easier to keep track per surface about surfaces
being activated by default or not. No functional change whatsoever.

Bug-AGL: SPEC-4302
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Ib0c508dff3eef593d86f259b55ff4e7087313a69

2 years agoWeston 10.0 compatibility changes
Scott Murray [Sat, 5 Feb 2022 22:07:34 +0000 (17:07 -0500)]
Weston 10.0 compatibility changes

Changes:
- Bump libweston dependencies in meson.build.
- Handle addition of another argument to the wet_main and
  weston_compositor_create functions.

Bug-AGL: SPEC-3819

Signed-off-by: Scott Murray <scott.murray@konsulko.com>
2 years agoWeston 9.0 compatibility changes
Scott Murray [Wed, 24 Feb 2021 22:09:40 +0000 (17:09 -0500)]
Weston 9.0 compatibility changes

Changes:
- Bump libweston dependencies in meson.build
- Match weston_compositor_tear_down -> weston_compositor_destroy API
  change by following what was done in weston for 9.0
- Update log context code to match API changes, based on what was
  done in weston for 9.0
- Update transform names to match weston
- Initialize a couple of structure fields to avoid failure from
  -Werror=missing-field-initializers triggered by changes in newer
  wayland.

Bug-AGL: SPEC-3819

Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Change-Id: I48fab590eb59a1b83b0cebc3762ba730450b0e3a

2 years agoRemove the listener in the end of ivi_shell_destroy() 58/27258/2
duerpei [Thu, 17 Mar 2022 05:13:37 +0000 (13:13 +0800)]
Remove the listener in the end of ivi_shell_destroy()

Bug-AGL: SPEC-4291

Signed-off-by: duerpei <duep.fnst@fujitsu.com>
Change-Id: Ieaa78e59365c8749754117cf2587b4c72e1f1f31

2 years agoFix potential memory leak in agl-compositor 27/27227/3
duerpei [Tue, 15 Mar 2022 02:26:03 +0000 (10:26 +0800)]
Fix potential memory leak in agl-compositor

wet_main->parse_options-> .... ->strdup ->malloc
    "config_file" memory is not released
    "log"memory is not released

When agl-compositor startup parameters contain socket and modules,
the memory of socket_name and option_modules also needs to be released.
So these two pointers are also released.

Bug-AGL: SPEC-4270

Signed-off-by: duerpei <duep.fnst@fujitsu.com>
Change-Id: I0d74b92187a0779610f32e75b33ab4fca10329a5

2 years agolayout: Address all other callsites w/ dirty+surface damage 13/27213/2 12.93.0 marlin/12.93.0 marlin_12.93.0
Marius Vlad [Mon, 21 Feb 2022 12:27:28 +0000 (14:27 +0200)]
layout: Address all other callsites w/ dirty+surface damage

This is just a missing left-over 'layout: Inflict damage on all
subsurfaces'. As we have different paths for other types of surface
roles, address them as well.

Bug-AGL: SPEC-4262

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I2b68bf986ad694b0e31396edc24c54cf1dc4d834

2 years agolayout: Inflict surface damage 12/27212/2
Marius Vlad [Fri, 18 Feb 2022 11:48:59 +0000 (13:48 +0200)]
layout: Inflict surface damage

Commit 'layout: Remove explicit damage call' re-done the way we've
handled additions to the layer, removing any damage infliction to either
the plane where to view is visible. While marking the view as dirty (and
with it any other children to the that view), we still
to tell the compositor that the view being added, has suffered changes.

Bug-AGL: SPEC-4262

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: If3033df36943fb466302e7907bd38f9a0703d49b

2 years agolayout: Remove left-over comment 11/27211/2
Marius Vlad [Fri, 11 Feb 2022 17:42:27 +0000 (19:42 +0200)]
layout: Remove left-over comment

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Iba0cab61d20d8c92f6e179e25388c66a7d0e41f3

2 years agoFix potential memory leak 01/27201/3
duerpei [Wed, 23 Feb 2022 01:36:48 +0000 (09:36 +0800)]
Fix potential memory leak

Bug-AGL:SPEC-4257

Signed-off-by: duerpei <duep.fnst@fujitsu.com>
Change-Id: I0effc97710d9bf93f5044e22400e9ff6699a4309

2 years agomeson.build: Don't set the dependency type for wayland-scanner 02/27102/1 12.92.0 marlin/12.92.0 marlin_12.92.0
Marius Vlad [Fri, 28 Jan 2022 11:08:45 +0000 (13:08 +0200)]
meson.build: Don't set the dependency type for wayland-scanner

meson (0.53) seem to be smart enough to resolve cross-compile
dependencies without setting explicitly the dependency type.

Setting the dependency  as native results in ignoring PKG_CONFIG_PATH
and using PATH to choose and alternative pkg-config. Sourcing the
yocto/OE toolchain would result in picking the hosts pkg-config due to
modified a PATH where SDKTARGETSYSROOT is before any of the hosts paths.

Combined that with the fact that PKG_CONFIG_PATH is reset when the
dependency is se to native (why that hapens is something to further
investigate) results in not finding wayland-scanner.

Tested with both yocto/OE toolchains and native (local) builds to make
sure we can still build it and seems we're fine.

Bug-AGL: SPEC-4169

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I5c4b12eff044aeb0c3ab4c18e943da4e15d6c411

2 years agoFix potential memory leak 93/27093/2
Rongrong Yuan [Thu, 20 Jan 2022 02:19:04 +0000 (10:19 +0800)]
Fix potential memory leak

Bug-AGL: SPEC-4221

Signed-off-by: Rongrong Yuan <yuanrr.fnst@fujitsu.com>
Change-Id: I30634977a3b899647a5f2faad2c70db39e97d09e

2 years agoclient/screenshooter: Compute the width/height for a single output 82/27082/1
Marius Vlad [Thu, 13 Jan 2022 17:29:21 +0000 (19:29 +0200)]
client/screenshooter: Compute the width/height for a single output

We're missing determining the buffers dimenions, so this basically adds
that.  Turns out this was introduced w/ commit 'clients/screenshooter:
Fix taking screenshot on multiple outputs'. Still clueless on how this
worked in CI, unless we're using `-a' to take a screenshot on all
outputs.

Bug-AGL: SPEC-4217

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I9a849457e9ca40f0b36e7249d9142b32ca3114ab

2 years agoagl-compositor: Add NULL check after creating surface/view 61/27061/1
AndyZhou [Wed, 22 Dec 2021 10:54:49 +0000 (18:54 +0800)]
agl-compositor: Add NULL check after creating surface/view

Add a check to verify if both the surface/view was created successfully
in function create_black_surface_view of src/shell.c file.

Bug-AGL: SPEC-4193

Signed-off-by: ZhouMingying <zhoumy@cn.fujitsu.com>
Change-Id: I69c6a6023c8b7a3b6e376f3cba25020a851648ab

2 years agoagl-compositor:Add NULL check after zalloc in src directory 01/27001/6 12.91.0 marlin/12.91.0 marlin_12.91.0
AndyZhou [Wed, 22 Dec 2021 08:00:59 +0000 (16:00 +0800)]
agl-compositor:Add NULL check after zalloc in src directory

There's no NULL check in zalloc.
Add a NULL check after zalloc.
And add memory free before return error.

Bug-AGL: SPEC-4178

Signed-off-by: ZhouMingying <zhoumy@cn.fujitsu.com>
Change-Id: Ic0e0e2007b2897a451507aed100ad01b65695383

2 years agoagl-compositor:Add NULL check after zalloc in screenshooter.c 00/27000/2
AndyZhou [Mon, 13 Dec 2021 03:41:25 +0000 (11:41 +0800)]
agl-compositor:Add NULL check after zalloc in screenshooter.c

There's no NULL check in zalloc.
xdg_output is alloced by zalloc.
Add a NULL check after zalloc and before use xdg_output.

Bug-AGL: SPEC-4178

Signed-off-by: ZhouMingying <zhoumy@cn.fujitsu.com>
Change-Id: Idc2e3fd6be823c063a84868ba37b26ffe90db6fc

2 years agoagl-compositor: Correct several spell issues in the protocol xml files 99/26999/3
AndyZhou [Mon, 20 Dec 2021 05:32:05 +0000 (13:32 +0800)]
agl-compositor: Correct several spell issues in the protocol xml files

There are several spell issues in the protocol xml files.
Modify to correct them.

Bug-AGL: SPEC-4174

Signed-off-by: ZhouMingying <zhoumy@cn.fujitsu.com>
Change-Id: I052a1cb4b1a0054305899a1d83e4be0fd9d03c2b

2 years agoagl-compositor: Correct several spell or grammar issues in the README.md file. 33/26933/3
AndyZhou [Mon, 6 Dec 2021 09:47:55 +0000 (17:47 +0800)]
agl-compositor: Correct several spell or grammar issues in the README.md file.

There are several issues in the README.md file.
Modify to correct them.

Bug-AGL: SPEC-4154

Signed-off-by: AndyZhou <zhoumy@cn.fujitsu.com>
Change-Id: I3a26692ba5257f99038262fdd1e45d87dd84da08

2 years agolayout: Remove explicit damage call 07/27007/1
Marius Vlad [Thu, 16 Dec 2021 12:41:08 +0000 (14:41 +0200)]
layout: Remove explicit damage call

As we will be marking all the views dirty, weston_output_repaint()
should pick-up correctly any inflicted damage, and perform an
implicit redraw without the need for an explict to call to
weston_view_below_damage().

Note that we still need to schedule a repaint for that particular view.

While at it, also remove an explicit call to
weston_view_update_transform() which is going to be handled internally
as well, when rebuilding the view list by libweston.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Ic701daebe69613b3dcc8eef96cac05c1b803327a

2 years agolayout: Inflict damage on all subsurfaces 82/26982/6
Marius Vlad [Wed, 8 Dec 2021 11:18:55 +0000 (13:18 +0200)]
layout: Inflict damage on all subsurfaces

As it has been seen with the camera-gstreamer application, when switching
back and forth between various other application and camera-gstreamer
we'll get artefacts/black surface as a result that we're only adding
damage to the main parent surface.

Bug-AGL: SPEC-4145

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Idf49e6c9100d63f5a5c63c34bfc65e8641eba822

2 years agomeson.build: Bump compositor version 32/26932/2
Marius Vlad [Tue, 23 Nov 2021 18:50:25 +0000 (20:50 +0200)]
meson.build: Bump compositor version

This bumps the compositor version to accomodate the protocol
update well.

Bug-AGL: SPEC-4133

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Iea01e3e36ef9ebf1f90e3fb07bd9637d8d060ab2

2 years agoshell: Refactor pending surfaces for existing pending ones 31/26931/2
Marius Vlad [Thu, 25 Nov 2021 22:07:09 +0000 (00:07 +0200)]
shell: Refactor pending surfaces for existing pending ones

This patch refactors a bit the way we add pending surface roles, such
that it updates to an existing surface, rather than create a new one
with the same app_id.

Bug-AGL: SPEC-4133

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Ifd7477ea0f0840d6fd82bbc21216a7694d0efa8b

2 years agosrc/desktop: Add a compositor destroy listener 30/26930/3
Marius Vlad [Tue, 23 Nov 2021 18:46:37 +0000 (20:46 +0200)]
src/desktop: Add a compositor destroy listener

Tearing down the ivi compositor instance (the shell) requires listening
for such an event and handle any potential destruction of surfaces.
With it we use to destroying any pending surfaces might have been left.

Bug-AGL: SPEC-4133

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I911c590409700374007673da680b7a76f69be1b2

2 years agosrc/shell: Add set_app_property_mode request 29/26929/2
Marius Vlad [Tue, 23 Nov 2021 18:12:02 +0000 (20:12 +0200)]
src/shell: Add set_app_property_mode request

Bug-AGL: SPEC-4133

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Iffc770e079788bb553077665169365dc7b2d901e

2 years agolayout: Fix-up the positions when placing the pop-up/dialog 36/26836/3
Marius Vlad [Fri, 5 Nov 2021 17:38:21 +0000 (19:38 +0200)]
layout: Fix-up the positions when placing the pop-up/dialog

Turns out we weren't accounting for the initial position (of the output)
as to derive the correct positioning of thew view/surface. This uses the
output x and y value and together with the values supplied by the user
to result in correct placement.

Bug-AGL: SPEC-4127

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I38f0bb9051d4650283cfa483936b121a6d136ca6

2 years agoshell: Fix passing maximized state from the start 31/26831/2
Marius Vlad [Thu, 4 Nov 2021 15:32:28 +0000 (17:32 +0200)]
shell: Fix passing maximized state from the start

We've added an optimization where we where sending to regular (desktop)
surfaces from the beginning the maximized state, together with the size
whenever the client signaled that it is ready to present.

That optimization failed to take into account other potential roles,
more importanly, the pop-op role which should not be getting any window
state, and implicitly shouldn't be getting any surface dimensions,
leaving it to the client to decide that. Patch checks all pending lists
to make sure we're not skipping any on purpose.

Bug-AGL: SPEC-4119

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I4f8c62af545c5955e7fa41c3fd73f52d6c73b600