https://bugs.freedesktop.org/show_bug.cgi?id=73711

--- Comment #9 from Ander Conselvan de Oliveira <[email protected]> ---
(In reply to comment #8)
> Thanks, the trace confirms. You never set an empty input region, so it
> defaults to the whole surface. However, the mistake is not yours.
> 
> The protocol specification for wl_pointer.set_cursor says: "The current and
> pending input regions of the wl_surface are cleared, and
> wl_surface.set_input_region is ignored until the wl_surface is no longer
> used as the cursor."
> 
> Therefore this is indeed a Weston bug: it should never pick the cursor
> surface into focus.

Indeed the problem is in Weston. The input region of the cursor surface is set
to empty in pointer_cursor_surface_configure(). Since during the commit process
this function is called before the pending input region is made current, it
empties surface->pending.input instead of the pending input region instead of
surface->input.

But pointer_cursor_surface_configure() is also called from pointer_set_cursor()
in order to map the cursor even if there isn't a subsequent attach and commit
to the cursor surface. In that case, surface->input is never emptied, since the
configure function emptied only the pending input region and there wasn't a
commit that made it effective.

Here's the sequence of requests that triggers the problem. 

[3269633.625]  -> [email protected]_surface(new id wl_surface@11)
[3269633.685]  -> [email protected](wl_buffer@12, 0, 0)
[3269633.704]  -> [email protected](0, 0, 24, 24)
[3269633.730]  -> [email protected]()
[3269633.739]  -> [email protected]_cursor(0, wl_surface@11, 5, 0)

-- 
You are receiving this mail because:
You are the assignee for the bug.
_______________________________________________
Wayland-bugs mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-bugs

Reply via email to