input: Empty the current input region when configuring pointer surfaces
authorAnder Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
Fri, 31 Jan 2014 14:07:51 +0000 (16:07 +0200)
committerKristian Høgsberg <krh@bitplanet.net>
Sat, 1 Feb 2014 09:12:24 +0000 (01:12 -0800)
commit23900f70e57277805db652316b76d18b2d59281c
tree723dc00355e3a1621e4271c950371874c150be5c
parentcd31275f28b0a04d2ec5426dc81e875197b47e52
input: Empty the current input region when configuring pointer surfaces

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 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.

Fix this by emptying both pending and current input regions. The latter
shouldn't cause problems since the surface can't have a role prior to
being assigned the cursor role, so it shouldn't be mapped in the first
place.

Also change toytoolkit so that it triggers the bug.

https://bugs.freedesktop.org/show_bug.cgi?id=73711
clients/window.c
src/input.c