[PATCH weston 1/4] ivi-shell: change layer visibility to bool
Daniel Stone
daniel at fooishbar.org
Tue Feb 13 15:11:19 UTC 2018
Hi,
On 13 February 2018 at 15:00, Pekka Paalanen <ppaalanen at gmail.com> wrote:
> On Thu, 8 Feb 2018 13:53:54 +0000
> "Ucan, Emre (ADITG/ESB)" <eucan at de.adit-jv.com> wrote:
>> Yes I saw a similar problem when I tested previous ivi patches.
>> I run make clean & make & make check. Then it worked.
>>
>> Maybe it is releated to weston-tests-env changes from this commit:
>> https://cgit.freedesktop.org/wayland/weston/commit/?id=0707b0e5d48fa6f1ac41ea60c2adc2e6430c7425 ?
>
> Daniel helped to pinpoint the cause of this failure. After the
> ivi-shell patches, we now get hmi-controller.so loaded when before it
> was not. Hmi-controller creates layers and surfaces, so it breaks tests
> that expect to be in complete control over the scene.
>
> When the controller plugins were changed to be loaded as normal weston
> plugins, the directive to load the test controller no longer overrode
> the weston-ivi.ini by default loading hmi-controller. Now they get
> loaded both, and hmi-controller init races to break the tests.
>
> Could you figure out a fix for this, please?
>
> I suppose adding a delay in the test client would make the test fail
> always, perhaps.
I actually see the hmi-controller module being loaded in both good
(make -j8 check) and bad (make -j8 distcheck) setups. It looks like
the only difference is timing, both in terms of load and also
ordering.
On a good run, surface_properties_changed_notification() and
surface_on_many_layer() come very early on, before
weston-ivi-shell-user-interface is ready (this appears to take
700ms?). On a bad run, these are sequenced later.
ivi-shell-user-interface signalling ready will create a
surface-creation notification listener inside hmi-controller, which
will add surfaces to the application layer. This causes
surface_properties_changed_notification() to fail, as the layer
addition has dirtied the surface and caused
ivi_layout_commit_changes() to generate a notification for this. It
also causes surface_on_many_layer() to fail, as it is on the three
test layers as well as the ivi-shell-user-interface application layer.
Cheers,
Daniel
More information about the wayland-devel
mailing list