Age | Commit message (Collapse) | Author | Files | Lines |
|
After the shell UI is started we can tell clients the available geometry
area, and with it, they can avoid resizing to the surface size.
Bug-AGL: SPEC-3839
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Id30617dadc665d1ca202a505d98e70eed592e856
|
|
This will guard against clients do not have an application id, or they
weren't activated at all.
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Iee58c0f54efdecce82ff07e0916ebef15f7f64d8
|
|
Currently agl-compositor notifies about application ids which can be
activated/deactivated, as well as the application state. However, when
an application is destroyed this information is not communicated to desktop
making it out of sync with the actual list of available applications.
To overcome this limitation extend the protocol and the logic to notify
about application destruction on surface remove.
Signed-off-by: Walter Lozano <walter.lozano@collabora.com>
Change-Id: Ib766cf3f3fbd10f55b85212480dc4717ab1bec22
|
|
- To allow unregistered applications, set allow_unregistred_app=true
in .ini file under core section of /etc/xdg/weston/weston.ini .
Bug-AGL: SPEC-3738
Signed-off-by: Anusha Gugale <external.agogale@jp.adit-jv.com>
Change-Id: Ic56564ea97900df0091d92a2dd4ed1bc7cb0559f
|
|
- To hide unnecessary internal interfaces from user, reconstructed
public files of librba. At this time, default constructor has been removed.
Bug-AGL: SPEC-3738
Signed-off-by: Anusha Gugale <external.agogale@jp.adit-jv.com>
Change-Id: I957796861081c79df9018cac92bd06927952924d
|
|
Trivial change to display which are API calls, which are Wayland ones.
Bug-AGL: SPEC-3386
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I265e19baaa7437af4221a71378706661395b4445
|
|
- Added rba-policy option in meson file
- Created new rba adapter file to call rba interfaces from librba
- All the application from Homescreen will be allowed to
display through rba policy as its added in RBAModel.json
Bug-AGL: SPEC-3738
Signed-off-by: Anusha Gugale <external.agogale@jp.adit-jv.com>
Change-Id: Iffd4ac16d9abe768476d025556cbe98a31553288
|
|
For some time now, yocto/OE no longer builds all weston back-ends, which
means the X11 is no longer supported on AGL platform.
The agl-compositor can be built, assuming all dependencies have been
satisfied, without the need of having an AGL or yocto/OE environment,
but so far, I've never tried using SDK directly.
This patch should allow building the compositor, by only using the AGL
SDK, and instead of using the local pkg-config, only use what is
available in the SDK sysroot. This takes care of assuming that X11
back-end is available, when in reality, in the AGL SDK platform that is
not the case.
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Ia2a182b9c3015f14f82043a04e83e917cd99bf6f
|
|
Displaying the application surface as soon as started required
activating the surface by default. With this patch, we give the
possibility to do it conditionally, as it helps CI with cases where we
don't really want other applications change the active surface.
With applications that start by default, this interferes with the
ability to take a screenshot with just the background.
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I6e826a6715b9a348181df80ed53ffaa6b65b7d2b
|
|
Observed when trying to activate (a previous one, as a result
of deactivation) a surface that didn't had an application id set.
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I3c39ae7dfb237e53f4b2bad64e7bc5ef91a76f0c
|
|
As libweston doesn't currently have a rate limiting the log message
function, use a static variable to limit the amount of log message we
might be seeing if application do not set-up an app_id.
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I4fb3a5b7421a154d8da483b2ac577df7a60e09cc
|
|
Provides empty implementations to avoid sprinking ifdefs everywhere. The
transmitter plug-in does not expose a pkgconfig file we instead resort
to test again waltham protocol (which is used by the transmitter) and
the the remoting plug-in.
Fixes a minor deps check in the meson file.
Bug-AGL: SPEC-3691
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Id25d21d2ef0c6e55575c2e7685cda73e401db015
|
|
In order to follow the best practices perform wl_list_init() after
wl_list_remove() on shell_ready.
Signed-off-by: Walter Lozano <walter.lozano@collabora.com>
Change-Id: Ia5ea915a5ad55e8251e3bc86c87ddfc140bbe592
|
|
In some special corner cases a surface can be removed while it is
still in the pending list. An example of this case is when a surface
is added and removed before the system is ready. Under this circumstances
the surface still has role == ROLE_NONE and is in the pending list.
The fact of not removing the surface from the pending_list ends in a
segfault when the system is ready.
In order to fix the issue, remove the restriction to only remove surfaces
with role != ROLE_NONE.
Signed-off-by: Walter Lozano <walter.lozano@collabora.com>
Change-Id: Ia71b6c3ca214849448c935cc09039581d0e209a8
|
|
Clients not binding to agl_shell_desktop will cause spurious signal
emits when they commit the changes. Make sure we only attempt to
advertise if the are clients.
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I5c790b105b7c7f7d759e8a8fc2c64713df22d561
|
|
Some frameworks like GTK-3 delay the set_app_id until title and
parent are set, which makes ivi_check_pending_desktop_surface
unable to set the proper role on surface_added. A consequence
of this behaviour is that is not possible to use set_app_property
to configure an application as popup.
Instead, delay the creation of the surface until committed to give
the chance to have a valid app_id configured.
Signed-off-by: Walter Lozano <walter.lozano@collabora.com>
Change-Id: I3f672fb365f48659711c866c45a21df6058a5a02
|
|
Instruct waltham-transmitter-plugin that it can destroy its own
surface representation when the weston_surface is also destroyed.
Bug-AGL: SPEC-3601, SPEC-3611
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Ie0e5409b21c043b8c98bebb4d77808227ee38aca
|
|
When 'pushing' the surface store a reference of the
weston_transmitter_surface so we can later inform the plug-in when the
weston_surface is destroyed, so that it can also destroy the
transmittter_surface from its side.
Bug-AGL: SPEC-3601, SPEC-3611
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I7fd1df2130e53e8c226c7a751c598765608ae6b3
|
|
And the output is not a waltham version.
Bug-AGL: SPEC-3601, SPEC-3611
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I9ce3354fe59ad5f4de691823627e3603fc4cb226
|
|
Synthetic change, to group them together. Makes reading the code a bit
more clearer.
Bug-AGL: SPEC-3601
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Id1f5ad9a408591a010678a53eff0f3cad2d269d9
|
|
The receiver expects that the sender/transmitter will inform it when it
can create a surface and it can start the gstreamer pipeline.
The transmitter plug-in exposes a way to call that using 'push_surface'
callback. So, whenever we detect that the remote surface is to be
assigned to a waltham-type of output, we would need to call into this
'push_surface' callback. This acts as notification mechanism for the
remote side.
Bug-AGL: 3611
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Ia5db0d8f2356708eaee3fbaabed2b3ba3ac97eb6
|
|
The waltham-transmitter will no longer create an output on its own so
we'll re-use the remoting plug-in for streaming out the buffers to the
remoting side.
Bug-AGL: 3601
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I6f85c3dfc54e81e8fa05f518b77fae24334fafc1
|
|
types of remoting outputs
This is required to further differentiate between remoting outputs as for
waltham we would need to use the transmitter_api to forward a surface
to the remoting output.
Bug-AGL: 3611
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I7c59fd448226afab0492fe674e8770d3b9a995aa
|
|
This is the same as the remoting plug-in, given that we'll be using the
remoting plug-in to create the remoting output.
The difference would be that instead of the 'remoting-output' section
we'll use 'transmitter-output', with all other section specific being
the same. For instance, using agl-shell-app-id we can instruct the
application to be assigned to that 'transmitter-output'.
Bug-AGL: SPEC-3611
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Ic16b6b9672802f4f83be121385c0798b9dbe08e9
|
|
We don't have any checks against for not having an app_id being set.
Bug-AGL: SPEC-3601
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Iff7f633bced60b1177f53246880952a06cb716f0
|
|
Creating and inserting the black surface will require to have an
valid weston output. That might not be always the case so guard
against no output being set.
Bug-AGL: SPEC-3601
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: If7034bf0259fee164ba0f4b6a6ac3ef7d6bf30d6
|
|
Use the specific output destroyer handler, instead of destroying it in
the handler itself. This way we can still clean-up and avoid any leaks,
and still not trip ourselves causing a use-after-free, when the output
is destroyed by libweston.
Bug-AGL: SPEC-3630, SPEC-3672
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Reported-by: Walter Lozano <walter.lozano@collabora.com>
Change-Id: I11916245b85d2541286ee438284601b466dc20c2
|
|
When using GTK-3 to create apps, the framework issues set_parent_id
which forces a surface to be added even before the app_id is set.
This causes the compositor to fail to advertise the app.
This patch tries to overcome this issue by checking on surface commit
if the surface was previously advertised, and do it if it was not.
Signed-off-by: Walter Lozano <walter.lozano@collabora.com>
Change-Id: I4e5fec82c1008c30d8ae7d213d85a82e39c404c3
|
|
When using GTK-3 to create apps, the framework issues set_parent_id
which forces a surface to be added even before the app_id is set.
This causes the compositor to try to advertise an invalid app_id.
This patch avoids advertising an app which has no app_id set.
Signed-off-by: Walter Lozano <walter.lozano@collabora.com>
Change-Id: Iadcea106e6464b41171a2aa92aa0eed3a8e2ff2d
|
|
If agl-compositor is started without XDG_RUNTIME_DIR defined, an error
arises and the system tries to exit cleanly. However, in this process a
segfault is produced and the terminal is left misconfigured.
The cause of this segfault is related to the destruction of the black
surface, which is not handled properly in this corner case.
In order to avoid this issue and as an initial fix, create the surface
after the listening socket, which causes that the check for the var
XDG_RUNTIME_DIR to be done before the surface creation.
Bug-AGL: SPEC-3623
Signed-off-by: Walter Lozano <walter.lozano@collabora.com>
Change-Id: I04760828f9ce5b5a6d4a31aeccdefe779a1c15a3
|
|
Bug-AGL: SPEC-3580
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I3504fc2c6dda3c10a67a23e68126201acd4ba455
|
|
Bug-AGL: SPEC-3580
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I9adf8c707991301f5cf214b492ce3c6ee45997e2
|
|
This allows for basic input handling, to better customize how we handle
out seat capabilities to the client. One useful outcome of this is the
fact that we re-advertise to the client that in some situations there
might not be a pointer available. That should let the client know as to
avoid creating a pointer surface.
Bug-AGL: SPEC-3591
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I4624a956264e9fa12a86da005944e9b426dde10a
|
|
The client allows to take screenshots of all outputs, a specific output
(making use of xdg_output_manager interface) or just listing outputs.
Bug-AGL: SPEC-3580
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Idd60d4892adf4c2ea493477421b6e5623e0ca1f0
|
|
Just like weston, we add a private protocol. Underneath we make use of
the weston renderer to get a hold of the pixels and transfer them to a
user-supplied buffer. This only brings up the server side implementation
of the protocol.
Bug-AGL: SPEC-3580
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I02a07ad5eb492ef2ecad74efb34d1453ebcbedc0
|
|
Currently agl-compositor keeps track of the active app and uses this
information to to also keep track of the previous one. This is useful
to allow to show the previous activated app when deactivating the
current one.
However, when deactivating all the apps, for instance the background,
this information is not saved, which causes that when activating and
deactivating and new app, instead of the background a different app
shows.
This patch sets output->previous_active = NULL when displaying the
background to overcome this issue.
Signed-off-by: Walter Lozano <walter.lozano@collabora.com>
Change-Id: I29c3f8972d6055d2387e0fdcbb28574d3d2e38a7
|
|
The following is necessary in case the app_id is set-up at a later point
in time, and it is intended as a work-around for WAM/chromium68 clients
that specify the app_id after the initial surface commit. Note that
activation will not work, in case the application will never set-up an
app_id because we can't identify which app_id to switch to.
The activation phase is needed to inform the client of the window
dimensions, and it is mandated by the XDG-shell protocol.
Bug-AGL: SPEC-3544
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I49a7270dcb68e525fc9d85db2cd189a50c02502f
|
|
Spotted by code inspection, but haven't seen in the wild.
Bug-AGL: SPEC-3544
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Ie1f0191e7c987c1688c820e1cabbc581b3679232
|
|
We are missing the activate_by_default hooks for split, pop-up and and
fullscreen roles. Part of that is due to the fact that these roles are
handled a bit differently that the remote and desktop roles.
Note, these hooks are different than the commit ones -- which are
'installed' a bit earlier. This means that there was still a possiblity
one might've used that hook to retrieve the surface role for instance,
and act accordingly.
Also, note that we allow for pop-up/dialogs be activated by using the
deliberate 'activate' request, which allows one to customize the policy
to deny certain pop-up/dialogs to be activated by default, but allow do
so explictly when using the 'activate' request.
Bug-AGL: SPEC-3494
Reported-by: Scott Murray <scott.murray@konsulko.com>
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I634bbb5915e65880c1d47363cf6dae529feac9d2
|
|
Given that now other surfaces roles will be active by default, we need
to let other application aware of that fact by advertising state change.
Print some debug message while at it, to make it more consistent with
the desktop role.
Bug-AGL: SPEC-3494
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Ia9d959a0912e330303fa3d959ce600237edf35b4
|
|
While looking into activation by default of other surfaces, noticed that
we're missing consistency on how we handle other types of surface roles.
This patch, activate all other surfaces by default when starting up,
even if they are started before or after the client shell.
Expecting and assuming the same behaviour is important into trying
to establish some common work-flow for applications.
Bug-AGL: SPEC-3494
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I90e764c6c3a7ed543934ee6f68fa716d90ff151e
|
|
As we don't have any proper mechanisms in place to perform some
level of authentication on the clients binding to the private extensions,
we will resort to allow that to happen, under the default, allow-all policy.
In the same time we add some helpers for checking which applications can
bind to the private extensions but this is for the deny-all policy.
This also includes cluster-receiver and cluster-dashboard application to
that array, as without it the cluster-demo will not all work when using
the deny-all policy.
Bug-AGL: SPEC-3382
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I9ea0d8fd63a323bfcee6aa146a1617aa572d131f
|
|
With commit 9827cfd25578, application not having a valid app_id will
fallback to being assigned the desktop role. In this case, destroying
those kind of surfaces will not have an output assigned, so add a
code path for those as well. Found while testing cluster-receiver with
waylandsink and sub-surfaces.
Bug-AGL: SPEC-3382
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: If20bdcf02810c16167fdbfbf30f3fd367c43069b
|
|
Not all application will set-up an app_id and we might end up
checking against those. So avoid doing that because str* kind of like
functions do not like that. Discovered when playing with cluster
receiver and sub-surfaces.
Bug-AGL: SPEC-3382
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I31b454fd3ccb1770775a00b1c953d9cbef827909
|
|
Replaces the agl-shell-desktop mention that all clients can bind to the
interface with a mention that that happens only if the policy engine
allows.
Bug-AGL: SPEC-3413
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Ieb6b9df1181cb7a0ad6da09519655ebd8f73a1a5
|
|
This patch fixes the situation where the application wasnt't allowed
to create an (ivi) surface, leading to an illegal access of the surface
by the destroyer desktop_api callback.
In case we deny the applications to create the (ivi) surface we let the
desktop_api handle the removal of the surface. A surface without a
role won't have an output set so we use that to determine if we can
remove the link for it. We also avoid dealing with the surface
destruction in the desktop api itself rather than handling it on the
error path of the hook itself.
Bug-AGL: SPEC-3413
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I0fd4d83924b0188f606544b41e70b631c90fc8ee
|
|
Note this will deny any binding to the private extensions by default,
if the compositor is not built with SMACK support.
Defines a potential lists of applications permitted to
create/display/activate surfaces/applications.
Bug-AGL: SPEC-3413
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I2dbd3b3ef0d519fde7952f97e0303ff2b151aaa0
|
|
Use the client file descriptor to find out the SMACK label of that
client. Enforces homescreen to bind to agl_shell and launcher and
alexa-viewer to bind to the agl-shell-desktop interface. Allows access
to agl_shell_desktop to tbtnavi and hvac as those contain example code
on use it for moving it to other outputs.
Bug-AGL: SPEC-3396
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I1a1abf2d2786624ffa484b6577de17f5010d5ac6
|
|
In this manner we can control which clients can bind to which interface
(either the agl_shell one or the agl_shell_desktop one).
Bug-AGL: SPEC-3394
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I9da4b3596dc5980b325aada8f8fcc7a11431c755
|
|
Pending surfaces will only get a valid role when the client shell sends
out ready() request to start presenting. Corner-case would be that
pending surface is destroyed, moment in which we realise we never set-up
an output. This is corner-case and treat as is.
Bug-AGL: SPEC-3448
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I2eb9c937878fb6af56f3fbcf0d5da10a8003f634
|