On 10/31/2016 10:21 AM, Mike Blumenkrantz wrote:
> This seems like it should be a client bug and not something which requires
> compositor changes...
>

Not really. With EFL wayland clients now doing their own cursors, we end 
up creating a new Ecore_Wl2 window for the pointer surface to be drawn 
into. When that window is created, the "type" is set to 
ECORE_WL2_WINDOW_TYPE_NONE (as it's not a toplevel, or dnd, etc, etc).

When the surface type is set to none (which ANY efl app can make happen 
via API), then no wl_resource_user_data is set on that surface....which 
results in no e_client. Window type None and type Dnd also have no shell 
surface. I noticed that the wl_weekeyboard module also creates windows 
of type None.

One could argue that we maybe should be setting wl_resource_user_data 
regardless of window type....

> On Mon, Oct 31, 2016 at 9:27 AM Christopher Michael <[email protected]>
> wrote:
>
>> devilhorns pushed a commit to branch master.
>>
>>
>> http://git.enlightenment.org/core/enlightenment.git/commit/?id=fbb17af2d6a9c2671d0c134f7413bfb068a0e37e
>>
>> commit fbb17af2d6a9c2671d0c134f7413bfb068a0e37e
>> Author: Chris Michael <[email protected]>
>> Date:   Mon Oct 31 09:25:51 2016 -0400
>>
>>     don't crash is surface resource has no e_client
>>
>>     wl_resource_get_user_data(surface_resource) could return NULL if the
>>     surface resource has no user data set. This happens with Ecore_Wl2
>>     Windows which are set to type 'None', so add check for valid e_client.
>>
>>     Signed-off-by: Chris Michael <[email protected]>
>> ---
>>  src/bin/e_comp_wl_input.c | 3 +++
>>  1 file changed, 3 insertions(+)
>>
>> diff --git a/src/bin/e_comp_wl_input.c b/src/bin/e_comp_wl_input.c
>> index 3a77da8..e396572 100644
>> --- a/src/bin/e_comp_wl_input.c
>> +++ b/src/bin/e_comp_wl_input.c
>> @@ -69,7 +69,10 @@ _e_comp_wl_input_pointer_cb_cursor_set(struct wl_client
>> *client, struct wl_resou
>>          e_pointer_object_set(e_comp->pointer, NULL, x, y);
>>          return;
>>       }
>> +
>>     ec = wl_resource_get_user_data(surface_resource);
>> +   if (!ec) return;
>> +
>>     if (!ec->re_manage)
>>       {
>>          ec->comp_data->cursor = ec->re_manage = 1;
>>
>> --
>>
>>
>>
> ------------------------------------------------------------------------------
> The Command Line: Reinvented for Modern Developers
> Did the resurgence of CLI tooling catch you by surprise?
> Reconnect with the command line and become more productive.
> Learn the new .NET and ASP.NET CLI. Get your free copy!
> http://sdm.link/telerik
> _______________________________________________
> enlightenment-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>


------------------------------------------------------------------------------
The Command Line: Reinvented for Modern Developers
Did the resurgence of CLI tooling catch you by surprise?
Reconnect with the command line and become more productive. 
Learn the new .NET and ASP.NET CLI. Get your free copy!
http://sdm.link/telerik
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to