On 10/31/2016 11:08 AM, Mike Blumenkrantz wrote:
> That seems wrong; the surface creation callback in the compositor creates a
> client for all surfaces unconditionally. Are you sure that setting the
> window type doesn't block some expected client-side functionality?
>

Ok, so the only thing being blocked on the client-side is the creation 
of the xdg or wl_shell surface....which should not make a difference. 
I'll dig into why the compositor is not creating a client for this 
surface....

> On Mon, Oct 31, 2016 at 11:02 AM Christopher Michael <[email protected]>
> wrote:
>
>> 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;
>>>>
>>>> --
>>>>
>>>>
>>>>


------------------------------------------------------------------------------
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today. http://sdm.link/xeonphi
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to