Understanding waylaid-ivi-extension 1.9.0 APIs usage

Vikas Patil vikasmpatil at gmail.com
Wed Mar 9 07:25:43 EST 2016


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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: main.c
Type: text/x-csrc
Size: 14260 bytes
Desc: not available
URL: <http://lists.genivi.org/pipermail/genivi-ivi-layer-management_lists.genivi.org/attachments/20160309/1397ae2f/attachment.c>


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