summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2020-06-15layout: Do not attempt to activate the surface on the remote outputMarius Vlad1-0/+10
Once the view has been placed on remote output do not attempt to activate it on other output, as it would make quite confusing to have same view on multiple outputs. Bug-AGL: SPEC-3280 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I36a8df18a174e3d5fd5f49ff5bdf70f1a16c86cb
2020-06-15src: Mark surfaces with the 'remote' role if configuration file says soMarius Vlad5-4/+18
As we don't have an explicit way to do it, like we have with the protocol, we try to determine if the surface was being assigned a remote output and use that, when the surface is created. Bug-AGL: SPEC-3280 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Idd95acd9ae69c5ac37b50d447956b0ee46a94677
2020-06-15main: Do the installment of black surfaces for remote outputs as wellMarius Vlad1-2/+2
The change to enable the remote outputs later than local ones, means we need to make sure we still have a black surface installed for the remoting output. Bug-AGL: SPEC-3280 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I3af4ee802eab377adf9c368a800b04ba13ead8af
2020-06-15shell: Add some extra checks to make sure we don't trip ourselvesMarius Vlad1-2/+18
Dynamically removing and inserting surfaces on outputs requires making sure the surface is still mapped on that output. Bug-AGL: SPEC-3280 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I125f9788718655ee88fa389fb14bd2c36342f8fe
2020-06-15main: Enable remote outputs later than local (DRM) outputsMarius Vlad1-20/+29
Will allow the client shell to receive, and to use as primary output, the local outputs first, without the need to (pre-)configure the client shell or the launcher. Makes integration much easier and will retain the same functionality we had with weston. Bug-AGL: SPEC-3280 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ib8ac80074ea515487ffe79b0801f5bfd069e9ff7
2020-06-15main, layout: Minor clean-ups and added some further loggingMarius Vlad2-30/+14
Identifies the output being used, and removes the need to have the macro set. At the moment purely informative, but might be needed in case of debugging. Bug-AGL: SPEC-3280 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I7bdb49e7f97ce49afb035ee7b089094fc4aad3a2
2020-06-15main: Retrieve the agl-shell-app-id from the config fileMarius Vlad1-0/+1
Just like local outputs, use the agl-shell-app-id specified in the 'remote-output' section to assign that output to the specific application id. Bug-AGL: SPEC-3280 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I43ba74889b8ea529ab9ec0ebdf8a8dd56762cc40
2020-06-15main: Retrieve the transform and scale from config fileMarius Vlad1-3/+12
We were missing retrieving the scale and transform for the remote-output. Bug-AGL: SPEC-3280 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I0842f62487a665d02e0cf9c005755a6260fad180
2020-06-15src: Create an ivi_output for the remote outputMarius Vlad1-14/+51
Ensures that we can retrieve the ivi_output from a weston_output using its destroy listener. Necessary for setting and retrieving the wl_output when activating/moving surfaces to that 'remote' output. Bug-AGl: SPEC-3280 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I1457c27c90826f4c71e64820c3d359566445eb5e
2020-06-15src: Hold a reference for remoting_api in the ivi_compositorMarius Vlad2-6/+9
This will be necesary a bit in the future, to ensure that we can't later on enable the remote output so we need access to the api. Bug-AGl: SPEC-3280 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ica13548c852efb7ae4cabade634a6629ed6fe215
2020-06-15main: Add the ability to load the remote pluginMarius Vlad3-0/+250
Streaming to 'remote' outputs needs the remote-plugin library. We build it automatically if we determine that the gst dependencies are satisfied, otherwise we're using a stub version for it. Unfortunatelly, upstream doesn't provide necessary header for the remoting.h so we copy-paste directly. Will follow up with upstream to provide headers for the plugins. Bug-AGl: SPEC-3280 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ide277b402c511ed075fa1c5aaaf7770b50359c35
2020-06-15desktop: Remove commiting code for the panelMarius Vlad3-73/+1
We no longer use older qtwayland version so there's no need to keep in place anymore. Bug-AGl: SPEC-3280 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Icad3d208ea96739b780dfef5911e855a7a39af6a
2020-06-15shell: Do not remove the black surface if we don't have a backgroundMarius Vlad1-1/+2
set for that output Bug-AGL: SPEC-3280 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I07ca7108e37dcdb992de0e2223bde3f9fa200863
2020-06-15desktop: Display a black surface for apps being moved using config fileMarius Vlad1-3/+9
Just like the 'remote' surface roles, put back a black surface if there's no background set and if it is the last surface on that output. Bug-AGL: SPEC-3280 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I7bd7ae55fc668753223a23462b697071faa16525
2020-06-15layout: Remove black surface when trying to use migrate views to otherMarius Vlad1-0/+7
outputs We install a black surface in the fullscreen layer for each output, and we need to remove it before adding the new surfaces/views. We did that aleady for 'remote' type of surfaces when categorizing the type, but here we use the configuration file to determine the output, but we were missing the black surface for that output. This verifies that the black surface for that output is in use, and removes the black surface if so. Bug-AGL: SPEC-3280 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I3c4ae90ee0983bc424c932715d9a1ff082117bef
2020-06-15src/: Use agl-shell-app-id to set-up views on a different outputMarius Vlad3-9/+46
This makes it easier to specify the application directly in the configuration file, without the ned to modify the application code. Bug-AGL: SPEC-3280 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ic38ca0aaf05ce8f1c4993341c9d767acfd25eb43
2020-06-15layout: Add a wrapper to print out the surface roleMarius Vlad3-4/+57
With this we add a few more debug statements to the log file. Nothing too spurious but helps debugging more quickly if needed. Bug-AGL: SPEC-3280 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: If345903428cbb9c895e22980fdf64aec3c03d3b7
2020-06-14src: Insert a black surface/remove it when the last remoteMarius Vlad3-5/+40
surface role is present Bug-AGL: SPEC-3280 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ia47c0539ff26d1378bb9ac75e19592d7b8b2b3bf
2020-06-14layout, desktop: Treat the remote surface role like the desktop oneMarius Vlad2-7/+55
Necessary changes so that we can handle the remote surface just like the regular desktop one. We use the same code when committing the surface but modify the completion part to only modify the pending output as to avoid remote surfaces interfering with the enum representing each surface type. Bug-AGL: SPEC-3280 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ied770c8fd8cd7021a7efb5cf07bc44ab2cf93cce
2020-06-14layout: Remove the quirks as now we have the policy hooks in placeMarius Vlad3-25/+2
to handle that With the policy hooks in place we no longer need this quirk to activate surfaces by default when starting up, and was potentially seen as hole to bypass the policy hooks. Remove it and just allow the policy hook to control how that happens. Bug-AGL: SPEC-3280 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I4c28648f0805e5c593c082c644d2e126b1d9df6b
2020-06-14src/: Add the remote surface roleMarius Vlad4-0/+87
This patch adds the 'remote' surface role, which clients can make use of to hint the compositor that it should place the surface on other output. While both private extension protocols (agl-shell and agl-shell-desktop) explicitly require a wl_output when activating or when setting surface roles, we still need the inform the compositor that the surface should be placed on another output. This is due to the activate_by_default functionality that requires having an output being present, with the default regular XDG desktop role deriving its output by using the output of the backgound surface (which is being normally set by the client shell). Just like pop-up dialog role and split surface role this patch adds another temporary hold up place before the surface is actually created. Bug-AGL: SPEC-3280 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ic67246ecc183826ae59b2c99a671885d61040249
2020-06-08src/: Add all surface roles to a wrapper for retrieving the outputMarius Vlad3-15/+18
Adds the other surface roles to the it. Bug-AGL: SPEC-3280 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ia0c659bfd0dbf96d53ee6f24d3c4296b3ffdad2d
2020-06-08layout: Do not attempt to activate a split or a fs surfaceMarius Vlad1-2/+23
As long as there is (an already created) surface in a split/fs type of role there's no point in trying to activate it. Users can mistakenly try to do that so have some logic in place to avoid it. Bug-AGL: SPEC-3334 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Id9b8e039b6d53fbfb4e310166a91c2cb6a45cb4e
2020-06-08layout: Resize the active surface when doing the splitMarius Vlad3-6/+71
This adds an intermediate geometry variable which is used to save and restore to the original available geometry when destroying the split surface. This takes care to inform the client that a new resize is needed when the split surface is destroyed or when the split surface is committed. The width and height of the split surface is derived from the available geometry area size (the available size of the background surface) but this can further adapted to be based on the split window size (that is, it could be specified by the client). This assumption is there to simplify the implementation. Bug-AGL: SPEC-3334 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ia484a922a7cbd314db2c878f81cb548458d1c1cd
2020-06-08layout: Allow to commit the fullscreen and split surface rolesMarius Vlad4-1/+119
Now that we have the ability to discern between fullscreend and split roles, use specific functions when doing the commit to further customize them. Bug-AGL: SPEC-3334 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Idf4ed55533c46925638a466e9713465d710b6845
2020-06-08layout: Remove unused ivi_compositor referenceMarius Vlad1-1/+0
Removes a unused warning about ivi_compositor. Bug-AGL: SPEC-3334 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I40dbbdfe6036f7aa7d9c38638c1fc79e13681765
2020-06-08shell: Determine the role typeMarius Vlad1-8/+4
Now that we have the ability to determine the role type between pop-up diaglos, full-screen, or split ones use the wrappers installed previously to make use of them. Keep the same functionality by activating the desktop surface if we determine we have one. Bug-AGL: SPEC-3334 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ibce3bc040ce3683ab41709d68d5fbf90d90ea539
2020-06-08shell: Introduce fullscreen and split role type of a surfaceMarius Vlad5-13/+206
With it, this also adds two pending lists, for each role type and aggregates the checks used to compare against the roles type when the surface is being created. There's no functional at this stage. Bug-AGL: SPEC-3334 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I1900399fe35d9dbc26a93c374ac2f86efa860ba6
2020-06-08desktop: Missing assert includeMarius Vlad1-0/+1
Commit a2f9566bdbfcb8ee added an assert but failed to include the proper header causing an warning and a failure when building locally. Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I5bd0754f0a8dee74e9d5b09d34d80633cb96e666
2020-06-08desktop: Handle correctly panel and bg removal of agl-shell unbindMarius Vlad2-15/+23
We don't need to free the ivi_surface when un-binding the agl-shell, as that should happen when `desktop_surface_removed()` is called. We'll just invalidate them depending on the role so that next time we're going to able to bind again. Bug-AGL: SPEC-3404 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I6e06b6a1029989bf3e09156b602b6eab6addc5da
2020-06-03README.md: Add documentation details about agl-shell and agl-shell-desktopMarius Vlad1-9/+169
This adds a few words about: - overall architecture and design - protocol extension, agl-shell and agl-shell-desktop - add inline code backticks for missing function names in policy API Bug-AGL: SPEC-3386 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I96f2b08d80ec10dda4e080a772bd2f2456535631
2020-05-12main: Convert to using the logging/debuggging fraemworkMarius Vlad1-25/+51
With this in place we're now using the new logging framework. Bug-AGL: SPEC-3352 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I5782b9a9fa825351c630af39bf7542d4bfa14efa
2020-05-12main: Add a (valid) return code when exitingMarius Vlad1-1/+6
Bug-AGL: SPEC-3352 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Id466a9d5bc253e5c65f7f2db328b6ea794457726
2020-05-12main: We don't have weston-debug extension availableMarius Vlad1-2/+0
Copy-pasta mistake, as we don't really have the weston-debug extension added. Bug-AGL: SPEC-3352 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I56c36f4d5af830ba5a869a80f73f7f9df3d2e106
2020-05-12meson.build: Add a meson variable to track libweston versionMarius Vlad1-3/+4
Avoids the need to modify, and potentially to forget (like I did), to modify multiple places when moving/migrating to newer libweston version. Bug-AGL: SPEC-3352 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ibab581f3e5a6b8253fad0a53dfd870cd4143b797
2020-05-12main: Subscribe to the logger scopeMarius Vlad1-0/+1
This is a no-op as the compositor isn't yet using the logging framework, but will be added in subsequent patches. Bug-AGL: SPEC-3352 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ieda47de45de621b095163d0e682e665c36484175
2020-05-12meson.build: Update build versionMarius Vlad0-0/+0
There have been suficient changes like the recent changes in the agl-shell-desktop to require another version update. Bug-AGL: SPEC-3269 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ibead5b3e8d474f5608785680528fb92a481380ed
2020-05-12policy-default: Install default for the state event notifyMarius Vlad1-0/+8
Bug-AGL: SPEC-3269 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Id5840ecd1384f15c67a5dd6070f4d02c0e6df690
2020-05-12policy: Add another hook for controlling the application state changeMarius Vlad2-0/+8
event With the introduction of the events that notify regular applications of others' application state we require some way of controlling that. This patch adds another hook for controlling just that. Bug-AGL: SPEC-3269 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I2ade01eb5dfa454e360edd2e3943df91975da88f
2020-05-12protocol: agl-shell-desktop: Send notification for application state changeMarius Vlad4-4/+67
The events are sent straight after the activation took place. The state changes are the surface role (for instance, pop-up) and the activate/de-activate type of event. With that information there's also a string type of data which can be used as easy way to forward data. Note that this isn't the proper way for applications to communicate with each other, but merely as a convenient way to pass data from one application to another. In order to hang-off the data, the 'activate_app' request also got an additional argument which is relayed back with the event. Bug-AGL: SPEC-3269 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I0c9be86f6ff227b59271cac1c060563b5aac9b6c
2020-05-12policy-default: Install default policy for deactivate requestMarius Vlad1-0/+8
Bug-AGL: SPEC-3269 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I9ea70e6f49eda0a475a185fc037cb2c86b2b2890
2020-05-12policy: Add a new policy hook for deactivating appsMarius Vlad2-0/+7
Bug-AGL: SPEC-3269 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I7260626819b78ff7e2a245dc0a5ef566919220f7
2020-05-12policy-default: Add the de-activate request to the default policyMarius Vlad1-1/+1
We didn't have a valid de-activate for it, but with the 'deactivate_app' that is no longer true to make use of it. Bug-AGL: SPEC-3269 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ife520e61360744231a13968f15bc0941ca163966
2020-05-12agl-shell-desktop: Add the ability to hide client windowsMarius Vlad4-2/+132
This would be particularly useful to pop-up kind of window(s). It implements the 'deactivate_app' request. For the pop-up role we just remove the view from the layer while for the desktop we store the previous surface and re-use it if that's set. Otherwise we just display the background surface. As we now allow to hide client windows, we need to able to activate/show them back so this also adds a slight modification to take care to handle the pop-up role separately when calling the 'activate_app' request. Bug-AGL: SPEC-3269 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Iec5ccbe2815f4b0e32086fd49856f5f338147f79
2020-05-12layout: Save the pending outputMarius Vlad1-1/+1
As de-activing apps make use of last_pending to retrieve the output, it is vital to keep pending output as well, as we ultimately depend on it. Bug-AGL: SPEC-3269 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I62854c3c886a142c35287d5ef1cf492a1a81ac99
2020-05-12shell: Store the ivi compositor in the desktop_clientMarius Vlad2-0/+4
Allows to retrieve the ivi compositor without passing addtional resource in the request. Bug-AGL: SPEC-3269 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I515e8133a8bdc6400932d3c08a112982546c3ff9
2020-05-12layout, desktop: Implement the pop-up roleMarius Vlad5-4/+160
Temporally store the application details in a list of pending applications as to be used when creating the desktop surface. Store the output alongside the x and y values, useful in setting up the initial positional values of the window. Bug-AGL: SPEC-3269 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Icae57378ff405a8770c074a3e2fe1e04535302ef
2020-05-12agl-shell-desktop: Allow to set role properties for the applicationMarius Vlad1-0/+21
This extends the agl-shell-desktop protocol with a new request that allows to set further properties on the window/client. Bug-AGL: SPEC-3269 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ia88e23c8c1cbc55c5423de480bba7f86c79897d0
2020-05-11shell: Display previously pending surface once the ready request was receivedMarius Vlad1-1/+7
Surfaces are being added to linked list of pending surfaces as long as the 'ready' request wasn't received, and are being categorized as regular apps once the 'ready' request is handled. But, in order to display it, the surface has to be activated. With this patch we force to display/show the last pending surface that was added before issueing a 'ready' request. Obviously, multiple surfaces of this kind will be displayed, but only the last one will remain displayed on the output, hence the refernce of just the last pending surface. A particular use-case that will benifit from this is when for instance the launcher application is started before homescreen. When homescreen starts it will also activate/display the launcher surface. Bug-AGL: SPEC-3341 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Iace641c3b65d0c5500fe336e592d2e8ada57d7e9
2020-05-04meson.build: Increase agl-compositor version for libweston8 upgradeMarius Vlad1-2/+2
Bug-AGL: SPEC-3352 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I03f38948de5676d1c73325045fa1badee01765e2