Not sure if related to the inline comment, but the pointer in / out logic seems buggy at the moment.
I've done a few tests here with two seats with mouses going over a few different evas objects and changing focus between them on click.
At some points when clicking on other object with a seat generates a pointer,out for the other seat.
I'll try to post a comprehensible log later.
The second parameter, "child". Does it should be child or eo_child?
child = efl_data_scope_get(eo_child, EFL_CANVAS_OBJECT_CLASS);
Otherwise you'll get the child of last interaction or eventually an unitialized child...
pointer,in and pointer,out logic seems to be wrong.
Please test the following scenario with the recently added evas_multiseat_events example (using two seats with pointers):
Only use one pointer, move over the blue rectangle, click (it'll be focused), and move out.
You see he sends a pointer,in for the second seats (not used) when you click over this object - line 192.
And when you move out, pointer,out will be emitted for both seats - line 212.
We're getting closer =D
But there is still an issue that you can easily reproduce using evas_multiseat_events example.
Using two seats with pointers:
1 - move the default seat pointer over the red rectangle
2 - move the extra seat pointer over the blue rectangle
3 - press the left button of default seat's mouse (don't release it yet)
4 - press the left button of extra seat's mouse
5 - release the button of extra seat (it'll print "pointer up" as expected)
6 - release the button of default seat
Error : it won't print "pointer up", actually _pointer_in_out_cb() won't even be called.