Understanding waylaid-ivi-extension 1.9.0 APIs usage

Vikas Patil vikasmpatil at gmail.com
Fri Mar 11 03:24:25 EST 2016


Hi Emre Ucan,

Any call I make to change the properties of the surface it fails with
error (ILM_FAILED) after the ilm_commitChnages a shown below. Not sure
why is this happening?

    ilmClient_init((t_ilm_nativedisplay)wlDisplay)

    ilm_surfaceCreate((t_ilm_nativehandle)wlSurface,
                             width, height,
                             ILM_PIXELFORMAT_RGBA_8888, &ilmSurfaceId);

    ilm_init();
    ilm_layerCreateWithDimension(&ilmLayerId, width, height);
    ilm_layerSetVisibility(ilmLayerId, ILM_TRUE);
    ilm_displaySetRenderOrder((t_ilm_display) 0, &ilmLayerId, 1);
    ilm_layerSetRenderOrder(ilmLayerId, &ilmSurfaceId, 1);

    /* ilm_surfaceAddNotification(ilmSurfaceId,&surfaceCallbackFunction); */
    ilm_commitChanges();

   -----------> here it fails: ilm _surfaceSetVisibility(ilmSurfaceId,
ILM_TRUE); (any othe surface call also fails.)



Thanks & regards,
Vikash

On Fri, Mar 11, 2016 at 12:56 PM, Ucan, Emre (ADITG/SW1)
<eucan at de.adit-jv.com> wrote:
> Hi Vikas,
>
> I am not sure. The surface is not on the layer.
>
> Maybe ilm_layerAddSurface failed ?
>
> Please check return values of ilm APIs.
>
> Best regards
>
> Emre Ucan
> Software Group I (ADITG/SW1)
>
> Tel. +49 5121 49 6937
>
>> -----Original Message-----
>> From: Vikas Patil [mailto:vikasmpatil at gmail.com]
>> Sent: Freitag, 11. März 2016 05:52
>> To: Ucan, Emre (ADITG/SW1)
>> Cc: genivi-ivi-layer-management at lists.genivi.org; genivi-meta-
>> ivi at lists.genivi.org
>> Subject: Re: Understanding waylaid-ivi-extension 1.9.0 APIs usage
>>
>> Hi,
>>
>> Is this an issue or expected behavior or my implementation missing
>> something?
>>
>> Thanks & Regards,
>> Vikash
>>
>> On Wed, Mar 9, 2016 at 5:55 PM, Vikas Patil <vikasmpatil at gmail.com> wrote:
>> > Hi Emre Ucan,
>> >
>> > Thanks for your comments.
>> >
>> > However when I try to create surface and also set the surface
>> > properties in one process (single application), application do not
>> > work. Am I missing something here? Any clues will be very helpful.
>> > Attached here the main.c (application code) for reference.
>> >
>> > If I do following sequence of calls in application, it don't show up
>> > on display and analyze command says surface is not on layer.
>> >
>> > ilmClient_init((t_ilm_nativedisplay)wlDisplay);
>> >
>> >     ilm_surfaceCreate((t_ilm_nativehandle)wlSurface,
>> >                              width, height,
>> >                              ILM_PIXELFORMAT_RGBA_8888, &ilmSurfaceId);
>> >
>> >
>> >     ilm_init();
>> >
>> >     ilm_layerCreateWithDimension(&ilmLayerId, width, height);
>> >     ilm_layerSetVisibility(ilmLayerId, ILM_TRUE);
>> >     ilm_displaySetRenderOrder((t_ilm_display) 0, &ilmLayerId, 1);
>> >     ilm_layerSetRenderOrder(ilmLayerId, &ilmSurfaceId, 1);
>> >
>> >     /* ilm_surfaceAddNotification(ilmSurfaceId,&surfaceCallbackFunction);
>> */
>> >     ilm_commitChanges();
>> >
>> >     ilm_surfaceSetDestinationRectangle(ilmSurfaceId, 0, 0, width, height);
>> >     ilm_surfaceSetSourceRectangle(ilmSurfaceId, 0, 0, width, height);
>> >     ilm_surfaceSetVisibility(ilmSurfaceId, ILM_TRUE);
>> >     ilm_surfaceSetOpacity(ilmSurfaceId, 1.0f);
>> >
>> >     ilm_layerAddSurface(ilmLayerId, ilmSurfaceId);
>> >     ilm_commitChanges();
>> >
>> >
>> > root at linux123:~# LayerManagerControl analyze surface 60
>> > Surface existance         | OK      |
>> > Surface on layer          | PROBLEM | Surface 60 is not on any layer
>> > root at orinoco-9939-a1:~#
>> >
>> > root at linux123:~# LayerManagerControl get scene
>> > screen 0 (0x0)
>> > ---------------------------------------
>> > - resolution:           x=800, y=480
>> > - hardware layer count: 0
>> > - layer render order:   1000(0x3e8),
>> >
>> >     layer 1000 (0x3e8)
>> >     ---------------------------------------
>> >     - created by pid:       0
>> >     - original size:        x=800, y=480
>> >     - destination region:   x=0, y=0, w=800, h=480
>> >     - source region:        x=0, y=0, w=800, h=480
>> >     - orientation:          0 (up is top)
>> >     - opacity:              1
>> >     - visibility:           1
>> >     - type:                 0 (unknown)
>> >     - surface render order:
>> >     - on screen:            0(0x0)
>> >
>> >
>> > Also if i use "ilm_initWithNativedisplay" instead of "ilm_init", in
>> > that case also application don't show up on display and also
>> > "LayerManagerControl"  do not work. Could you plase help me to do this
>> > right?
>> >
>> > root at linux123:~# LayerManagerControl get scene
>> > unknown object (16), message layer(?o)
>> > Failed to initialize wayland connection: Invalid argument
>> > [Warning] The ilm_control_context is already destroyed
>> > Interpreter error: failed
>> >
>> >
>> > However if I enable "ilm_surfaceAddNotification" and set the surface
>> > properties in callback "surfaceCallbackFunction" then it work with
>> > ilm_init. Also in this case if I use ilm_initWithNativedisplay instead
>> > of ilm_init then application works but "LayerManagerControl" do not
>> > work.
>> >
>> > Thanks & Regards,
>> > Vikash
>> >
>> > On Wed, Mar 9, 2016 at 3:23 PM, Ucan, Emre (ADITG/SW1)
>> > <eucan at de.adit-jv.com> wrote:
>> >> Hello Vikas,
>> >>
>> >> My answers are below
>> >>
>> >>> -----Original Message-----
>> >>> From: genivi-ivi-layer-management-bounces at lists.genivi.org
>> [mailto:genivi-
>> >>> ivi-layer-management-bounces at lists.genivi.org] On Behalf Of Vikas Patil
>> >>> Sent: Dienstag, 8. März 2016 11:25
>> >>> To: genivi-ivi-layer-management at lists.genivi.org; genivi-meta-
>> >>> ivi at lists.genivi.org
>> >>> Subject: Understanding waylaid-ivi-extension 1.9.0 APIs usage
>> >>>
>> >>> Dear All,
>> >>>
>> >>> I am trying to upgrade as follows. With this I am trying to run the simple-
>> egl
>> >>> (weston example test) (which I have modified to include apis from
>> ilmClient,
>> >>> ilmControl and ilmCommon to avoid the need for using any commands
>> using
>> >>> "LayermanagerControl"
>> >>> to get it working correctly and displaying). It was working fine previously
>> but
>> >>> after upgrade it is not working as expected.
>> >>>
>> >>> upgrade:
>> >>> - from wayland/weston 1.8.0/18.0   to   1.9.0/1.9.0
>> >>> - from wayland-ivi-extension 1.4.0   to   1.9.0
>> >>>
>> >>> However I was able to make work my sample app working in two ways 1.
>> >>> After using the layer-add-surface.
>> >>> 2. Using
>> >>> "ilm_surfaceAddNotification(ilmSurfaceId,&surfaceCallbackFunction)"
>> >>> and doing all surface related calls after configure event.
>> >>>
>> >>> I think I know bit and pieces (after looking at the commit logs) but not
>> the
>> >>> complete design and flow. Could you please elaborate what exactly has
>> been
>> >>> changed and how should it be used?
>> >>>
>> >>> It would be very helpful if someone can answer following queries too:
>> >>>
>> >>> 1. How to use ilmClient and ilmControl within single source/process?
>> >>> 2. Will LayermanagerControl also works if I use the client and control in
>> single
>> >>> process?
>> >>> 3. How to decide which following apis to use ? Could it be used in single
>> >>> process?
>> >>>
>> >>> ilmClient_init()
>> >>
>> >> This API is only required when you want to create surfaces.
>> >>>
>> >>> ilm_init()
>> >>> ilm_initWithNativedisplay()
>> >>
>> >> These are basically very similar. Ilm_initWithNativedisplay uses the
>> pregiven wl_display and ilm_init creates a wl_display itself
>> >>
>> >>> ilmControl_init()
>> >> You should not call this API directly. Ilm_init and ilm_initWithNativedisplay
>> calls this API internally.
>> >>
>> >> If you want to have ilmClient and ilmControl API in one precess, you have
>> to call:
>> >> - ilmClient_init
>> >> - ilm_init or ilm_initWithNativedisplay
>> >>
>> >>>
>> >>> 4. Is it must to use following apis to add surface to layer and changing
>> other
>> >>> surface properties as shown in layer-add-surface.c? or Without this also I
>> can
>> >>> use the client and control APIs and make application working properly?
>> >>>
>> >>> ilm_surfaceAddNotification()
>> >>> ilm_registerNotification()
>> >>
>> >> You need this API to notify your HMI for creation of surfaces/layers.
>> >>
>> >> If your HMI is creating its own surfaces, you do not need to use these
>> APIs.
>> >>>
>> >>>
>> >>> Sometime I also see following error when trying LayermanagerControl
>> while
>> >>> using (ilm_initWithNativedisplay(), ilmControl_init()) inside application,
>> what
>> >>> does it signifies?
>> >>>
>> >>> LayerManagerControl analyze surface 70
>> >>> unknown object (17), message layer(?o)
>> >>> Failed to initialize wayland connection: Invalid argument [Warning] The
>> >>> ilm_control_context is already destroyed Interpreter error: failed
>> >>
>> >> This error means that the wayland compositor does not respond.
>> >>
>> >>>
>> >>> Thanks & Regards,
>> >>> Vikash
>> >>> _______________________________________________
>> >>> genivi-ivi-layer-management mailing list genivi-ivi-layer-
>> >>> management at lists.genivi.org
>> >>> https://lists.genivi.org/mailman/listinfo/genivi-ivi-layer-management
>> >>
>> >> Best regards
>> >>
>> >> Emre Ucan
>> >> Software Group I (ADITG/SW1)
>> >>
>> >> Tel. +49 5121 49 6937



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