summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2022-09-22shared: introduce os_fd_clear_cloexec()Marius Vlad2-0/+18
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
2022-09-22desktop: Do not attempt to send terminate eventMarius Vlad1-1/+3
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
2022-09-14protocol/agl-shell.xml: Add an app_state event -- app state notificationMarius Vlad4-4/+54
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
2022-09-14layout: Handle dynamic application/surface movement between outputsMarius Vlad1-1/+24
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
2022-09-14shell: Remove the black curtain installed on outputsMarius Vlad4-20/+60
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
2022-09-14layout: Detect when an application should be migrated to other outputsMarius Vlad2-2/+35
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
2022-09-14desktop: Avoid sending the dimensions for the first outputMarius Vlad1-1/+4
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
2022-09-14layout: State explicity the outputMarius Vlad1-5/+7
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
2022-09-14layout: Use view's mapping once we placed the view in the hidden layerMarius Vlad1-8/+9
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
2022-09-14desktop: Install a black background for REMOTE rolesMarius Vlad1-4/+2
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
2022-09-14desktop: Include REMOTE role in initial configurationMarius Vlad1-1/+2
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
2022-08-31agl-shell: Add bound_ok and bound_fail events and a default destructorMarius Vlad4-12/+142
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
2022-07-18Fix typo in READMEneedlefish_13.93.0needlefish/13.93.013.93.0chintsung1-1/+1
- Fix brackets of link Signed-off-by: chintsung <chichon.tw@gmail.com> Change-Id: I1f96362bf02919b5bffea9977883f58dd2fa66ac
2022-06-29layout: Add a wrapper for adding the view to the hidden layerMarius Vlad1-24/+41
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
2022-06-20shell: Fix a typo when adding surface to pending listMarius Vlad1-1/+1
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
2022-06-13compositor: Allow passing continue-without-inputMarius Vlad1-1/+5
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
2022-06-10shell: Make sure that app_id is valid before checking itMarius Vlad1-4/+4
Bug-AGL: SPEC-4412 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I427c2920315b223432f273d08a69a069d66310c9
2022-06-10layout: Keep track of popup state to handle activationMarius Vlad2-1/+7
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
2022-06-10compositor: Perform activation from keybindingsMarius Vlad1-4/+6
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
2022-06-10compositor: Pass flags when adding keybindgsMarius Vlad1-7/+14
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
2022-06-10layout: Add a way common way activate viewsMarius Vlad3-0/+65
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
2022-06-10shell: Extract some common functionsMarius Vlad3-15/+30
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
2022-06-10input: Migrate ivi_seat to ivi_compositor headerMarius Vlad2-13/+13
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
2022-06-10input: Remove keyboard listener keyboard focus activationMarius Vlad1-37/+0
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
2022-06-03compositor: Properly dispose of fullscreen views at shutdownMarius Vlad2-1/+10
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
2022-05-04shell: Do not set none role for applications w/o appidMarius Vlad1-5/+0
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
2022-05-04shell: Let the output destroy handler handle layer finiMarius Vlad2-12/+1
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
2022-05-04desktop: Document the repaint scheduleMarius Vlad1-0/+11
Add some further comment why we could still potential need it. Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I510cd60d5feeccf7d8b9b34fb73e0e272fac5c6a
2022-05-04Revert "desktop: No need to schedule a compositor repaint"Marius Vlad1-0/+2
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
2022-05-03shell: Added missing layer fini callsMarius Vlad3-1/+77
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
2022-05-03compositor: Proper indentationMarius Vlad1-2/+4
Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I010463d02a1dc71539754be24ce8c5d747a31b96
2022-05-03desktop: Remove dead codeMarius Vlad2-20/+0
Some dead code artefacts, no need to keep these in. Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Idca7f858592b422a0e028ed03e10f4bb418bcb40
2022-05-03desktop: No need to schedule a compositor repaintMarius Vlad1-2/+0
Part of a larger clean-up. Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I8532fb03e1911f9dc5c04fa113d2b3e2eeba4879
2022-05-03meson.build: Bump up meson versionMarius Vlad1-3/+2
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
2022-05-03layout: Inform client to resize for fullscreen rolesMarius Vlad2-19/+58
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
2022-05-03layout: Send dimensions when setting up property as fullscreenMarius Vlad4-28/+65
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
2022-04-29layout: Do perform a view update transform when unmappedMarius Vlad1-0/+2
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
2022-04-29layout: Make the view mapped at activation completionMarius Vlad1-3/+1
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
2022-04-29compositor: Rename activated_by_default to mappedMarius Vlad3-15/+15
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
2022-03-29Weston 10.0 compatibility changesScott Murray3-5/+5
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>
2022-03-29Weston 9.0 compatibility changesScott Murray3-20/+20
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
2022-03-17Remove the listener in the end of ivi_shell_destroy()duerpei1-0/+1
Bug-AGL: SPEC-4291 Signed-off-by: duerpei <duep.fnst@fujitsu.com> Change-Id: Ieaa78e59365c8749754117cf2587b4c72e1f1f31
2022-03-15Fix potential memory leak in agl-compositorduerpei1-2/+8
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
2022-03-02layout: Address all other callsites w/ dirty+surface damagemarlin_12.93.0marlin/12.93.012.93.0Marius Vlad1-10/+13
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
2022-03-02layout: Inflict surface damageMarius Vlad1-2/+1
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
2022-03-02layout: Remove left-over commentMarius Vlad1-2/+0
Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Iba0cab61d20d8c92f6e179e25388c66a7d0e41f3
2022-02-23Fix potential memory leakduerpei1-0/+1
Bug-AGL:SPEC-4257 Signed-off-by: duerpei <duep.fnst@fujitsu.com> Change-Id: I0effc97710d9bf93f5044e22400e9ff6699a4309
2022-01-28meson.build: Don't set the dependency type for wayland-scannermarlin_12.92.0marlin/12.92.012.92.0Marius Vlad1-1/+1
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
2022-01-20Fix potential memory leakRongrong Yuan1-0/+5
Bug-AGL: SPEC-4221 Signed-off-by: Rongrong Yuan <yuanrr.fnst@fujitsu.com> Change-Id: I30634977a3b899647a5f2faad2c70db39e97d09e
2022-01-13client/screenshooter: Compute the width/height for a single outputMarius Vlad1-0/+2
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