summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2020-03-11policy: Init policy framework APIMarius Vlad6-0/+527
This patch adds the policy framework, comprised from hooks which a policy engine can further customize, and which are checked upon surface creation, commit and activation. Users should create specialized versions of these callbacks when creating/desining a policy engine. Further more, it adds the posibility to further customize the policy engine by adding new states, events and policy rules. By default, the policy API is aware of known states like 'start' or 'stop', but also 'show' and 'hide' as events. A policy rule would allow to define the setup in which an event can happen based on the state of the rule compared to that of the system, the action event itself, the application and (optional) an timeout. The policy rules are there to specify the state, the event, and application, but it is ultimately handled by a hook which will be called to handle the event. The compositor will arrange to pass all that information back to the handler, so the policy engine is in control to check in what circumstances the policy can be satisfied. These policy rules allow to handle transitional states which are common in AGL. For instance: If one would want to display the application 'navigation' in 3 seconds after and state has been changed to 'start', it should do add the following rule: ('navigation', STATE_START, EVENT_SHOW, timeout, main_output) Then, when a 'STATE_START' state is propagated to the compositor the policy API will trigger a state change signal which in turn wil arm an timer to execute the event handler after a timeout 'timeout'. Bug-AGL: SPEC-3217 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ie03c5f9b1ddb964949e4f9797cbbe2dd2b32a6b6
2020-03-11ivi-compositor: Use the helpers for array lengthMarius Vlad2-2/+1
Bug-AGL: SPEC-3217 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I11f5b2a761062aeb5b8c146c2b3617362a353e76
2020-03-06meson.build: Do another agl-compositor version bumpMarius Vlad1-2/+2
With the new agl-desktop-shell protocol created let us bump the version once more so we know when that happened. Bug-AGL: SPEC-3252 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I88599fd2dc49e37349f0717baaca31a3f95cb849
2020-03-06meson.build: Install agl-shell-desktop extensionMarius Vlad1-1/+2
Bug-AGL: SPEC-3252 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Id7f5dedca9173ce32585fd555f1047d77508847c
2020-03-06protocol: Advertise the applications to regular clientsMarius Vlad2-0/+36
The application ids will be advertised when binding the protocol interface but also when the regular clients will create their surface. Client are responsible for filtering their own name. Bug-AGL: SPEC-3252 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ia196e7d3b34694d7cb169228429a0e940eae8b3b
2020-03-06protocol: Add agl-shell-desktop protocolMarius Vlad5-0/+108
Protocol intented for use by regular XDG application which want to tell the compositor to activate another application. This mimics the activate_app request from agl-shell, and assumes the application is already started. Bug-AGL: SPEC-3252 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I1f7bd1d8d2f7d8f1eedf710aef1bf1046846f9be
2020-03-04meson.build: Increase version of the compositorMarius Vlad1-2/+2
Bump the version of the compositor as well, as we switched to a newer version of libweston. Bug-AGL: SPEC-3180 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I345dbc4b992b23b784a35900ef754e39596a3082
2020-03-04meson.build: Build X11 backend optionallyMarius Vlad2-1/+29
libweston6 built and installed the x11 backend unconditionally, but this is no longer the case with newer version of weston. Also, poky-agl configuration specifically removes any distro features that contain x11. Users wanting to test the compositor under a x11 backend need to compile their own libweston version this shouldn't be a problem. Unfortunatelly, meson does not have a easy way to determine if a header is installed or not so after glancing over the documentation we need to use the compilers' 'has_header' function to determine if the x11 header was installed or not by the weston recipe. This makes sure that if we're building out-of-tree it finds the proper header as well. Bug-AGL: SPEC-3180 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I3dce7c1beaf5bfab31fb88bc0462c7eb8320cfc8
2020-03-04meson.build: Increase wayland-protocol version dependencyMarius Vlad1-1/+1
If we have newer wayland-protocols version make use of it. Bug-AGL: SPEC-3180 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Icce6771356f98599461ae09256a844fe1f1eca84
2020-03-04main: Add support for the logging context when creating the compositorMarius Vlad1-3/+25
instance The logging context was added in weston 7, but we didn't had supporting code for it. This creates a logging context, a logging log scope, and a logger subscriber. Bug-AGL: SPEC-3180 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I3f5687fc3b68b79e3fd37a100fd6fa1f3bc1a2ae
2020-03-04meson.build: Upgrade build and headers to libweston7Marius Vlad8-20/+20
Bug-AGL: SPEC-3180 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ifa74b658307ee40d789f90882d210ea2d65c2898
2020-02-14meson.build: Allow to install the private extensionMarius Vlad1-0/+23
This way clients can use wayland-scanner to generate their client headers, and do not need to copy manually the extension. Also, generate a pkgconfig file otherwise clients will have a hard time finding the proper pkgdatadir path in order to get the agl-shell xml file. Bug-AGL: SPEC-3167 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Id62e49b57c8864e0bdb695c03198eac782efcbeb
2020-02-11Update .gitreview fileJan-Simon Möller1-0/+5
This updates the gitreview file in the project . Signed-off-by: Jan-Simon Möller <jsmoeller@linuxfoundation.org> Change-Id: I28a65994e848a99da005fcdffa619faa48b8cca4
2020-02-10meson.build: Allow to build/install locallyMarius Vlad1-0/+13
The cflags from libweston6 already have a libweston6 prefix path, which is problematic when building locally as the compositor already uses 'libweston-6' as include directive. This only applies to situations where libweston-6 is not installed in system's path. Bug-AGL: SPEC-3150 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ib545e727b455fd872da15447e0cd54fea999d294
2020-02-10meson.build: Enable Wextra and transform warning messages into errorsMarius Vlad1-0/+2
Even though this is a bit too much it helps catch errors/type errors much sooner when building with yocto, as all of debug/verbose messages are suppressed normally. Bug-AGL: SPEC-3150 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Id7c48cb0e8b48f0f7ac6e9f4636b84c789c2e5e2
2020-02-10main: Avoid warning on un-initialized displayMarius Vlad1-1/+1
Bug-AGL: SPEC-3150 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Idda7b48313d05aa520a43a9af3db3a4be1710d9d
2020-02-07shell: Add a black surface in the fullscreen layerMarius Vlad3-1/+112
Now that we're capable of restarting the client shell without the need to restart the compositor, create a black surface and insert in the fullscreen layer as to denote that the client shell is no longer running. This black surface is removed when the 'ready' request is received and inserted back when the client shell unbinds from the agl-shell protocol. Also, we were missing implementation protocol specification as the presentation delay required a black surface being displayed instead, so this brings the implementation closer to that of the protocol specification. Bug-SPEC: SPEC-3161 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I40f01135583eea8af78d3077cdad97ad5ad450f5
2020-02-06desktop: Remove the surface in all casesMarius Vlad1-1/+1
It could happen that the surface was never switched to and maybe is not longer available when we try to search in the surfaces list. Avoids the case where retrieving the app_id name from a desktop surface no longer active causes a memory violation. Bug-AGL: SPEC-3160 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I0473dc0745bcf4d8bdc55f7ca6b7bc3bb8069a8f
2020-02-06desktop: Reset the active surfaceMarius Vlad3-0/+13
In case a previously active surface gets destroyed, we'll have a hard time detecting if it already been active when switching to it, as it will point a surface no longer present. Resets the ivi active surface in case the desktop surface itself is destroyed. Bug-AGL: SPEC-3159 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I11406888ece29da4b97ec4c28c746ac397742753
2020-02-06shell: Allow the client shell to unbind/rebind to agl-shell interfaceMarius Vlad1-0/+47
Restarting the client shell requires the compositor to restart, this removes the ivi_surfaces and from the ivi_output and normal surfaces, pending surfaces and re-initilizes the lists for handling them. Bug-AGL: SPEC-3158 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ic352ad5bc1e60b3df5b76a0239895aaf3aa81c56
2020-02-04layout: Do not delay mapping of desktop surface until commit timeMarius Vlad3-2/+103
On some older qtwayland versions (5.11) the weston_desktop_surface window geometry has all its members set to 0. The panel initialization takes place with the 'ready' request and this will result in an invalid x and y position for panels different than the top one. This patch alleviates that by not mapping the desktop surface in case we determine that the desktop_surface geometry is invalid and proceed on doing so when the surface is committed, which will allow to retrieve the correct desktop surface and set the proper location of the panel. That should be sufficient to display top/bottom panels until we switch a newer qtwayland version. This keeps the panel initialization in place, as to avoid any other changes in the future. Bug-AGL: SPEC-3136 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I7388444ffe213f0524898cd3a5b175d90985ff1c
2020-02-02layout: Use the background's surface ivi_output when activating apps byMarius Vlad3-1/+54
default In order to activate application by default, we need a ivi_output which for the desktop role that's not available at that time (the activation part actually will set-up one). Uses the bg output for this case. This is only activated by adding 'activate-by-default' bool variable under the '[shell]' section (in the ini configuration file). Bug-AGL: SPEC-3118 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ib44f0fcccc145216fb28fc9c26e5a065912ceef5
2020-01-30ivi-compositor: Add systemd notify messageMarius Vlad4-0/+219
Notifies systemd that agl-compositor has been started. Re-uses most of the weston bits. Bug-AGL: SPEC-3119 Change-Id: I1a0b41093b2ce68dd4a64475af18d27338712c3d Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
2020-01-30shared: Add some regular helpersMarius Vlad1-0/+141
Imported from weston, useful when will be adding systemd-notify, and potentially other bits. Adds MIN/MAX/container_of. Bug-AGL: SPEC-3119 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I2cb53784943ab3c5bdbc447611f30036f7c64e21
2020-01-30layout: Force a repaint of the entire outputMarius Vlad1-2/+4
For clients which do not update their own contents, not repainting the entire output will result in artefacts upon switching between running applications. Forcing an entire output repaint solves it. Bug-AGL: SPEC-3120 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I5279309a8e7a39ea588b405e08b7071e993f2584
2020-01-30layout: Print out when adding panels/backgroundMarius Vlad1-3/+17
Useful information but only enabled by a macro. Quickly identify if the (client) shell has added panels/background. Bug-AGL: SPEC-3121 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I3df276a2a72feade246332554df40b2fdc026258
2020-01-30src/: Add basic support for app switchingScott Anderson7-317/+316
- adds a new request for agl-shell, 'activate_app', which allows to specify which application should switch to. With it, client shell commands which application to switch to. - ties the layout (panel and background initizatlon) bits into its own specific file Bug-AGL: SPEC-3117 Change-Id: I1b3d89ff77c0e0e439666227ef3319b2107406c0 Signed-off-by: Daniel Stone <daniels@collabora.com>
2019-11-25Import source, backport to libweston 6.0icefish_8.99.5icefish_8.99.4icefish_8.99.3icefish_8.99.2icefish/8.99.5icefish/8.99.4icefish/8.99.3icefish/8.99.28.99.58.99.48.99.38.99.2Daniel Stone11-0/+3309
Signed-off-by: Daniel Stone <daniels@collabora.com> Change-Id: I7705fa82dab29a27e4913cd548a2f5c3247dc5ad
2019-10-11Initial empty repositoryJan-Simon Moeller0-0/+0