compositor: add destructors to shell plugins
Add a new wlsc_shell API function for destroying the shell plugin object. Helps to reduce Valgrind reports. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
This commit is contained in:
parent
f258a310bf
commit
3c64723c9f
|
@ -2172,6 +2172,8 @@ int main(int argc, char *argv[])
|
||||||
if (xserver)
|
if (xserver)
|
||||||
wlsc_xserver_destroy(ec);
|
wlsc_xserver_destroy(ec);
|
||||||
|
|
||||||
|
ec->shell->destroy(ec->shell);
|
||||||
|
|
||||||
if (ec->has_bind_display)
|
if (ec->has_bind_display)
|
||||||
ec->unbind_display(ec->display, display);
|
ec->unbind_display(ec->display, display);
|
||||||
|
|
||||||
|
|
|
@ -161,6 +161,7 @@ struct wlsc_shell {
|
||||||
void (*configure)(struct wlsc_shell *shell,
|
void (*configure)(struct wlsc_shell *shell,
|
||||||
struct wlsc_surface *surface,
|
struct wlsc_surface *surface,
|
||||||
int32_t x, int32_t y, int32_t width, int32_t height);
|
int32_t x, int32_t y, int32_t width, int32_t height);
|
||||||
|
void (*destroy)(struct wlsc_shell *shell);
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
|
|
|
@ -58,7 +58,7 @@ struct wl_shell {
|
||||||
struct wl_list panels;
|
struct wl_list panels;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
const char *path;
|
char *path;
|
||||||
int duration;
|
int duration;
|
||||||
struct wl_resource *binding;
|
struct wl_resource *binding;
|
||||||
struct wl_list surfaces;
|
struct wl_list surfaces;
|
||||||
|
@ -123,7 +123,6 @@ shell_configuration(struct wl_shell *shell)
|
||||||
shell->screensaver.duration = duration;
|
shell->screensaver.duration = duration;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
/* FIXME: free(shell->screensaver.path) on plugin fini */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1234,6 +1233,15 @@ bind_screensaver(struct wl_client *client,
|
||||||
wl_resource_destroy(resource, 0);
|
wl_resource_destroy(resource, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
shell_destroy(struct wlsc_shell *base)
|
||||||
|
{
|
||||||
|
struct wl_shell *shell = container_of(base, struct wl_shell, shell);
|
||||||
|
|
||||||
|
free(shell->screensaver.path);
|
||||||
|
free(shell);
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
shell_init(struct wlsc_compositor *ec);
|
shell_init(struct wlsc_compositor *ec);
|
||||||
|
|
||||||
|
@ -1252,6 +1260,7 @@ shell_init(struct wlsc_compositor *ec)
|
||||||
shell->shell.unlock = unlock;
|
shell->shell.unlock = unlock;
|
||||||
shell->shell.map = map;
|
shell->shell.map = map;
|
||||||
shell->shell.configure = configure;
|
shell->shell.configure = configure;
|
||||||
|
shell->shell.destroy = shell_destroy;
|
||||||
|
|
||||||
wl_list_init(&shell->hidden_surface_list);
|
wl_list_init(&shell->hidden_surface_list);
|
||||||
wl_list_init(&shell->backgrounds);
|
wl_list_init(&shell->backgrounds);
|
||||||
|
|
|
@ -511,6 +511,16 @@ bind_shell(struct wl_client *client, void *data, uint32_t version, uint32_t id)
|
||||||
wl_client_add_resource(client, &shell->resource);
|
wl_client_add_resource(client, &shell->resource);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
tablet_shell_destroy(struct wlsc_shell *base)
|
||||||
|
{
|
||||||
|
struct tablet_shell *shell =
|
||||||
|
container_of(base, struct tablet_shell, shell);
|
||||||
|
|
||||||
|
wl_event_source_remove(shell->long_press_source);
|
||||||
|
free(shell);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
shell_init(struct wlsc_compositor *compositor);
|
shell_init(struct wlsc_compositor *compositor);
|
||||||
|
|
||||||
|
@ -552,6 +562,7 @@ shell_init(struct wlsc_compositor *compositor)
|
||||||
shell->shell.unlock = tablet_shell_unlock;
|
shell->shell.unlock = tablet_shell_unlock;
|
||||||
shell->shell.map = tablet_shell_map;
|
shell->shell.map = tablet_shell_map;
|
||||||
shell->shell.configure = tablet_shell_configure;
|
shell->shell.configure = tablet_shell_configure;
|
||||||
|
shell->shell.destroy = tablet_shell_destroy;
|
||||||
|
|
||||||
launch_ux_daemon(shell);
|
launch_ux_daemon(shell);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue