summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2024-03-11src: weston_compositor_load_backend now returns backendDenys Dmytriyenko2-17/+14
And since weston_compositor structure now doesn't provide backend field, move it to the parent ivi_compositor structure. Bug-AGL: SPEC-5061 Change-Id: Ia0463ecdf149172c67857131530fc42e56fe5190 Signed-off-by: Denys Dmytriyenko <denys@konsulko.com>
2024-03-11src: use weston_coord_* structuresDenys Dmytriyenko4-46/+49
Offsets and coordinates are now handled and passed around via corresponding weston_coord_* structures. Bug-AGL: SPEC-5061 Change-Id: Ifa6958cce71eca80e4412545c3542842cd4d64da Signed-off-by: Denys Dmytriyenko <denys@konsulko.com>
2024-03-11meson.build: update for weston 13Denys Dmytriyenko1-1/+1
Bug-AGL: SPEC-5061 Change-Id: If56c7121b48ab5f826534e3dc538052f4bdef1ac Signed-off-by: Denys Dmytriyenko <denys@konsulko.com>
2024-03-11compositor: Fix building when x11 is not enabledMarius Vlad1-2/+4
This is just an aftermath of the change in 'meson.build, src: update for weston 12' which missed up the change for not having the x11 backend. Bug-AGL: SPEC-4578 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Iff2112ece5d378d7d9f8fe67ed05bd9c5d354155
2024-03-11meson.build, src: update for weston 12Marius Vlad6-37/+141
Update dependencies for libweston-12 in meson.build, as well as adjust sources due to libweston-desktop/libweston-desktop.h moving to libweston/desktop.h This adds support libweston 12 which includes the following changes: - use MODULEDIR, for both weston and libweston when loading - use backend, renderer when starting up and pass those up Bug-AGL: SPEC-4578 Signed-off-by: Denys Dmytriyenko <denys@konsulko.com> Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I269e877ee3ae8cf8f1447bda05e11422244a416e
2024-03-11src: Make sure we don't die out when performing output hot-pluggingMarius Vlad1-2/+2
Bug-AGL: SPEC-4617 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I3147cbfbc5a5c3913d8e361b907f5c19bf539276
2024-03-11meson.build, src: update for weston 11Marius Vlad5-18/+86
Bump Weston library dependencies to work with Weston 11.0.0. The following changes are needed to port the compositor to the latest changes from libweston 11. Specifically we now use weston_surface_unref() instead of weston_surface_destroy(). The weston_head parameter is now needed when creating an output in weston_compositor_create_output(). We now use weston_buffer_create_solid_rgba() instead of weston_surface_set_color() to create our black curtain. A further upstream updates has been added to include some of the shell-utils wrapper but we'll get those in the next release of libweston. Finally, in order to attach heads and enable the outputs, we need to start from 1, rather than 0, and we now need lazy output placement for multiple outputs, following basically what weston is doing. Bug-AGL: SPEC-4578 Bug-AGL: SPEC-4617 Signed-off-by: Scott Murray <scott.murray@konsulko.com> Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ie4aa7bc09b99d85b6bda49437c5f4789012244e1
2024-03-11meson.build: Fix wayland-scanner detectionScott Murray1-1/+1
Update wayland-scanner dependency to mark it as native, as detection fails with newer meson without it. This also matches what is done in Weston's meson.build. Bug-AGL: SPEC-4578 Signed-off-by: Scott Murray <scott.murray@konsulko.com>
2024-02-23meson.build: Do another version bumpMarius Vlad1-1/+1
To include a quick fix regarding building the compositor with rdp backend support. Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I2611af2b867285b5529dbcdeceed4bfd2869ec9b
2024-02-23compositor: Avoid compiler warning and build failureMarius Vlad2-1/+3
This is because we build with warns as failures and possibly the rdp backend loading isn't enabled. Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ia184b1a6fa2ec25b07329f10777c9d47451d53fe
2024-02-23meson.build: Bump version to 0.22.3Marius Vlad1-1/+1
We've added split type of functionality with support for loading the RDP backend, such that this warrants an version update as well. Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I28e35f53bb1d9a9d3deed204596bd8ef090cb579
2024-02-23compositor: Add support for loading width/height/transformMarius Vlad1-1/+37
From the ini configuration file. Bug-AGL: SPEC-5077 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I12e47844771494f72db5e387d468bef70ceb5edf
2024-02-23main-grpc: Fix iterator going invalid at destruction timeMarius Vlad1-6/+4
Apparently, erase() would make the iterator invalid so we need grab the next one to have the work correctly. Bug-AGL: SPEC-5077 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I290fa1231eb6b37ab63c5f5c0bd8fe90d4363a77
2024-02-23compositor: Add the ability to load rdp-backend.soMarius Vlad3-11/+183
Similar to Weston this loads the backend-rdp shared library. Bug-AGL: SPEC-5077 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ib4e1d408fbb7e1eb0a09135c85a3275d424f7015
2024-02-22layout/shell: Keep track of previous roleMarius Vlad3-16/+28
And with it also handle the re-mapping/unmapping of previous active window such we don't run into weird behaviours, and be able to revert back to the original output dimensions when going back to normal windows. Bug-AGL: SPEC-4839 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I3703de998b0baa8a2b9d72276dcd56b315d3ca1a
2024-02-22layout: Added sticky implementation for split windowsMarius Vlad3-13/+108
This continues implementing the sticky window functionality to be able to keep a window, set as sticky, always displayed while having the ability to activate/switch to other windows. This could be useful in a handful of sitauations like keeping the nav application on, while activing other windows. Bug-AGL: SPEC-4839 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I94c835c0d8f9f7e334e4c75389d78bd267b71a87
2024-02-22shell/layout: Add implementation for the width paramMarius Vlad3-21/+53
This adds support for passing by the width argument such that users can specify the width dimensions of the split window. Given that we might another previous active window we also need to split that accordingly depending on the orientation. Bug-AGL: SPEC-4839 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I39239c1af0358eaa671146d0f36a3a334e945067
2024-02-22src: Don't attempt to split background role windowMarius Vlad2-2/+2
If that window is a background one, this patch avoids doing that. The background surface role needs to always be available. Discovered while testing it out with flutter embedder. Bug-AGL: SPEC-4839 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ia46b7ae590ea4feafa8a67efeb8ad540f6d2dfa0
2024-02-22grpc-proxy/shell: Add sticky parameter when setting up split windowMarius Vlad6-6/+17
This allow to further customize how to handle the split window. There's no implementation in the compositor for allow this functionality to take place, but doing so can be at a later point in time. Tagging the split window as sticky should allow activation of other windows while keeping the split window always displayed. Bug-AGL: SPEC-4839 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Iae4d18d2a857497c11d0e77bf43f654e2b8ed501
2024-02-22grpc-proxy/shell: Add width for split windowMarius Vlad6-11/+13
It might be useful in the future to let clients choose how much of the window to split so allow passing that. Note that there's no actual implementation but if there's a need in the future it can be easily added so it's better to add this now. Bug-AGL: SPEC-4839 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I82f36e86f56b0a65cbacac8368b63f68df69a350
2024-02-22layout/shell: Reset split type of windowsMarius Vlad3-10/+41
This change would reset to default (none) orientation when activating a different window, than those split and currently active. The use-case is that when activating a different window all previous split ones would reset to their original state (none orientation), such that when the user tries to activate any former split windows it would get the window without being split plus the other active window in the same time. IOW going back and activating an former split window would also display the other window which would complicate things a bit. Bug-AGL: SPEC-4839 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I315d42b656962bf3f68f140466ab58429a0e972c
2024-02-22shell: Reset active view to allow further activationMarius Vlad1-0/+5
Going back to regular, with a none orientation would allow to re-activate the window. This wouldn't happen because we haven't been able to reset the active window Keeps things sane for the user and would allow navigating back to those windows. Further patches should improve and avoid this entirely if the split window is sticky. Bug-AGL: SPEC-4839 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ic2cc7fd2839f5a664957d3f111c400559d93cf3f
2024-02-22layout: Specify the reason for not activating windowsMarius Vlad1-3/+7
Rather than guessing why the windows do not activate. Found some use cases where this would be useful to be explicit. Bug-AGL: SPEC-4839 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I65383f8b3467f3b3093786907b194dce3cf635af
2024-02-22grpc-proxy: Extend AglShellSetSplit from gRPC proxyMarius Vlad4-5/+25
This adds an implementation for it and includes the output name, previously being missed. Bug-AGL: SPEC-4839 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I95181adebe1ff6cddf81796444774277fec28a9a
2024-02-22layout/shell: Add basic support for split windowMarius Vlad7-4/+402
This introduces a new set_split request to allow changing the tile orientation of the window. See the protocol XML for more implementation details. Of importance difference from the previous implementation is that this patch makes use of the xdg-shell protocol, such that orientation is being handled over the configure event to the client. The protocol specifies a width to allow the client to control how much of the output be assign the split window and also a sticky window functionality. Bug-AGL: SPEC-4839 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ia8b7d04a7514f55d647c3ea76b13bab51a3586aa
2024-02-13Add gitlab issue/merge request templatesricefish_17.90.0ricefish/17.90.017.90.0Jan-Simon Moeller2-0/+6
Add template files for gitlab Bug-AGL: SPEC-4474 Signed-off-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org> Change-Id: I811994c1179932fe83a6b5f1ceb674f65ec1c568
2024-01-24layout: Add the ability to deactivate fullscreen surfacesMarius Vlad1-2/+35
Deactivating fullscreen is a special case so we need to handle it similarly to dialog/popups. This adds an additional schedule for repaint in the fullscreen part to force a redraw, otherwise deactivation/activation would need to inflict any sort of damage to trigger a redraw. Bug-AGL: SPEC-4348 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I258543f43514af07dfed7b36531816e90561cc61
2024-01-02grpc-proxy: Add a prefix tag for debugging messagesquillback_17.1.2quillback_17.1.1quillback_17.1.0quillback_17.0.2quillback_17.0.1quillback_17.0.0quillback/17.1.2quillback/17.1.1quillback/17.1.0quillback/17.0.2quillback/17.0.1quillback/17.0.017.1.217.1.117.1.017.0.217.0.117.0.0Marius Vlad1-1/+1
Bug-AGL: SPEC-4977 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ib26d0b9f9d47e7d2e2d42b47a9702ba31d03f3b9
2024-01-02grpc-proxy: Re-work bound_ok/bound_fail events handlingMarius Vlad5-280/+166
This bigger patch changes the way gRPC proxy client connects to the server, more specifically how it binds to the same agl_shell interface as the shell client. I debated if this should be split into more pieces but I think it makes more sense to have contained into a single patch as it doesn't make sense to have some bits off and some bits on, as both the server and the client side need to be changed at the same time. This biggest change with this patch is to avoid a potential race condition between the gRPC proxy client and the shell-client, but also to simplify the way the gRPC client connects to the server as there aren't sufficient guards in the server to the provent various corner cases to take place. Rather than attempting to fix that, simplifying the entire bit and allow only a single agl-shell client and a sigle gRPC proxy client connected at a single time and remove any other potential clients trying to connect at all, later on. Context and usage: Both the gRPC proxy and shell-client bind to the same agl_shell interface, meaning that both use the shell-client (homescreen, flutter-ics-homescreen, flutter-auto, wam) and the gRPC proxy can issue agl_shell requests, with some minor differences -- setting background and panels which do not make sense for gRPC proxy client. The compositor can signal back to clients when a bind was OK or not with the bound_ok/bound_fail event. Previously to adding the bound_ok/bound_fail events, any other client trying to use agl_shell interface, more than once, would get a protocol violation. With the bound_ok/bound_fail events clients would instead receive this event and could theoretically act upon it. The race that this patch tries to overcome is that the gRPC client will periodically attempt to verify if there's a shell-client already connected to server by binding to agl_shell interface and waiting for bound_fail event. In case it got bound_ok, it would disconnect and attempt at latter point in time, until it got the bound_failed event, and thus signalling that there's shell client already connected, allowing to proceed further. This worked fine most of the time, depending on how fast the shell client also bind to agl_shell. For a brief period of time, it might be that shell client also gets a bound_fail, requiring it to retry at a later point in time. The disconnected/reconnect of the gRPC proxy would then complicate matters as the client resources will get overwritten. So rather than trying to try that fix that, a better approach is to simplify the way this works entirely. The change in this patch is that the gRPC proxy doesn't connect/disconnect periodically but rather it waits for the compositor to signal when it is ready to bind to agl_shell interface. That happens with the help of the doas event status, from the agl_shell_ext interface. If this event status is alright (OK) then it means the gRPC can then bind to agl_shell interface. If it gets a failed status it would just wait and then issue another doas request and continue as such forever until it got an alright status. The distinct is that in this case the gRPC proxy would not disconnect and then reconnect retrying the same thing. This change to simplify some of the assumption in server, and client side implementation would just race with the shell client when binding to the agl_shell interface. Bug-AGL: SPEC-4977 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ib74f789553d3b130ee8e61d0068e617dc2209a58
2023-12-20shell: Provide a better explanation for terminating the connectionMarius Vlad1-5/+7
And make sure we clear off the remaing client resources when doing an unbind. It seems we would hit it when checking set_background/ready/set_panel requests, resulting in a protocol violation and finally terminating the connection. Bug-AGL: SPEC-4977 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ie5ed881511ec2ac4501d2a5cac349abc7f83c1fe
2023-12-15shell: Don't assume an output previously set-upMarius Vlad1-3/+5
This is unlikely to happen in practice, but discovered while doing a code audit, so let's let be on the safe side and don't attempt to deref as we'll get invalid memory. Bug-AGL: SPEC-5018 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ib874a7194ab3a7019a304ec4c1974824c78b26cc
2023-11-14meson.build: Bump version to 0.0.22Marius Vlad1-1/+1
We haven't add an official release since the beginning of the year, when we introduced the gRPC API. So do another one, as we've changed a bit the say the gRPC starts. Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Idc2feace89a0cd77d1788e629fff9b5f2f443fce
2023-11-03grpc-proxy: Use smaller waiting timeMarius Vlad1-1/+1
This would speed the time checking if agl-shell was bounded or not. Shouldn't make that much of a difference but we do not need to wait 250 ms just for testing that. Bug-AGL: SPEC-4912 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I8751c1d69898a82a415ba9b756bdfe9657ef0546
2023-11-03grpc-proxy: Start the gRPC server and waiting thread much soonerMarius Vlad3-16/+66
This change moves a bit the start-up sequence of the gRPC server and when it connects to the compositor. Changing the start-up sequence avoids waiting for the channel to change its state from disconnected to connected, and only wait for the wayland connection to take place. Otherwise, we would wait first for the wayland connection to take place, then wait for the gRPC server to start up and finally wait for the channel to be in connected state, all which would incur a massive waiting time. Moving it a bit early requires to at least verify that we have the proxy side (the wayland connection) is already set-up at that time. Bug-AGL: SPEC-4912 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ied88a917df8ff98fefa601103ce04e13c8bb21ac
2023-11-03grpc-proxy: Fix missing args LOG()Marius Vlad2-2/+2
These are not seen until enabling the DEBUG directive. Bug-AGL: SPEC-4912 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ic18c701909975978e82ef811ade416d802e567b5
2023-10-27grpc-proxy/main-grpc: Don't fall trough assuming we have a wl_displayMarius Vlad1-1/+4
Maybe the third time is a charm to avoid fall through and assume on the exit path we do have a wl_display. Bug-AGL: SPEC-4935 Reported-by: Lisandro Pérez Meyer <lpmeyer@ics.com> Tested-by: Lisandro Pérez Meyer <lpmeyer@ics.com> Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I4adef5bf72d6b1a32a218bf1cfa6c8ed4450ba48
2023-10-27grpc-proxy: Don't attempt to connect if there's no compositor runningMarius Vlad1-0/+7
Commit d8e72099ecbcad, 'grpc-proxy: Terminate thread when we're exiting', addressed a rather bigger issue to handle correctly the shutdown/restart sequence. A consequence of that is the initial issue opened in SPEC-4935 with a trace showing a protocol issue, due to fact we're supplying an invalid wl_display without being connected to the compositor. While commit d8e72099ecbcad, 'grpc-proxy: Terminate thread when we're exiting' does fix the issue and would make the underlying bug disappear let's be more pedantic and don't attempt assume we have a compositor connection when in fact we do not. Bug-AGL: SPEC-4935 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Id10dabe5178f52fa6a0cf6d70c70799c98f4b6d5
2023-10-24grpc-proxy: Terminate thread when we're exitingMarius Vlad1-0/+1
We need to be joining the thread to be able to exit properly, so let us do that. Bug-AGL: SPEC-4935 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ib4e54fcb23267b632f61c10d6ec2835c55ec2f23
2023-08-29grpc-proxy: Add dynamic scale of floating windowsMarius Vlad8-14/+86
This adds basic scaling for floating windows, sending new dimensions to the clients to resize itself. Bug-AGL: SPEC-4862 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ic693153cd704b278dcddd2514afc8dafecf8829b
2023-08-29grpc-proxy: Add dynamic floating window movementMarius Vlad8-11/+83
This adds basic movement for floating type of windows. The window needs to be a floating type for this request to work out. For the agl-shell protocol, this adds a set_app_float() request while for gRPC it adds a SetAppPosition() request. Bug-AGL: SPEC-4863 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I5ecc4257c3e84d15a8cabb183757753be37867f5
2023-08-17desktop: Fix Xwayland buildMarius Vlad1-0/+8
Turns out weston doesn't install xwayland-api header if Xwayland is not installed, which is a shame, and should be rectified. Meanwhile, let's guard access to the header and the API that the header exports. Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I77638b263483628f8cc7a3dcbd08c8947db1d86b
2023-08-03compositor: Use the logging context when iterating over scopesMarius Vlad1-1/+1
In accordance to the upstream changes refer to the logging context rather than the compositor instance. Depends on https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl/+/29064 Bug-AGL: SPEC-4861 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I4a8aeac4ef33e0631c23ae85347fea8a1b36c4de
2023-07-24layout: Check against app_id being validMarius Vlad1-1/+1
All app_ids are not valid for xwayland type of surfaces to need to check against it. Bug-AGL: SPEC-4847 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I84dc9b493648f4fe48b1c23c8ead0283505acce0
2023-07-24layout: Determine xwayland surface in a generic fashionMarius Vlad3-4/+26
This provides a far better way of determining if the surface is xwayland or not. We can then make sure all X11 clients can be displayed. Bug-AGL: SPEC-4847 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I2140c452c0d37a84323eaf75787eb32a7771a56e
2023-06-21compositor: Add XWayland basic supportMarius Vlad7-25/+333
This allow starting up XWayland and the ability to display, albeit is incomplete, given that we have no way at this moment to make the window maximized, as we do with xdg-shell/native wayland applications. A further patch, together with libweston changes are needed to make this complete. For now this can provide us with initial smoke testing. Tested with basic X11 clients, including Unigine, which is the reason for having this the moment. Note that this at the moment compiled-out, requiring the pass -Dxwayland=true when building the compositor. Bug-AGL: SPEC-4782 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I87d2a852165cb3f03482bea1e04931bdd6d4c115
2023-06-13layout: Give ini config precedence over agl_shellMarius Vlad1-0/+6
The activation area can set-up with agl_shell as well, so give the ini configuration file precedence over the one set-up by agl_shell. Bug-AGL: SPEC-4829 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ifae82b8c29575e7a9a06422588ad6a8cce80946e
2023-06-13shell: Don't reset the activation area alwaysMarius Vlad1-2/+4
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
2023-06-13layout: Add a fallback for reading activation-areaMarius Vlad3-1/+22
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
2023-05-31policy-deny: Remove SMACK supportMarius Vlad3-91/+0
Similar to Waltham, SMACK hasn't been really used and it was actually a compile option, showing as a example the deny policy. The RBA and the allow-all policy still available, and we can revisit the policy mechanism if we plan on switching to SELinux. Bug-AGL: SPEC-4806 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Iedac63585676ebc47201debcf73870cb0538cc09
2023-05-31compositor: Remove Waltham supportMarius Vlad6-237/+0
Waltham hasn't been used in a while, its support has been removed for some time, we've been deprecating it last release so it's time to remove it from the compositor as well. Bug-AGL: SPEC-4669 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Iaf1e467b1228051fd96cac424ac6781d67f9fefa