On 15 June 2017 at 22:08, Mike Blumenkrantz <[email protected]>
wrote:

> I considered making this change, but I'm not sure it's viable to keep this
> unless we are agreeing to never send pointer devices with events; this
> change breaks all assumptions which could be made by current users of the
> device api since it will result in "random" devices being used if multiple
> pointers exist for a seat.
>

Indeed. And this brings us back to T5515.
For this specific change I could have first looked for the pointer and then
the seat. Maybe a seat could have a primary pointer, so that one would be
used if we don't have a specific pointer info. But this would still not be
a perfect solution. The problem is that the info about the original device
is lost when going from ecore_evas to evas and back to ecore_evas_buffer.
Honestly I'm not sure what we should do.



>
> On Thu, Jun 15, 2017 at 7:31 AM Jean-Philippe ANDRÉ <[email protected]>
> wrote:
>
> > jpeg pushed a commit to branch master.
> >
> >
> > http://git.enlightenment.org/core/efl.git/commit/?id=
> 1af62db8f8e80b58864320cc47c53e0d19bd73d2
> >
> > commit 1af62db8f8e80b58864320cc47c53e0d19bd73d2
> > Author: Jean-Philippe Andre <[email protected]>
> > Date:   Thu Jun 15 20:26:54 2017 +0900
> >
> >     evas: Fix mouse events in inlined windows
> >
> >     There is a mismatch between seat & pointer.
> >     See @zmike's comments in T5515. Having both seat and pointer
> >     devices as different devices leads to these kinds of issues.
> >     Really annoying.
> >
> >     Ref T5515
> > ---
> >  src/lib/evas/canvas/evas_main.c | 7 ++++---
> >  1 file changed, 4 insertions(+), 3 deletions(-)
> >
> > diff --git a/src/lib/evas/canvas/evas_main.c
> > b/src/lib/evas/canvas/evas_main.c
> > index ea3e5daa4e..1e3452e892 100644
> > --- a/src/lib/evas/canvas/evas_main.c
> > +++ b/src/lib/evas/canvas/evas_main.c
> > @@ -1132,13 +1132,14 @@ _evas_pointer_data_by_device_
> get(Evas_Public_Data
> > *edata, Efl_Input_Device *poin
> >  {
> >     Eina_List *l;
> >     Evas_Pointer_Data *pdata;
> > +   Efl_Input_Device *seat = NULL;
> >
> > -   if (!pointer)
> > -     pointer = edata->default_mouse;
> > +   if (pointer) seat = efl_input_device_seat_get(pointer);
> > +   if (!seat) seat = edata->default_seat;
> >
> >     EINA_LIST_FOREACH(edata->pointers, l, pdata)
> >       {
> > -        if (pdata->pointer == pointer)
> > +        if (pdata->seat->seat == seat)
> >            return pdata;
> >       }
> >     return NULL;
> >
> > --
> >
> >
> >
> ------------------------------------------------------------
> ------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> enlightenment-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>



-- 
Jean-Philippe André
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to