Qt Application Not Initially Displayed
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
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()
b) This might suggest only full screen works, but if I reverse
full screen and normal it also works
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!
More information about the genivi-ivi-layer-management