[PATCH 1/2] server: add wl_input_device_fini()
Kristian Høgsberg
krh at bitplanet.net
Tue Jan 3 08:26:54 PST 2012
On Tue, Jan 3, 2012 at 9:32 AM, Pekka Paalanen <ppaalanen at gmail.com> wrote:
> Add a clean-up function for destroying all objects created in
> wl_input_device_init(). Can be used to fix memory leaks reported by
> Valgrind in the demos.
>
> The init function was also missing an explicit initialisation of the
> 'keys' array. Add the explicit array init, although it is redundant with
> the zeroing of the whole struct.
Looks good, but I edited it a bit to rename the function to
wl_input_device_release. We don't have a lot of precedent for this,
most cases are create/destroy, but in case of initializing/releasing
resources for a base class I'd like to go with init/release.
Kristian
> Signed-off-by: Pekka Paalanen <ppaalanen at gmail.com>
> ---
> src/wayland-server.c | 15 +++++++++++++++
> src/wayland-server.h | 3 +++
> 2 files changed, 18 insertions(+), 0 deletions(-)
>
> diff --git a/src/wayland-server.c b/src/wayland-server.c
> index 89e8a81..0b81706 100644
> --- a/src/wayland-server.c
> +++ b/src/wayland-server.c
> @@ -411,6 +411,7 @@ wl_input_device_init(struct wl_input_device *device)
> {
> memset(device, 0, sizeof *device);
> wl_list_init(&device->resource_list);
> + wl_array_init(&device->keys);
> device->pointer_focus_listener.func = lose_pointer_focus;
> device->keyboard_focus_listener.func = lose_keyboard_focus;
>
> @@ -418,6 +419,20 @@ wl_input_device_init(struct wl_input_device *device)
> device->y = 100;
> }
>
> +WL_EXPORT void
> +wl_input_device_fini(struct wl_input_device *device)
> +{
> + if (device->keyboard_focus_resource)
> + wl_list_remove(&device->keyboard_focus_listener.link);
> +
> + if (device->pointer_focus_resource)
> + wl_list_remove(&device->pointer_focus_listener.link);
> +
> + /* XXX: What about device->resource_list? */
> +
> + wl_array_release(&device->keys);
> +}
> +
> static struct wl_resource *
> find_resource_for_surface(struct wl_list *list, struct wl_surface *surface)
> {
> diff --git a/src/wayland-server.h b/src/wayland-server.h
> index 5176a09..f62c860 100644
> --- a/src/wayland-server.h
> +++ b/src/wayland-server.h
> @@ -223,6 +223,9 @@ void
> wl_input_device_init(struct wl_input_device *device);
>
> void
> +wl_input_device_fini(struct wl_input_device *device);
> +
> +void
> wl_input_device_set_pointer_focus(struct wl_input_device *device,
> struct wl_surface *surface,
> uint32_t time,
> --
> 1.7.3.4
>
More information about the wayland-devel
mailing list