Qt Application Not Initially Displayed

Justin Noel justin at ics.com
Tue Sep 27 16:56:17 EDT 2016


I see what is going on now. When I get this callback the original
width and height is 0. I set static source and destination regions
(for testing purposes) which made the output of LayerManagerControl
look exactly the same when in the broken state or the good state. I
assume I should handle the surface callback set the source and
destination regions based on those properties.

Even if the ILM would do something automatic when a windows size
eventually gets set and source and dest regions were already set it
wouldn't so me any good as I need the original width and height to set
the source region for scaling to work.

Thanks,
--Justin


On Tue, Sep 27, 2016 at 4:33 PM, Friedrich, Eugen (ADITG/SW1)
<efriedrich at de.adit-jv.com> wrote:
> Hello Justin,
>
> are the destination and source regions correctly set up? You can see it with LayerManagerControl set scene.
>
> If the ivi-surface is created this has no width and height only after application will attach the buffer to it and commit this to the compositor.
>
>
> Best regards
>
> Eugen Friedrich
> Software Group I (ADITG/SW1)
>
> Tel. +49 5121 49 6921
>>-----Original Message-----
>>From: genivi-ivi-layer-management [mailto:genivi-ivi-layer-management-
>>bounces at mailman1.genivi.org] On Behalf Of Justin Noel
>>Sent: Tuesday, September 27, 2016 8:51 PM
>>To: genivi-ivi-layer-management at lists.genivi.org
>>Subject: Qt Application Not Initially Displayed
>>
>>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
>>_______________________________________________
>>genivi-ivi-layer-management mailing list
>>genivi-ivi-layer-management at mailman1.genivi.org
>>http://lists.genivi.org/cgi-bin/mailman/listinfo/genivi-ivi-layer-management



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