Qt Application Not Initially Displayed

Justin Noel justin at ics.com
Tue Sep 27 14:44:21 EDT 2016


As I am testing the launcher for the GDP I notice that some
applications are not being displayed if I stack the surfaces/layers on
a ilmNotification surface callback. There seems to be a timing issue
as the surfaces always gets displayed if I wait 500ms before handling
the callback. Here is my workflow:

Start an application via systemd
    Wait for surfaces to be created
Callback is called on a thread with a new surface in it's parameters
    Callback posts an event to the event loop copying the surfaceId
Event handler on main thread is called to add / show the surface
    Some accounting takes place
    Layer is created if necessary
    Layer and Screen are restacked to show this new surface

I modeled my code after the gdp-hmi launcher and the ILM examples. Qt
hello world applications fail to be displayed. If after some time I
restack the layer/screen the application appears and work normally.
The EGL Navigation and Input examples always show without the need for
a second stacking.

I was able to get Qt applications to be initially displayed by doing
one of two things:

1) Place a msleep(500) in the callback before posting my event. This
suggests maybe the surface it not fully initialized when I'm doing the
stacking. However, LayerManagerControl get scene displays the correct
stack.

2) Cause Qt to re-expose the window. I stumbled across this when I
notice some Qt apps worked.

    a) Cause Qt to re-expose the application via a showFullScreen()
           Window {
                visible: true
                Component.onCompleted: showFullScreen()
           }

     b) This might suggest only full screen works, but if I reverse
full screen and normal it also works
           Window {
               visible: true
               visibility: Window.FullScreen
               Component.onCompleted: show()

     c) It does not work without an actual transition of window state.
So calling show() again doesn't work

Has anyone run across this behavior before? Thanks!

-Justin



More information about the genivi-ivi-layer-management mailing list