I think you are right, that removes the race condition where the pointer exits before the client sends the lock. If the client wants to lock when the user hits a button always, it can just release on the leave event.

I suppose there still is a race if the user hits the lock-cursor button and then moves the mouse out so fast that it exits before the client sends the lock request. But this is a lot harder to hit that the quick enter+exit one.

Kristian Høgsberg wrote:
On Mon, Feb 25, 2013 at 9:48 PM, Bill Spitzak <[email protected]> wrote:
The pointer lock is a one-shot (ie on exit and enter the pointer is not
locked again), right?

It's intended as a persistent condition for the surface.  Whenever the
surface receive keyboard focus, the pointer lock is activated.  This
stays in effect until the wl_pointer object is destroyed.  It could
work as a one-shot thing too, but you can that behavior by manually
destroying the wl_pointer object when you get the leave event.
Alternatively you can implement the persistent behavior with the
one-shot lock by always locking on wl_keyboard.enter.

Kristian

Kristian Høgsberg wrote:
The pointer_lock interface is modelled after the HTML5 pointer lock
extension:

+    <request name="lock_pointer" since="2">
+      <description summary="return pointer object">
+       The lock_pointer request lets the client disable pointer
+       motion and request relative motion events.
+
+       This request initializes the pointer lock and activates it in
+       case the surface is active.  If the surface isn't active when
+       the server receives the request, the compositor will activate
+       the pointer_lock when the surface is eventually activated.
_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to