Touch events not reviving with wayland-ivi-extenssion 1.4.0 and wayland video sink

Vikas Patil vikasmpatil at gmail.com
Wed Jul 13 13:26:04 UTC 2016


Dear All,

Seeing the below wayland log without above workaround focus is going 0
to surface. I think it means surface is failing to grab the touch
focus. What could be the reasons of focus not getting setup?

I think this [3687363.407] ivi_input at 19.input_focus(90, 4, 0) need to
be [3687363.407] ivi_input at 19.input_focus(90, 4, 1) for touch to work.
any ideas here?



[3687298.588]  -> wl_surface at 9.commit()
[3687314.601] wl_buffer at 30.release()
[3687314.718] wl_callback at 29.done(299298)
[3687314.793]  -> wl_surface at 12.frame(new id wl_callback at 29)
[3687314.910]  -> wl_surface at 12.attach(wl_buffer at 28, 0, 0)
[3687315.022]  -> wl_surface at 12.damage(0, 0, 800, 480)
[3687315.140]  -> wl_surface at 12.commit()
[3687340.439] wl_display at 1.delete_id(14)
[3687340.620] wl_display at 1.delete_id(26)
[3687340.690] wl_display at 1.delete_id(29)
[3687340.811] wl_callback at 26.done(299368)
[3687341.024]  -> wl_surface at 12.frame(new id wl_callback at 26)
[3687363.407] ivi_input at 19.input_focus(90, 4, 0)
[3687366.986]  -> wl_compositor at 3.create_region(new id wl_region at 14)
[3687367.165]  -> wl_region at 14.add(0, 0, 800, 480)
[3687367.286]  -> wl_surface at 12.set_opaque_region(wl_region at 14)
[3687367.347]  -> wl_region at 14.destroy()
[3687367.394]  -> wl_surface at 9.commit()
[3687376.888] wl_buffer at 27.release()
[3687376.987] wl_callback at 29.done(299368)
[3687377.077]  -> wl_surface at 12.frame(new id wl_callback at 29)
[3687377.161]  -> wl_surface at 12.attach(wl_buffer at 30, 0, 0)


Thanks & Regards,
Vikash

On Tue, Dec 15, 2015 at 8:24 PM, Vikas Patil <vikasmpatil at gmail.com> wrote:
> If I force to pass the if condition as follows using the surface id
> even though surfaces doesn't match, it is working. Does this might be
> due to the way I created the surface 90? Surface 90 also has
> subsurface, does it anyway related to subsurface?
>
> Alos "grab->touch->focus->surface" what this surface is and who creates it?
>
> surfID = interface->get_id_of_surface(surf_ctx->layout_surface);
>
>         /* Touches set touch focus */
>
>         if (grab->touch->num_tp == 1) {
>
>             if (surf == grab->touch->focus->surface ||  surfID == 90) {
>
>                 surf_ctx->focus |= ILM_INPUT_DEVICE_TOUCH;
>
>                 send_input_focus(seat->input_ctx,
>
>
> interface->get_id_of_surface(surf_ctx->layout_surface),
>
>                                  ILM_INPUT_DEVICE_TOUCH, ILM_TRUE);
>
>             }
>
>
> Thanks & Regards,
> Vikash
>
> On Mon, Dec 14, 2015 at 8:53 PM, Vikas Patil <vikasmpatil at gmail.com> wrote:
>> I am hitting else part of below code for this issue. Any ideas?
>>
>> touch_grab_down() from ivi-input-controller.c
>>
>>  /* Touches set touch focus */
>>         if (grab->touch->num_tp == 1) {
>>             if (surf == grab->touch->focus->surface) {
>>                 surf_ctx->focus |= ILM_INPUT_DEVICE_TOUCH;
>>                 send_input_focus(seat->input_ctx,
>>
>> interface->get_id_of_surface(surf_ctx->layout_surface),
>>                                  ILM_INPUT_DEVICE_TOUCH, ILM_TRUE);
>>             } else {
>>                 surf_ctx->focus &= ~ILM_INPUT_DEVICE_TOUCH;
>> <----------------------------------------------------------
>>                 send_input_focus(seat->input_ctx,
>>
>> interface->get_id_of_surface(surf_ctx->layout_surface),
>>                                  ILM_INPUT_DEVICE_TOUCH, ILM_FALSE);
>>             }
>>         }
>>
>>         /* This code below is slightly redundant, since we have already
>>          * decided only one surface has touch focus */
>>         if (!(surf_ctx->focus & ILM_INPUT_DEVICE_TOUCH))
>>             continue;
>> <-----------------------------------------------------------------------------
>>
>>
>> Thanks & Regards,
>> Vikash
>>
>> On Mon, Dec 14, 2015 at 3:25 PM, Vikas Patil <vikasmpatil at gmail.com> wrote:
>>> Sorry. Forgot to attach the log file. Attached here.
>>>
>>> Thanks & Regards,
>>> Vikas
>>>
>>> On Mon, Dec 14, 2015 at 3:24 PM, Vikas Patil <vikasmpatil at gmail.com> wrote:
>>>> Hi Eugen Friedrich
>>>>
>>>> Thanks a lot for your quick reply.
>>>>
>>>> Attached here the file with WAYLAND_DEBUG=1 log when the gstreamer
>>>> plug-in is in use. I can see "ivi_input at 18.input_focus(90, 4, 0)" for
>>>> the surface from plug-in but no touch events.
>>>>
>>>> Here is the output of APIs
>>>>
>>>> root at linux-9939-a1:~# LayerManagerControl get input device default capabilities
>>>> failed to get surface context in ilmControl
>>>> failed to get surface context in ilmControl
>>>> failed to get surface context in ilmControl
>>>> failed to get surface context in ilmControl
>>>> failed to get surface context in ilmControl
>>>> pointer
>>>> keyboard
>>>> touch
>>>>
>>>> root at linux-9939-a1:~# LayerManagerControl get surface 90 acceptance
>>>> Interpreter error: 'acceptance' not recognized.
>>>>
>>>> root at orinoco-9939-a1:~# LayerManagerControl get input devices with all
>>>> failed to get surface context in ilmControl
>>>> failed to get surface context in ilmControl
>>>> failed to get surface context in ilmControl
>>>> failed to get surface context in ilmControl
>>>> failed to get surface context in ilmControl
>>>> default
>>>>
>>>> root at linux-9939-a1:~# LayerManagerControl get input focus
>>>> failed to get surface context in ilmControl
>>>> failed to get surface context in ilmControl
>>>> failed to get surface context in ilmControl
>>>> failed to get surface context in ilmControl
>>>> failed to get surface context in ilmControl
>>>> surface 90:
>>>> surface 63:
>>>> surface 62:
>>>> surface 61:
>>>> surface 60: pointer keyboard
>>>>
>>>>
>>>> Thanks & Regards,
>>>> Vikas
>>>>
>>>> On Mon, Dec 14, 2015 at 3:01 PM, Friedrich, Eugen (ADITG/SW1)
>>>> <efriedrich at de.adit-jv.com> wrote:
>>>>> Hello Vikas,
>>>>>
>>>>> Could you please add the WAYLAND_DEBUG=1 traces from you application, to see if the input events are reaching the client.
>>>>>
>>>>> Also the output of the following API would be helpful:
>>>>> ilm_getInputFocus,
>>>>> ilm_getInputDevices,
>>>>> ilm_getInputAcceptanceOn(with you surface id)
>>>>>
>>>>> the API's will return a list of devices or surfaces, please print the complete list.
>>>>>
>>>>>
>>>>> Best regards
>>>>>
>>>>> Eugen Friedrich
>>>>> Software Group I (ADITG/SW1)
>>>>>
>>>>> Tel. +49 5121 49 6921
>>>>>
>>>>>> -----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: Samstag, 12. Dezember 2015 12:57
>>>>>> To: genivi-ivi-layer-management at lists.genivi.org; meta-
>>>>>> freescale at yoctoproject.org; Tanibata, Nobuhiko (ADITJ/SWG); Carlos Rafael
>>>>>> Giani; wayland mailing list
>>>>>> Subject: Touch events not reviving with wayland-ivi-extenssion 1.4.0 and
>>>>>> wayland video sink
>>>>>>
>>>>>> Dear All,
>>>>>>
>>>>>> I am using wayland video sink (i.e. imxeglvivsink) from gstreamer1.0-plugins-
>>>>>> imx [1] to play the video along with weston 1.8.0 and wayland-ivi-extenstion
>>>>>> 1.4.0. I have modified “imxeglvivsink” to have the ilm and touch input
>>>>>> support [2]. Basically I am posting touch events on GST bus and application
>>>>>> want to have the touch can read the messages and process the touch. This is
>>>>>> working fine if I don’t load the “ivi-input-controller.so”. If I load the “ivi-input-
>>>>>> controller.so”
>>>>>> I am not able to get the touch event inside this plug-in. I have tried setting
>>>>>> touch input focus to the surface from this wayland video plug-in using
>>>>>> “LayermanagerControl” and ilm_setInputFocus” [3] but no luck.
>>>>>>
>>>>>>
>>>>>> Also touch works fine even if I load “ivi-input-controller.so” with other
>>>>>> applications. So I suspect some modification are required to ”imxeglvivsink”
>>>>>> [2] or “wayland-ivi-extension/weston”.
>>>>>>
>>>>>> Do you know what might be going wrong? Could anyone here give some
>>>>>> suggestions/ideas to tryout and fix this?
>>>>>>
>>>>>> Also “LayerManagerControl get surface 90 acceptance” doesn’t seem to
>>>>>> work for me. Any inputs for this?
>>>>>>
>>>>>> I have tried modifying “gst_imx_egl_viv_sink_egl_platform_mainloop”
>>>>>> function in various ways but no luck and I think implementation is correct (as
>>>>>> it works well without ivi-input-controller)
>>>>>>
>>>>>> Following is the platform setup and weston configuration.
>>>>>>
>>>>>> i.MX6 Duallite
>>>>>> Linux 3.14.28
>>>>>> Weston 1.8.0 with (ivi-shell.so with fbdev backend and gal2d renderer)
>>>>>> Wayland-ivi-extension 1.4.0 (using ivi-controller.so, ivi-input-controller.so
>>>>>> gstreamer-imx plugin QTwayland 5.4.2/Qt 5.4.2
>>>>>>
>>>>>> Weston.ini contains:
>>>>>>
>>>>>> [core]
>>>>>> shell=ivi-shell.so
>>>>>>
>>>>>> [ivi-shell]
>>>>>> ivi-module=ivi-controller.so,ivi-input-controller.so
>>>>>> ivi-shell-user-interface=/usr/lib/weston/weston-ivi-shell-user-interface
>>>>>>
>>>>>>
>>>>>> [1] https://github.com/Freescale/gstreamer-imx/tree/master/src/eglvivsink
>>>>>> [2]See attached modified file “egl_platform_wayland.c” from imxeglvivsink
>>>>>> [3]
>>>>>> http://wiki.projects.genivi.org/index.php/Getting_Started_with_new_Input
>>>>>> _Handling_APIs
>>>>>>
>>>>>>
>>>>>>
>>>>>> Thanks & Regards,
>>>>>> Vikash


More information about the wayland-devel mailing list