<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jul 8, 2013 at 6:10 AM, Rob Bradford <span dir="ltr"><<a href="mailto:robert.bradford@intel.com" target="_blank">robert.bradford@intel.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">*bump*<br>
<br>
This is a fix for:<br>
<a href="https://bugs.freedesktop.org/show_bug.cgi?id=65726&list_id=320167" target="_blank">https://bugs.freedesktop.org/show_bug.cgi?id=65726&list_id=320167</a><br>
<br>
Although it might be much better if we could emit the event<br>
(especially the leave) before we destroy the surface - that being said<br>
the destruction of the object will also result in the proxy being<br>
removed from the map and so when the event is received the callback<br>
will still have a NULL pointer.<br></blockquote><div><br></div><div>That's exactly what weston *was* doing.  However, thanks to the destroyed proxies, the clients were getting NULL anyway.  We could to go through a bunch of trouble to keep the resource valid and call wl_pointer.leave on a valid resource.  However, that's a lot more work than I thought it was worth for no change client-side.<br>
<br>The other option here is to specify that the client does not get the leave event if the surface is destroyed.  In either case, it needs to be specified.<br></div><div>--Jason<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<br>
Rob<br>
<div><div class="h5"><br>
On 17 June 2013 23:56, Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>> wrote:<br>
> The current specified behavior does not allow a null surface in either of<br>
> these events.  However, if the client calls wl_surface.destroy while the<br>
> surface has focus then the leave handler will get a null surface anyway<br>
> because the proxy corresponding to the wl_surface no longer exists.  This<br>
> change makes this edge-case explicit and allows the server to avoid sending<br>
> an event with an argument it knows the client has destroyed.<br>
><br>
> Signed-off-by: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>><br>
> ---<br>
>  protocol/wayland.xml | 10 ++++++----<br>
>  1 file changed, 6 insertions(+), 4 deletions(-)<br>
><br>
> diff --git a/protocol/wayland.xml b/protocol/wayland.xml<br>
> index 3d4ec9b..faa284e 100644<br>
> --- a/protocol/wayland.xml<br>
> +++ b/protocol/wayland.xml<br>
> @@ -1313,13 +1313,14 @@<br>
>      <event name="leave"><br>
>        <description summary="leave event"><br>
>         Notification that this seat's pointer is no longer focused on<br>
> -       a certain surface.<br>
> +       a certain surface.  The surface parameter may be null if the<br>
> +       surface has been destroyed.<br>
><br>
>         The leave notification is sent before the enter notification<br>
>         for the new focus.<br>
>        </description><br>
>        <arg name="serial" type="uint"/><br>
> -      <arg name="surface" type="object" interface="wl_surface"/><br>
> +      <arg name="surface" type="object" interface="wl_surface" allow-null="true"/><br>
>      </event><br>
><br>
>      <event name="motion"><br>
> @@ -1430,13 +1431,14 @@<br>
>      <event name="leave"><br>
>        <description summary="leave event"><br>
>         Notification that this seat's keyboard focus is no longer on<br>
> -       a certain surface.<br>
> +       a certain surface.  The surface parameter may be null if the<br>
> +       surface has been destroyed.<br>
><br>
>         The leave notification is sent before the enter notification<br>
>         for the new focus.<br>
>        </description><br>
>        <arg name="serial" type="uint"/><br>
> -      <arg name="surface" type="object" interface="wl_surface"/><br>
> +      <arg name="surface" type="object" interface="wl_surface" allow-null="true"/><br>
>      </event><br>
><br>
>      <enum name="key_state"><br>
> --<br>
> 1.8.1.4<br>
><br>
</div></div>> _______________________________________________<br>
> wayland-devel mailing list<br>
> <a href="mailto:wayland-devel@lists.freedesktop.org">wayland-devel@lists.freedesktop.org</a><br>
> <a href="http://lists.freedesktop.org/mailman/listinfo/wayland-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/wayland-devel</a><br>
_______________________________________________<br>
wayland-devel mailing list<br>
<a href="mailto:wayland-devel@lists.freedesktop.org">wayland-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/wayland-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/wayland-devel</a><br>
</blockquote></div><br></div></div>